Как подключить кнопку к циклу (мигание светофора )

ROMBBB
Offline
Зарегистрирован: 08.06.2021
int led_red = 2;
int led_yellow = 3;
int led_green = 4;
int keyPin = 5;
int tekButton = LOW;
int prevButton = LOW;
boolean ledOn = false;
boolean led_on = HIGH;
 
void setup()
{
  pinMode(keyPin, INPUT);
  pinMode(led_red, OUTPUT);
  pinMode(led_yellow, OUTPUT);
  pinMode(led_green, OUTPUT);
}
 
 
void loop()
{
 
  if(tekButton == HIGH && prevButton ==LOW)
{
  digitalWrite(led_red, HIGH);
  delay(3000); 
  for (int i=0;i<6;i++)
  {
    led_on = !led_on;
    digitalWrite(led_red, led_on);
    delay(700);
    }
  
  digitalWrite(led_yellow, HIGH);
  delay(1600);
  
  digitalWrite(led_red, LOW);
  digitalWrite(led_yellow, LOW);
  digitalWrite(led_green, HIGH);
  delay(2000); 
  for (int i=0;i<6;i++)
  {
    led_on = !led_on;
    digitalWrite(led_green, led_on);
    delay(700);
    }
    
  digitalWrite(led_green, LOW);
  digitalWrite(led_yellow, HIGH);
  delay(700);
  
  digitalWrite(led_yellow, LOW);
 
 
}
}
ROMBBB
Offline
Зарегистрирован: 08.06.2021

Точнее есть включение на кнопку, а вот как сделать выключение с кнопки не знаю (цикл повторяется один раз) 

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020
ROMBBB
Offline
Зарегистрирован: 08.06.2021
int led_red = 2;
int led_yellow = 3;
int led_green = 4;
int keyPin = 5;
int tekButton = LOW;
int prevButton = LOW;
boolean ledOn = false;
boolean led_on = HIGH;



void setup()
{
  pinMode(keyPin, INPUT);
  pinMode(led_red, OUTPUT);
  pinMode(led_yellow, OUTPUT);
  pinMode(led_green, OUTPUT);
}


void loop()
{

  if(tekButton == HIGH && prevButton ==LOW)
{
  digitalWrite(led_red, HIGH);
  delay(3000); 
  for (int i=0;i<6;i++)
  {
    led_on = !led_on;
    digitalWrite(led_red, led_on);
    delay(700);
    }
  
  digitalWrite(led_yellow, HIGH);
  delay(1600);
  
  digitalWrite(led_red, LOW);
  digitalWrite(led_yellow, LOW);
  digitalWrite(led_green, HIGH);
  delay(2000); 
  for (int i=0;i<6;i++)
  {
    led_on = !led_on;
    digitalWrite(led_green, led_on);
    delay(700);
    }
    
  digitalWrite(led_green, LOW);
  digitalWrite(led_yellow, HIGH);
  delay(700);
  
  digitalWrite(led_yellow, LOW);

 
}
}

 

b707
Offline
Зарегистрирован: 26.05.2017

ROMBBB пишет:

Точнее есть включение на кнопку, а вот как сделать выключение с кнопки не знаю (цикл повторяется один раз) 

надо переписать код. полностью избавившись от операторов delay()

ROMBBB
Offline
Зарегистрирован: 08.06.2021

а как тогда сделать задержку без задержки (принцип работы светофора  заключается в том что один  диод включается время проходит он мигает , а потом переключаются на следующий сигнал светофора)

b707
Offline
Зарегистрирован: 26.05.2017

ROMBBB пишет:

а как тогда сделать задержку без задержки

на миллис

пример "блинк без delay()" растиражирован в сотни местах в инете

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А уж если в гуголе набрать "Arduino+светофор", то вапще будет бинго.