Цикл таймера Arduino

#c #loops #arduino #counter #arduino-ide

Вопрос:

Я пишу некоторый код для своего Arduino, который отображает «Таймер(отсчет от 1-100)», а затем отображает «Прерывания: b»( b действует как заполнитель для того, сколько раз он зацикливался)Он считает до 100, затем выводит мое утверждение else, но оно не зацикливается, и мое значение b просто продолжает увеличиваться. Где я ошибаюсь?

 void loop() {   int a = 0;  int b = 0;   if(a != 100){    lcd.setCursor(0,0);  lcd.print("Timer");  lcd.print("");  a  ;  lcd.print(a);   delay(10);  lcd.clear();    }  else{  //  b  ;  lcd.print("Interrupt");    lcd.print(b);  delay(1000);  lcd.clear();    //   //   }  }      

Комментарии:

1. Я исправил свой ответ, теперь он, похоже, работает так, как задумано

Ответ №1:

Вы определяете a и b в начале loop() , функция цикла вызывается каждый раз, поэтому ваши a и b очищаются каждый раз. вероятно, вам придется затем определить функцию выхода из цикла.
Правка: В моем примере я объявил переменные внутри setup() функции, как сказал парень, который прокомментировал мой ответ, он объявляет переменную только в области действия этой функции, на самом деле вам нужно объявить ее вне любой функции.

 int a = 0; int b = 0; void loop() {  if(a != 100){  lcd.setCursor(0,0);  lcd.print("Timer");  lcd.print("");  a  ;  lcd.print(a);   delay(10);  lcd.clear();  }  else{  b  ;  lcd.print("Interrupt");  lcd.print(b);  delay(1000);  lcd.clear();  a=0;  } }  

Правка 2: На самом деле ваш код делает не то, что вы хотите. Он отсчитывает от 1 до 100 один раз, затем начинает увеличивать и печатать b . Вы должны очистить a переменную в вашем операторе else, чтобы она снова начала подсчет. Я протестировал код в Tinkercad, и теперь он, похоже, работает.
Код, используемый в Tinkercad:

 void setup() {  Serial.begin(9600); } int a = 0; int b = 0; void loop() {   if(a != 100){  a  ;  Serial.println(a);  delay(10);  }  else{  b  ;  Serial.println(b);  delay(1000);  a = 0;  } }   

Комментарии:

1. Теперь вы просто определяете переменные, к setup которым нельзя получить доступ из какой-либо другой функции.

2. Даже когда я объявляю их вне метода настройки и цикла, моя программа просто остается в операторе else и начинает увеличивать b без цикла?

3. Я отредактировал ответ, спасибо. Это должно все исправить.