Кнопка реверса
- Войдите на сайт для отправки комментариев
Сб, 28/09/2019 - 17:07
Нужно сделать так чтобы при нажатии кнопки диоды загорелись бегущий сегмент из трех диодов (1,12,123,234,345,456,567,678,78,8) при втором нажатии загорелись в обратном порядки (8,87,876,765,654,543,432,321,21,1) я написал скетч только на первое нажатие помагите со вторым
int i = 2;
int PIN_BUTTON = 10;
void setup()
{
Serial.begin(9600);
for(i=2; i<10; i++)
pinMode(i, OUTPUT);
}
void loop()
{
int buttonState = digitalRead(PIN_BUTTON);
Serial.println(buttonState);
if (!buttonState) {
delay(50);
return;
}
digitalWrite(2, 1);
delay(1000);
digitalWrite(3, 1);
delay(1000);
digitalWrite(4, 1);
delay(1000);
digitalWrite(5, 1);
digitalWrite(2, 0);
delay(1000);
digitalWrite(6, 1);
digitalWrite(3, 0);
delay(1000);
digitalWrite(7, 1);
digitalWrite(4, 0);
delay(1000);
digitalWrite(8, 1);
digitalWrite(5, 0);
delay(1000);
digitalWrite(9, 1);
digitalWrite(6, 0);
delay(1000);
digitalWrite(7, 0);
delay(1000);
digitalWrite(8, 0);
delay(1000);
digitalWrite(9, 0);
delay(1000);
}
Заведите переменную которая будет знать какой цикл делать прямой или обатный и в конце цикла присвивайте этой переменной противоположное значение. Вставте в 21 строку оператор if - else и проверяйте переменную. В зависимости от её значения будет выполняться прямой или обратной бег.
1) строки с 21 по 48 вообще никак не относятся к кнопке и ни коем образом не управляются
2) имея такое кол-во "delay(1000);" :))))))) кнопки проверяются не чаще 1раз в 11 секунд!!! - даже если ваш код заработает - вам придется держать кнопку около 11 сек для смены направления - подумайте об этом т.е. потребуется еще одна переменная и научится использовать функцию - описание там, скорее для тех кто уже умеет ей пользоваться...