#define DIR_LEFT 4 #define SPEED_LEFT 5 #define SPEED_RIGHT 6 #define DIR_RIGHT 7 int signalLED = 13; int encoderInt = 0; //AKA digital pin 2 volatile int revolutions = 0; int revLim = 20; void setup() { pinMode(SPEED_LEFT, OUTPUT); pinMode(SPEED_RIGHT, OUTPUT); pinMode(DIR_LEFT, OUTPUT); pinMode(DIR_RIGHT, OUTPUT); pinMode(signalLED, OUTPUT); Serial.begin(9600); attachInterrupt(encoderInt, revinc, RISING ); delay(5000); revolutions = 0; } void revinc() { revolutions += 1; digitalWrite(signalLED, revolutions > revLim); } void Motor(int pwm) { digitalWrite(DIR_LEFT, LOW); digitalWrite(DIR_RIGHT, LOW); analogWrite(SPEED_LEFT, pwm); analogWrite(SPEED_RIGHT,pwm); } void loop() { digitalWrite(signalLED, LOW); revolutions = 0; revLim = 5; delay(5000); Serial.print("R= "); Serial.println(revolutions, DEC); // за пять секунд нет 5-ти срабатываний digitalWrite(signalLED, LOW); revolutions = 0; revLim = 1000; Motor(255); delay(5000); Motor(0); Serial.print("RR= "); // за пять секунд более 1000 срабатываний Serial.println(revolutions, DEC); delay(5000); }