Установки значений таймера по кнопкам
- Войдите на сайт для отправки комментариев
Сб, 25/05/2019 - 17:25
Делаю таймер с установками значений по нажатию кнопок.
Нажата кнопка на 4 пине таймер принимает значение 20.
Нажата кнопка на 5 пине таймер принимает значение 30.
Если обе кнопки не нажаты таймер равен 40.
Сделал набросок кода с использованием GOTO (синтаксис не причёсан) но GOTO говорят дурной тон. Чувствую надо прерывания по кнопкам использовать. Но что то не получается. Подскажите как лучше это сделать?
#include <Rotary.h> #include <Wire.h> #include <LiquidCrystal.h> #define TIMER 40 int flag=0; // переменная для отслеживания перепада на пинах //проверка состояния пинов и присвоение значения TIMER if(digitalRead(4)==HIGH TIMER=20; if(digitalRead(5)==HIGH TIMER=30; BEGIN........ ------------- //код программы обработка энкодера вывод на LCD и.д. ------------- if(digitalRead(4)==HIGH&&flag==0)//если кнопка нажата // и перемення flag равна 0 , то ... { TIMER=20; flag=1; goto begin; //это нужно для того что бы с каждым нажатием кнопки //происходило только одно действие // плюс защита от "дребезга" 100% } if(digitalRead(5)==HIGH&&flag==0)//если кнопка нажата // и перемення flag равна 0 , то ... { TIMER=30; flag=1; goto begin; //это нужно для того что бы с каждым нажатием кнопки //происходило только одно действие // плюс защита от "дребезга" 100% }
1. Стока 06. Зачем TIMER обьявили макроопределением? У вас это переменная вообще то по идее.
2 Строки 20, 21 WTF??
3 "==HIGH&&flag==" WTF??
4. Строки 32, 37 куда переходим? Где begin???
5++.....
У вас это вообще компилируется? Это Arduino IDE код??
а если обе нажаты?