Скетч. Эксперимент №4. Светофор. Скетч №1

/**
 * (C) jarduino.ru 2019
 * Изучение ардуино через опыты.
 *
 * Опыт №4 Светофор. Скетч №1
 * Независимое управление 3-мя светодиодами на примере работы светофора.
 */


// Глобальные константы
const int pinRedLed = 12; // красный подключен к порту 12
const int pinYellowLed = 9; // желтый подклчен к порту 9
const int pinGreenLed = 6; // зеленый подключен к порту 6

const int lightDelay = 2000; // продолжительность свечения зеленого и крассного
const int blinkDelay = 100; // полупериод мигания
const int blinkTimes = 3; // число миганий
const int delayMult = 1; // множитель, ускоряющий работу светофора в указанное здесь число раз

// настройка платы
void setup()
{
  // инициализировть цифровые порты светофора на вывод:
  pinMode(pinRedLed, OUTPUT);
  pinMode(pinYellowLed, OUTPUT);
  pinMode(pinGreenLed, OUTPUT);
}

// главный цикл программы
void loop()
{
  // сначала горит зеленый
  digitalWrite(pinGreenLed, HIGH);
  delay(lightDelay * delayMult);
  digitalWrite(pinGreenLed, LOW);

  // зеленый мигает и гаснет
  for (int i = 0; i < blinkTimes; ++i) // blinks for 3 times
  {
    delay(blinkDelay * delayMult);
    digitalWrite(pinGreenLed, HIGH);

    delay(blinkDelay * delayMult);
    digitalWrite(pinGreenLed, LOW);
  }

  // ненадолго зажигается желтый
  digitalWrite(pinYellowLed, HIGH);
  delay(200 * delayMult);
  digitalWrite(pinYellowLed, LOW);

  // зажигается красный
  digitalWrite(pinRedLed, HIGH);
  delay(lightDelay * delayMult);
  digitalWrite(pinRedLed, LOW);

  // красный мигает и гаснет
  for (int i = 0; i < blinkTimes; ++i) // blinks for 3 times
  {
    delay(blinkDelay * delayMult);
    digitalWrite(pinRedLed, HIGH);

    delay(blinkDelay * delayMult);
    digitalWrite(pinRedLed, LOW);
  }

  // ненадолго зажигается желтый
  digitalWrite(pinYellowLed, HIGH);
  delay(200 * delayMult);
  digitalWrite(pinYellowLed, LOW);
}

Добавить комментарий