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