Здравствуйте! Столкнулся со следующей ситуацией. На базу трёхколёсной тележки установил Arduino UNO и шилд L298P, подключил два мотора и на один из них закрепил энкодер.
По условием задачи тележка проезжает на расстояние, равное 40 переключением энкодера и возвращается обратно.
Энкодер подключил к пину Arduino с прерыванием и для подсчёта создал счетчик.
Каждое направление движения описывается ограниченным циклом, после окончания которых переменная со счетчиком обнуляется.
Программа написана в блочной среде ardublock и тестировалась в ide
В реальности переменная обнуляется только один раз, подскажите в чем может быть проблема? Спасибо
int R = 0;
void interrupt_3(){
R = R + 1;
Serial.println(R);
}
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(3),interrupt_3,RISING);
}
void loop() {
while (R <= 40){
pinMode(12,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(12,1);
analogWrite(10,255);
pinMode(13,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(13,1);
analogWrite(11,255);
}
pinMode(12,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(12,1);
analogWrite(10,0);
pinMode(13,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(13,1);
analogWrite(11,0);
R = 0;
delay(2000);
while (R <= 40){
pinMode(12,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(12,0);
analogWrite(10,255);
pinMode(13,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(13,0);
analogWrite(11,255);
}
pinMode(12,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(12,1);
analogWrite(10,0);
pinMode(13,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(13,1);
analogWrite(11,0);
R = 0;
delay(2000);
}
Вы ошиблись форумом - здесь ардублоком никто не пользуется.
Что же касается текста, совершенно непонятно, зачем Вы непрерывно бомбардируете контроллер одним и тем же набором команд, когда достаточно было послать их единственный раз.
Ну вот я вижу, что вы строчки 47 и 51 бездумно скопировали с верхней части программы, по логике там направление должно быть обратное.
Но это не поможет, проблема не в этом.
Этой проблемы я не вижу, написано, что “В реальности переменная обнуляется только один раз”, а по картинке счётчик растёт и всё. А как там его крутят - я хз. Может двигателем.