Программа Blink

Мы уже научились загружать и запускать нашу первую программу, давайте более внимательно разберем ее.

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
*/
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Начинается программа с блока комментариев.

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
*/

Мы можем записать сюда любые данные, например описание программы, для того чтобы в будущим было проще разобраться с программой и не перепутать одну программу с другой. Блок комментария, начинается с символов **

и заканчивается обратным порядком этих же символов

**

Далее идет однострочный коментарий, перед вызовом слудующей функции. Для комментирования строчки необходимо в начале ее поставить два слеша "//".

Программа на Arduino, всегда должна содержать две функции setup() и loop(). При создании новой программы, конструктор IDE сразу создает эти функции.

Пример функции setup()

Строка void setup(){} означает, что определяется функция setup(). Слово void обозначает что функция ничего не возвращает. Всегда при обьявлении функции, необходимо указывать тип возвращаеммых данных.

Код из функции setup(), выполниться один раз при запуске программы. Поэтому в эту функцию размещают вызовы, которые выполняют настройку микроконтроллера перед началом работы.

В нашем примере setup(), мы вызываем одну функция pinMode(LED_BUILTIN, OUTPUT); pinMode(), которая устанавливает режим работы выхода LED_BUILTIN как "выход".

Далее идет вторая необходима функция loop(). Особенностью этой функции, явлетя то, что она выполняется все время в цикле. Как только функция выполнит все команды, она начинает работать заново.

Поэтому наш светодиод моргает постоянно.

Кратко разберем строчки

Строка как и в примере выше, содержит комментарий к функции, и начало определения функции loop()

Первой командой digitalWrite(), мы подаем "высокий сигнал" на ногу LED_BUILTIN. Светодиот загорается.

Следующая команда delay() останавливает программу на 1000мс (1 секунда).

Далее digitalWrite(), устанавливает низкий уровень (выключает) светодиод.

После выключения светодиода, ожидаем одну секунду.

На этом наша программа заканчивается. Но так как мы находимся в функции loop(), то программа начинает работать заново, включает светодиод, ожидает, выключает, ожидает и тд.

Данный пример использует для работы функцию delay(),, которая "останавливает" работу всего микроконтроллера. Такой способ работы не подходит, если вам необходимо чтобы микроконтроллер выполнял другую работу, помимо "мигания".

Ниже приведен пример программы, которая мигает светодиодом, и не останавливает его работу. Программа считает время, и если интервал превышен, то меняет состояние светодиода. Такой прими более "правильный" хотя и более сложный.

dd

Last updated