Установки значений таймера по кнопкам
- Войдите на сайт для отправки комментариев
Сб, 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 код??
а если обе нажаты?