#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. Я отредактировал ответ, спасибо. Это должно все исправить.