Кнопка реверса

Serega161610
Offline
Зарегистрирован: 28.09.2019

Нужно сделать так чтобы при нажатии кнопки диоды загорелись бегущий сегмент из трех диодов (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);
}
  

 

nik182
Offline
Зарегистрирован: 04.05.2015

Заведите переменную которая будет знать какой цикл делать прямой или обатный и в конце цикла присвивайте этой переменной противоположное значение. Вставте в 21 строку оператор if - else и проверяйте переменную. В зависимости от её значения будет выполняться прямой или обратной бег.

Гриша
Offline
Зарегистрирован: 27.04.2014

1) строки с 21 по 48 вообще никак не относятся к кнопке и ни коем образом не управляются 

2) имея такое кол-во "delay(1000);" :))))))) кнопки проверяются не чаще 1раз в 11 секунд!!! - даже если ваш код заработает - вам придется держать кнопку около 11 сек для смены направления - подумайте об этом т.е. потребуется еще одна переменная и научится использовать функцию - описание там, скорее для тех кто уже умеет ей пользоваться...