Я новичок в arduino / robotics и написал некоторый простой код, который должен использовать прерывания для измерения тиков энкодера на колесах и останавливаться, как только он достигнет значения (заданного расстояния), однако, похоже, он не увеличивает значение энкодераи, таким образом, колеса никогда не останавливаются.Может ли кто-нибудь помочь мне с этим? код:
const int pwm1 = 9 ; //initializing pin 2 as pwm
const int in1 = 8 ;
const int in2 = 12 ;
const int pwm2 = 10 ; //initializing pin 2 as pwm
const int in3 = 11 ;
const int in4 = 13 ;
const int e1 = 2 ;
const int e2 = 3 ;
const int tickGoal = 90;
volatile int encoderValue= 0;
void isrFunction() {
encoderValue++ ;
}
void setup() {
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(pwm1,OUTPUT);
pinMode(pwm2,OUTPUT);
pinMode(e1, INPUT);
pinMode(e2, INPUT);
attachInterrupt(digitalPinToInterrupt(e1), isrFunction, CHANGE);
}
void loop() {
if (encoderValue < tickGoal) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(pwm1, 255);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(pwm2, 255);
} else {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
}