Работа двух функций в одной . Как реализовать ?
- Войдите на сайт для отправки комментариев
Чт, 22/09/2016 - 16:23
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;
Заранее благодарен .