/** * (C) jarduino.ru 2019 * Изучение ардуино через опыты. * * Опыт №4.2 Светофор, продолжение * * Использование функций для минимизации повторяющихся фрагментов */ // Глобальные константы const int pinRedLed = 12; // красный подключен к порту 12 const int pinYellowLed = 9; // желтый подклчен к порту 9 const int pinGrenLed = 6; // зеленый подключен к порту 6 const int lightDelay = 5000; // продолжительность свечения зеленого и крассного const int blinkDelay = 500; // полупериод мигания const int yelloDelay = 1000; // полупериод мигания const int blinkTimes = 3; // число миганий const float delayMultiply = 0.1; // число миганий // настройка платы void setup() { // инициализировть цифровые порты светофора на вывод: pinMode(pinRedLed, OUTPUT); pinMode(pinYellowLed, OUTPUT); pinMode(pinGrenLed, OUTPUT); } // Функция зажигает заданный светодиод на заданное время и гасит его. void lightUp(const int pinLed, const int nDelay) { digitalWrite(pinLed, HIGH); //// turn on green LED delay(nDelay); digitalWrite(pinLed, LOW); // turn off green LED } // Функция мигает светодиодом с заданным полупериодом заданное число раз void blink( const int pinLed, // пин светодиода const int nDelay, // полупериод мигания const int nTimes // число миганий ) { for (int i = 0; i < nTimes; ++i) // blinks for 3 times { delay(nDelay); lightUp(pinLed, nDelay); } } // Главный цикл программы void loop() { // Зажечь зеленый lightUp(pinGrenLed, lightDelay * delayMultiply); // Помигать зеленым blink(pinGrenLed, blinkDelay * delayMultiply, blinkTimes); // Ненадолго зажечь желтый lightUp(pinYellowLed, yelloDelay * delayMultiply); // Зажечь красный lightUp(pinRedLed, lightDelay * delayMultiply); }