Работа двух функций в одной . Как реализовать ?

Нет ответов
Boom_nick
Offline
Зарегистрирован: 20.02.2015
int startALL = 12;          // Старт (реле)секундомера с зеленым.
  int relayGap = 11;          // Реле круга
     //Светофор
  int RedLed = 10;            // красный светодиод
  int GrnLed = 9;             // зеленый светодиод
  int Y3Led = 8;              // желтый светодиод третий такт
  int Y2Led = 7;              // желтый светодиод второй такт
  int y1Led = 6;              // желтый светодиод первый такт
     //Датчики
  int ikFL = 5;               // Датчик фальстарта
  int ikGap = 4;              // Датчик круга
     //Кнопки
  int startButon = 3;         // кнопка старта
  int resetALL = 2;           // кнопка сброса 
  byte count = 1;             // Число кругов
  boolean cancel = true;
  
  // Переменные
  int start = 0;                
  int Fs=0;
  int val = 0;  // переменная для хранения состояния кнопки круга
  //Время
  int t = 160;   //основные        
  int Gt = 3000;   // зеленый       
  
      void setup()
{
    //  Выход
  pinMode(y1Led, OUTPUT);   
  pinMode(Y2Led, OUTPUT);
  pinMode(Y3Led, OUTPUT);
  pinMode(GrnLed, OUTPUT);
  pinMode(RedLed, OUTPUT);
  pinMode(startALL, OUTPUT);
  pinMode(relayGap, OUTPUT);
      // Вход
  pinMode(startButon, INPUT);       
  pinMode(ikFL,INPUT);  
  pinMode(ikGap, INPUT);  
  pinMode(resetALL, INPUT);
}  
     boolean falstart ()
{
  Fs = digitalRead(ikGap); // считываем значения с входа кнопки
  if (Fs == HIGH)  // проверяем нажата ли кнопка
  {    
    // Действие
  digitalWrite(RedLed, HIGH);
  digitalWrite(y1Led, LOW);
  digitalWrite(Y2Led,LOW);
  digitalWrite(Y3Led, LOW);  
  digitalWrite(GrnLed, LOW);
  delay(3000); 
  digitalWrite(RedLed, LOW);
  return true;

}else return false;
}
                   void kr()

{
  if (digitalRead(resetALL))
    cancel = true;  
  if (digitalRead(ikGap) && cancel)
  {
    if(count >= 1)
    {
      digitalWrite(relayGap,HIGH ); // включение датчика круга
      delay(30);
      digitalWrite(relayGap,LOW); // выключение датчика круга
      delay(3000);
      if(--count==0)
      {
        cancel = false;
        count = 1; // Число кругов
      }
    }
  }
}
                    void loop()
{
  start = digitalRead(startButon); // считываем значения с входа кнопки
  if (start == HIGH)  // проверяем нажата ли кнопка
{
  digitalWrite(y1Led, HIGH); // включение светодиода
    
   // Включаем выключаем 1й желтый светодиод.
  if(falstart()) return;
  digitalWrite(y1Led, HIGH);
 if(falstart()) return; 
  delay(t); 
 if(falstart()) return;
  digitalWrite(y1Led, LOW);
  if(falstart()) return;
  delay(t);
  
  // Включаем выключаем 2й желтый светодиод
  if(falstart()) return;
  digitalWrite(Y2Led, HIGH);
  if(falstart()) return; 
  delay(t);        
  if(falstart()) return; 
  digitalWrite(Y2Led, LOW);
  if(falstart()) return;
  delay(t);
  
  // Включаем выключаем 3й желтый светодиод
  if(falstart()) return;
  digitalWrite(Y3Led, HIGH);  
  if(falstart()) return;  
  delay(t);        
  if(falstart()) return;  
  digitalWrite(Y3Led, LOW);  
  if(falstart()) return;
  delay(t); 
  
  // Включаем выключаем зеленый светодиод 
  if(falstart()) return;
  digitalWrite(GrnLed, HIGH);
  digitalWrite(startALL,HIGH );
  delay(30);
  digitalWrite(startALL, LOW);
  digitalWrite(GrnLed, HIGH);
  delay(Gt);         
  digitalWrite(GrnLed, LOW); 
  delay(Gt);
}kr();{
}
}

Вот такой код , проблемка в том что не могу склееть digitalWrite(GrnLed, HIGH);  Вот надо мне

digitalWrite(relayGap,HIGH ); // включение датчика круга
      delay(30);
      digitalWrite(relayGap,LOW); // выключение датчика круга
      delay(3000);
    Что бы работало одновременно с функцией digitalWrite(GrnLed, HIGH);

и что бы эта функиця отработала всего один раз  и ждала сброса . 

Есть свободный датчик int ikFL = 5; 

Заранее благодарен .