Проблема с условиями
- Войдите на сайт для отправки комментариев
Чт, 06/08/2015 - 14:49
Пишу код инкубатора для ATmega8(Arduino).
Возникла проблема, что при нажатии button2 условие начинает выполняться циклично, хотя кнопка уже отжата. Помогите решить. Вот код:
#include <LiquidCrystal.h> #define button1 8 #define button2 9 #define button3 10 uint8_t a = 0; // инициализация пинов LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print("Otl"); } void loop() { if (digitalRead(button2) == HIGH) { if (a > 2) { a = 0; delay(100); } else { a++; delay(100); } } switch (a) { case 0: //Общий показ lcd.setCursor(0, 1); lcd.print("0"); break; case 1: //Температура lcd.setCursor(0, 1); lcd.print("1"); break; case 2: //Влажность lcd.setCursor(0, 1); lcd.print("2"); break; /* case 3: ///Время переворота break; */ } }
Значение переменной а у Вас изменяется только если digitalRead(button2) == HIGH , если кнопка не нажата, то переменная а остается неизменной, оттого и цикличность.
Значение переменной а у Вас изменяется только если digitalRead(button2) == HIGH , если кнопка не нажата, то переменная а остается неизменной, оттого и цикличность.
можете пожалуйста кодом показать, как исправить
Например, скобку ("}") из 24 строки переместить сразу за 45 строкой.
Именно !
Хотя лучше было бы вникнуть... дело хозяйское.
Так там вникать особо и не во что. При нажатии увеличивается счётчик и в зависимости от счётчика выполняется действие. Конечно если нажать и держать, то будут проблемы, но для этого уже лучше использовать класс BUTTON от Клапауция999 и не париться.
Более того код абстрактный, ничего особенного не делает, задача озвучена вскользь, чего париться? ;)