Главная » Статьи » Arduino с нуля » Работа с Arduino

Урок 1. Мигание светодиода и первое знакомство с языком программирования

Хотелось бы начать урок с ознакомления с особенностями программирования Arduino. Arduino IDE - это бесплатная программа, позволяющая писать и загружать готовые алгоритмы в платформу. Язык, на котором происходит программирование, это C++ но в очень упрощенном виде. Так что если вы не знакомы с языком, не пугайтесь, освоить программирование Arduino не так уж и сложно. 

 

Как только мы открываем Arduino IDE, перед нами, в окне редактора, отображается следующий код:

void setup() {
 // put your setup code here, to run once:

}

void loop() {
 // put your main code here, to run repeatedly:

}

В любой код на Arduino входят две главные функции: setup() и loop(). void обозначает, что эти функции не возвращают никакие значения.

 

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

 

Фигурные скобки означают начало и конец конкретной функции, к которой они относятся. 

Теперь поговорим подробнее об этих функциях.

  • Функция setup()

В данную функцию мы закладываем тот код программы, который выполнится всего лишь один раз - при подключении Arduino к питанию. В основном это настройки для пинов Arduino. Их мы выставляем либо в режим INPUT (вход), либо в режим OUTPUT (выход). А также для однократного выполнения какого-либо действия. Например включения индикации питания, или же для запуска начальной проверки всех узлов на нашем устройстве.

  • Функция loop()

Это главная функция всей программы. В нее будет закладываться основной код, который будет выполняться многократно (циклично). Т.е как только пройдут все операции с начала до конца, так сразу же программа перейдет в начало и все операции будут выполняться заново. 

Это основное что вы должны знать о главных функциях в программировании Arduino.

Теперь давайте разберем код, который мы использовали в предыдущем уроке

int led = 13;

void setup() {
 
 pinMode (led, OUTPUT);
 
}

void loop() {
 
 digitalWrite (led, HIGH);
 delay (1000);
 digitalWrite (led, LOW);
 delay (1000);

}

В самой первой строке

int led = 13;

объявляется переменная led, целого типа int (integer) и присваивается этой переменной значение 13.  Эта переменная носит в себе значение нашего порта.

Конечно же, мы можем просто писать в программе число 13, не объявляя переменную. Но если мы захотим изменить номер порта, придется менять это везде. А если у нас очень огромный код? Мы затратим очень большое время для поиска и изменения данного значения. И не факт, что мы что-нибудь не пропустим.

Поэтому и используется переменная. При изменении номера порта, нужно будет только изменить ее значение в начале программы. 

 

В качестве имени переменной может использоваться любая совокупность букв латинского алфавита. В имени переменной могут также использоваться цифры и знак подчеркивания (led1, foto_3 , _moto_2 и т.д). Но переменная не должна начинаться с цифры. 

int означает, что значение, которое будет хранить переменная, будет целого типа, например: 1, 5, -3, 100 и т.д. Так же бывают и другие типы переменных, например символьные (char = 'H'), с плавающей точкой (double = 1.5) и прочие. 

 

Далее мы видим знакомую нам функцию setup():

void setup() {
 
 pinMode (led, OUTPUT);
 
}

 

Функция, внутри нее (pinMode), в общем случае имеет вид:

pinMode (pin, mode);
  • pin - номер пина, для которого ведется настройка режима
  • mode - режим пина. Принимает два значения: OUTPUT, INPUT

 

OUTPUT - режим, при котором пин Arduino становится источником тока. В этом режиме к пину можно подключать светодиоды, небольшие двигатели и датчики. 

INPUT - режим, при котором пин Arduino работает на вход. Т.е в таком режиме к нему можно подключать емкостные датчики касания, фотодиоды и т.д.

 

В данном случае функция pinMode настраивает пин с именем led в режим OUTPUT, т.к к этому пину будет подключен светодиод.

Далее мы видим еще одну знакомую нам функцию loop():

void loop() {
 
 digitalWrite (led, HIGH);
 delay (1000);
 digitalWrite (led, LOW);
 delay (1000);

}

Внутри нее мы видим две незнакомые функции digitalWrite и delay.

  • digitalWrite(pin,HIGH/LOW) подает либо HIGH (высокий), либо LOW (низкий) уровни на pin. При подаче HIGH, на выход пина подается напряжение 5В, при подаче LOW - 0В (земля).
  • delay(1000) - своего рода задержка. Останавливает выполнение программы на время, указанное в (...), в миллисекундах (мс). (1000 мс = 1 сек)

Таким образом, в функции loop() реализуются следующие операции:

  1. Сначала функция подает на led (pin 13) высокое напряжение HIGH (5В).
    digitalWrite (led, HIGH);
  2.  Далее происходит задержка на секунду. Светодиод в это время горит
    delay (1000);
  3. Потом на вход led (pin 13) поступает низкое напряжение LOW (0В). И светодиод потухает.
    digitalWrite (led, LOW);
  4. Далее снова происходит задержка в таком состоянии ровно на одну секунду. 
    delay (1000);

 

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

 

С кодом и основными функциями в программировании Arduino мы разобрались. Урок не очень сложный. Главные операции находятся в функции loop() и зависят от аргументов находящихся в скобках (задержка, высокий/низкий уровни).

Попробуйте сами немного поэкспериментировать с изменением аргументов функций. Сделать мигание более быстрыми, или же наоборот замедлить их. Реализовать мигание из трех, четырех комбинаций и т.д. Все зависит от вашей фантазии. 

 

Было составлено несколько заданий, чтобы Вам было легче закрепить полученные знания. Это своего рода небольшая проверка того, на сколько хорошо вы поняли материал. 

Задания:

  1. Сделать так, чтобы светодиод светился 2.5 сек, а пауза между свечениями была равна 0.5 сек;
  2. Сделать так, чтобы светодиод светился 0.5 сек, а пауза между свечениями была равна 2.5 сек;
  3. Сделать так, чтобы светодиод, при включении питания, загорелся на 3 сек. А потом начал мигать как и в уроке - через каждую секунду. 

Пояснение к заданию:

  1. Первый и второй пункт реализуются простым изменением значений аргументов в функции delay.
  2. Второй пункт усложняется изменением функции setup(). В нем нужно будет реализовать первую часть задания. Чтобы светодиод загорелся на три секунды только в самом начале - при включении питания. А дальше начал моргать как и в уроке.

 

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

Если же что-нибудь не будет получаться, или у вас появятся какие-либо вопросы, не стесняйтесь, и оставляйте их в комментариях или же на форуме.  

 

Если Вам понравился наш урок, поделитесь им с друзьями.

 

 


←Предыдущий урок | Следующий урок→


 

Категория: Работа с Arduino | Добавил: GM (08.10.2015)
Просмотров: 3143 | Комментарии: 2 | Теги: статьи, уроки, Arduino. микроконтроллеры | Рейтинг: 5.0/5
Всего комментариев: 2
avatar
1 zirkov_micha • 22:48, 16.10.2015
Спасибо за урок. Все понял) Делал задания, чуток тупанул, но потом вовремя нашел ошибку smile
avatar
0
2 GM • 23:01, 16.10.2015
Весь процесс обучения всегда будет сопроваждаться ошибками. Но ведь для этого мы и учимся smile Очень хорошо что Вы сами обнаружили ошибку. А так, если прям вообще тупик, то не стесняйтесь, обращайтесь, поможем smile
avatar