Кнопка реверса
- Войдите на сайт для отправки комментариев
Сб, 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 сек для смены направления - подумайте об этом т.е. потребуется еще одна переменная и научится использовать функцию - описание там, скорее для тех кто уже умеет ей пользоваться...