Первая написанная программа для Arduino

Первая написанная программа для Arduino

Контроллеры Arduino>>

Светофор на Arduino

Для начала опишем, что такое работа светофора на понятном нам русском языке, сформулируем алгоритм его работы. Когда мы говорим «светофор работает» нам понятно, что имеется в виду. Но для того, чтобы контроллер мог выполнить программу, каждое действие нужно описать предельно конкретно.

Сначала можно привести пример, близкий к работе светофора из жизни. Что такое перейти дорогу? Мы все знаем с детства. Нас учили смотреть в разные стороны и так далее, но как это описать подробно? Для начала мы подходим к переходу, затем мы смотрим налево. Мы проверяем, существуют ли движущиеся машины слева, и если их не существует, двигаемся до середины дороги. После этого мы смотрим направо и проверяем, есть ли движущиеся машины справа. В случае их отсутствия переходим дорогу до конца, в случае наличия – стоим и ждем, пока они закончатся. И только тогда завершаем переход дороги. На самом деле эти действия можно описать еще более детально, вплоть до переставления ног, поворота головы и так далее.

Похожим образом мы можем описать, что из себя представляет работа светофора. В чем она заключается? Поочередно включаются сигналы разного цвета. Включается красный сигнал, затем, на протяжении какого-то времени в работе светофора ничего не меняется. Затем, одновременно с красным сигналом, включается желтый сигнал, и они светятся вместе на протяжении секунды. После секундной задержки оба сигнала выключаются и загорается зеленый сигнал. Затем проходит еще какое-то время, предназначенное для зеленого сигнала, он выключается, включается вновь, выключается, ну то есть мигает. После того, как зеленый помигал, на секунду включается желтый сигнал, и выключившись, передает место красному. Затем цикл повторяется.

Вы уже знаете, что включение того или иного сигнала заключается в подаче напряжения на тот или иной контакт. Я надеюсь, что вы уже собрали модель светофора и подключили ее к Arduino, и теперь, на самом деле, у вас есть все, для того, чтобы написать программу для полноценной работы светофора. Вы можете сейчас поставить меня на паузу, посмотреть в описанный алгоритм, посмотреть в пример, который мы разбирали в Linked и составить код самостоятельно. Только не забывайте, что помимо непосредственно работы светофора, есть еще подготовительная фаза, когда мы настраиваем три порта, к которому подключены светодиоды на выход.

Посмотрите, у нас получилась такая схема, где мы выполняем, своего рода, перевод. Сначала формулируем в нечто алгоритм на русском языке, затем переводим его на язык программирования. Дальнейшим переводом займется компилятор, создаст машинный код, который понимает контроллер. Контроллер, в свою очередь, превратит команды в определенные сигнал на определенных портах, и мы увидим работу устройства своими глазами, когда эти сигналы дойдут до светодиодов исполнительных устройств. Теперь мы можем загрузить получившийся код и посмотреть, как это работает. Давайте посмотрим какой код получился у меня. Я надеюсь, что у вас примерно такой же.

Вначале я определил 3 контакта как выходы, те три контакта, куда у меня подключены светодиоды. Затем в лупе я начал включать и выключать напряжение на этих контактах. Сначала на пине, к которому подключен красный светодиод. Затем сделал задержку, пока красный горит. Затем вместе с ним включил желтый светодиод. Они некоторое время – секунду – горели вместе. А затем я выключил напряжение на обоих контактах.

Хочу особенно обратить ваше внимание на то, что контроллер не обладает никаким искусственным интеллектом, и не будет ничего делать до тех пор, пока вы явно ему не скажете сделать то или иное действие. Это особенно хорошо видно в этом фрагменте. Мы включили красный светодиод, а затем вместе с ним включили желтый, и красный при этом не погас, потому что соответствующей команды не поступало. Она поступит позже, после секунды совместного свечения красного и желтого. Также обратите внимание на то, что я говорю чуть упрощенно: мы включили красный светодиод, мы включили желтый светодиод.

На самом деле контроллер не имеет ни малейшего понятия о том, что подключено к его пинам. Он всего навсего включает или выключает напряжение на заданном контакте.

Теперь посмотрим далее. После выключения красного и желтого, я включаю зеленый. Жду 3 секунды и выключаю его. После чего трижды повторяю эти же действия, только с маленькой задержкой. Это фаза мигания зеленого сигнала. Затем осталось включить желтый, что я и делаю. А затем выключаю его. После этого цикл завершается и начинается снова с включения красного сигнала. Теперь мы, наконец, можем загрузить код для нашего первого устройства, только предварительно не забудем убедиться в том, что выбран порт и выбрана правильная плата.

После этого я загружаю, в процессе мы не встречаем никаких ошибок, Пожалуйста: красный, красный, желтый, зеленый, зеленый мигает, желтый и красный. И никакого ручного управления! Ура, мы сделали первое устройство!