|
|
|
|
Первая написанная программа для ArduinoКонтроллеры Arduino
Светофор на ArduinoДля начала опишем, что такое работа светофора на понятном нам русском языке, сформулируем алгоритм его работы. Когда мы говорим «светофор работает» нам понятно, что имеется в виду. Но для того, чтобы контроллер мог выполнить программу, каждое действие нужно описать предельно конкретно. Сначала можно привести пример, близкий к работе светофора из жизни. Что такое перейти дорогу? Мы все знаем с детства. Нас учили смотреть в разные стороны и так далее, но как это описать подробно? Для начала мы подходим к переходу, затем мы смотрим налево. Мы проверяем, существуют ли движущиеся машины слева, и если их не существует, двигаемся до середины дороги. После этого мы смотрим направо и проверяем, есть ли движущиеся машины справа. В случае их отсутствия переходим дорогу до конца, в случае наличия – стоим и ждем, пока они закончатся. И только тогда завершаем переход дороги. На самом деле эти действия можно описать еще более детально, вплоть до переставления ног, поворота головы и так далее. Похожим образом мы можем описать, что из себя представляет работа светофора. В чем она заключается? Поочередно включаются сигналы разного цвета. Включается красный сигнал, затем, на протяжении какого-то времени в работе светофора ничего не меняется. Затем, одновременно с красным сигналом, включается желтый сигнал, и они светятся вместе на протяжении секунды. После секундной задержки оба сигнала выключаются и загорается зеленый сигнал. Затем проходит еще какое-то время, предназначенное для зеленого сигнала, он выключается, включается вновь, выключается, ну то есть мигает. После того, как зеленый помигал, на секунду включается желтый сигнал, и выключившись, передает место красному. Затем цикл повторяется. Вы уже знаете, что включение того или иного сигнала заключается в подаче напряжения на тот или иной контакт. Я надеюсь, что вы уже собрали модель светофора и подключили ее к Arduino, и теперь, на самом деле, у вас есть все, для того, чтобы написать программу для полноценной работы светофора. Вы можете сейчас поставить меня на паузу, посмотреть в описанный алгоритм, посмотреть в пример, который мы разбирали в Linked и составить код самостоятельно. Только не забывайте, что помимо непосредственно работы светофора, есть еще подготовительная фаза, когда мы настраиваем три порта, к которому подключены светодиоды на выход. Посмотрите, у нас получилась такая схема, где мы выполняем, своего рода, перевод. Сначала формулируем в нечто алгоритм на русском языке, затем переводим его на язык программирования. Дальнейшим переводом займется компилятор, создаст машинный код, который понимает контроллер. Контроллер, в свою очередь, превратит команды в определенные сигнал на определенных портах, и мы увидим работу устройства своими глазами, когда эти сигналы дойдут до светодиодов исполнительных устройств. Теперь мы можем загрузить получившийся код и посмотреть, как это работает. Давайте посмотрим какой код получился у меня. Я надеюсь, что у вас примерно такой же. Вначале я определил 3 контакта как выходы, те три контакта, куда у меня подключены светодиоды. Затем в лупе я начал включать и выключать напряжение на этих контактах. Сначала на пине, к которому подключен красный светодиод. Затем сделал задержку, пока красный горит. Затем вместе с ним включил желтый светодиод. Они некоторое время – секунду – горели вместе. А затем я выключил напряжение на обоих контактах. Хочу особенно обратить ваше внимание на то, что контроллер не обладает никаким искусственным интеллектом, и не будет ничего делать до тех пор, пока вы явно ему не скажете сделать то или иное действие. Это особенно хорошо видно в этом фрагменте. Мы включили красный светодиод, а затем вместе с ним включили желтый, и красный при этом не погас, потому что соответствующей команды не поступало. Она поступит позже, после секунды совместного свечения красного и желтого. Также обратите внимание на то, что я говорю чуть упрощенно: мы включили красный светодиод, мы включили желтый светодиод. На самом деле контроллер не имеет ни малейшего понятия о том, что подключено к его пинам. Он всего навсего включает или выключает напряжение на заданном контакте. Теперь посмотрим далее. После выключения красного и желтого, я включаю зеленый. Жду 3 секунды и выключаю его. После чего трижды повторяю эти же действия, только с маленькой задержкой. Это фаза мигания зеленого сигнала. Затем осталось включить желтый, что я и делаю. А затем выключаю его. После этого цикл завершается и начинается снова с включения красного сигнала. Теперь мы, наконец, можем загрузить код для нашего первого устройства, только предварительно не забудем убедиться в том, что выбран порт и выбрана правильная плата. После этого я загружаю, в процессе мы не встречаем никаких ошибок, Пожалуйста: красный, красный, желтый, зеленый, зеленый мигает, желтый и красный. И никакого ручного управления! Ура, мы сделали первое устройство! |
|
|
|
|