int predkosc_poczatkowa = 100; // Im mniej tym szybsza prędkość
int wzmocnienie = 5; //Czułość enkodera im większa liczba, tym szybsza zmiana po obrocie
volatile int pozycja = 0;
int temp = 0;
void setup() {
pinMode(2, INPUT); //CLK ENKODER
pinMode(3, INPUT); //DT ENKODER
pinMode(8, INPUT); // CZUJNIK ZBLIŻENIOWY
pinMode(11, OUTPUT); // STEP STEROWNIK SILNIKA
attachInterrupt(digitalPinToInterrupt(2), obslugaEnkodera, CHANGE);
}
void loop() {
if (digitalRead(8) == HIGH) {
temp = predkosc_poczatkowa + (wzmocnienie * pozycja);
if(temp < 1){
temp = 1;
}
digitalWrite(11, LOW);
delay(temp);
digitalWrite(11, HIGH);
delay(temp);
}
}
void obslugaEnkodera() {
if (digitalRead(2) == digitalRead(3)) {
pozycja++;
} else
pozycja--;
}