Это старая версия документа!
После установки среды программирования, драйвера и подключения Лаборатории IoT к компьютеру, наконец, можно приступить к первому эксперименту.
Когда программисты впервые знакомятся с новым языком программирования, то первым делом они пишут программу «Hello, World!» (Привет, Мир!). Все, что она делает— это выводит эту приветственную надпись на экран. Никакой полезной функции такая программа, казалось бы, не несет, но это заблуждение. Главная задача этой программы— убедиться, что все настроено верно, и что всё работает. Только после этого можно двигаться дальше, к более сложным программам.
Классическим «Hello, World!» в мире программирования микроконтроллеров является мигание светодиодом. Именно это и будет наш первый эксперимент. Ниже представлен листинг программы первого эксперимента:
void setup() { } void loop() {
Введи код первой программы в среду программирования Arduino IDE. Это можно сделать тремя способами:
Так или иначе код программы должен оказаться в EsPy
Необходимо убедиться, что EsPy установлено соединение с Лабораторией IoT (Подробнее о том, как это сделать) и отправить листинг интерпретатору Python, который находится в микроконтроллере.
Результатом должно стать мигание синего светодиода в верхнем левом углу Лаборатории.
Если не получилось, то необходимо еще раз проверить подключение, убедиться, что соединение настроено верно. Для этого еще раз внимательно прочитать статью Подключение и настройка. Если все выполнено верно, но все равно не работает — Возможные проблемы и их устранение
Теперь, когда первый эксперимент удался, самое время разобраться как и почему это работает.
В Arduino скетче обязательным является наличие двух функций setup()
и loop()
, они объявлены соответственно в строках 1 и 5. Функция setup()
выполняется один раз после включения или перезагрузки контроллера. В свою очередь loop()
запускается после setup()
и выполняется в бесконечном цикле пока на контроллер подано питание.
Для настройки вывода микроконтроллера используется следующая строчка:
Мы вызываем функцию pinMode и передаем ей в качестве первого параметра номер вывода LED_BUILTIN
, а вторым параметром OUTPUT
мы сообщаем , что хотим настроить этот вывод как цифровой Выход. LED_BUILTIN
это псевдоним номера вывода 2, к которому подключен светодиод, установленный на контроллере.
Все выводы микроконтроллера имеют свой номер, именно по этому номеру и происходит работа с ними из программы.
Теперь мы можем влиять на состояние ножки микроконтроллера.
void loop() { }
Функция digitalWrite(pin, value)
устанавливает низкий или высокий уровень на выводе согласно заданным параметрам: pin
— номер вывода и value
— значение, может быть LOW
(низкий уровень) или HIGH
(высокий уровень).
Таким образом мы подаем или снимаем напряжение со светодиода, который подключен к этому выводу.
Зачем же нам delay(1000)
? Все дело в том, что микроконтроллер работает очень быстро, исполняя миллионы операций в секунду. Он может тысячи раз в секунду зажечь и потушить светодиод. Это слишком быстро, чтобы человек смог что либо заметить. Чтобы приостановить исполнение программы мы и вызываем функцию delay()
. В качестве параметра она принимает число миллисекунд на которое нужно сделать паузу. В нашем случае мы делаем паузу на 1 секунду (1000 миллисекунд = 1 секунде) после зажигания светодиода и столько же после его выключения.
Как Arduino понимает какой именно участок кода является телом функции, какой именно участок кода необходимо исполнять? Для этого в Arduino используются фигурные скобки {} после объявления. Как можно видеть в строках 1 и 5 стоят открывающие скобки {, а в строках 3 и 10 закрывающие. Вот участки кода расположенные { и } являются телом функции.
Как же прервать исполнение программы, когда она занята исполнением бесконечного цикла, ведь сама она никогда не закончится?
Нажмите на клавиатуре Ctrl+I
или на кнопку
В окне терминала появится сообщение KeyboardInterrupt:
(Прерывание от клавиатуры)