Урок 1.1. Знакомство с платформой Arduino и интерфейсом программирования. Работа с цифровыми выходами — мигание светодиодами

Базовый курс "Программирование микроконтроллеров"
Модуль 1. Введение в Arduino. Работа с цифровым и аналоговым сигналом

Что такое Arduino IDE?

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

Arduino IDE можно установить на любую операционную систему: Windows, Linux, Mac OS X. Для скачивания нужной версии необходимо выбрать её в правой колонке, и на следующей форме нажать кнопку «JUST DOWNLOAD».

Интерфейс Arduino IDE

Окно редактора можно условно разделить на 6 блоков:

Первый блок — это меню программы. Через меню можно получить доступ ко всем функциям Arduino IDE.

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

Второй блок — панель иконок, на которой размещены часто используемые функции. Слева направо:

Иконка “галочка” — проверить программу на ошибки;
Иконка “стрелка направо” — загрузить программу на Arduino;
Иконка “play” с жучком — отладка;
Выпадающий список подключенных к портам в данный момент плат;
Иконка “график” — построить графики из данных в мониторе порта;
Иконка “лупа” – открыть монитор порта.

Третий блок — файлы проекта. Каждая вкладка означает один из файлов проекта. Самые простые программы могут состоять только из одного файла.

Четвертый блок – панель иконок быстрого доступа к Альбому скетчей, Менеджеру плат, Управлению библиотекой, Отладке и Поиску.

Пятый блок — поле для отображения служебных сообщений, окно информации о ходе компиляции и ошибках в программе. Например, уведомлений об успешной загрузке программы.

Наконец, шестой блок — поле текстового редактора. В простых скетчах поле текстового редактора делится на три части:

Область строк до блока void setup( ){ }
В этой области обычно объявляются переменные, константы, библиотеки, объекты.

Область блока void setup( ){ }
Область настройки работы микроконтроллера – код из этого блока внутри { } запускается один раз в начале программы.

Область блока void loop( ){ }
Главная часть программы – код внутри { } повторяется циклически.

Плата Arduino Uno и загрузка первой программы

Знакомство с платами Arduino мы начинаем с модели Uno. Для ознакомления с расположением основных необходимых нам частей рассмотрите схему:

Теперь, когда мы увидели, где находятся основные пины и индикаторы, попробуем открыть готовый пример программы, которая заставит Arduino мигать светодиодом. Для этого выберем в меню: Файл → Примеры → Basics → Blink

В результате откроется еще одна копия редактора с программой.

Следующее, что необходимо сделать — подключить Arduino через свободный USB-порт. Обычно, после подключения новой платы Arduino к компьютеру, должно пройти несколько минут, чтобы устройство автоматически определилось – появится уведомление об успешной установке устройства.

Затем настроим правильный тип платы в Arduino IDE. Для этого в меню выбираем пункт: Инструменты → Плата → …

Появится список разных типов Arduino, из которого мы выбираем нужный. В этом уроке используется Arduino Uno, так что выбираем этот вариант. Кстати, в новых версиях Arduino IDE сменилось название для классической Arduino Uno, теперь оно выглядит так – Arduino/Genuino Uno.

Теперь выбираем порт. Каждый раз, когда вы подключаете новую Arduino к компьютеру, Windows выделяет ей COM-порт с отдельным номером. Для того, чтобы выбрать правильный порт откроем пункт меню: Инструменты → Порт → …

Если вы новичок и не практикуете подключение периферийных устройств через виртуальный COM-порт, то в этом списке появится всего одна запись. Это может быть любой «COM», но как правило это НЕ «COM1», а так же, рядом с портом может появиться надпись Arduino Uno.

Последний шаг — загружаем программу на Arduino. Для этого жмем иконку со стрелочкой вправо. По завершению этой процедуры, в строке сообщения появится надпись: «Загрузка завершена».

В результате мы увидим как светодиод “L” на плате начнёт моргать с частотой 1 раз в 2 секунды.

Схема подключения внешнего светодиода

Чтобы зажечь внешний светодиод, нам потребуется подключить его к одному из цифровых выводов Arduino – пусть это будет линия D2 (D – digital, цифровой). Катод светодиода подключим к минусу (GND, земля), анод же соединим с выводом D2 через токозадающий резистор 220 Ом.

Принципиальная схема

Схема на макетной плате

Функция digitalWrite( )

Теперь, когда светодиод подключен к Arduino, настало время программирования. Чтобы контакт D2 именно выводил сигнал, а не принимал его, потребуется использовать специальную функцию для установки режима контактов — pinMode

Формат этой функции таков:

  pinMode(НОМЕР КОНТАКТА, РЕЖИМ КОНТАКТА);

где аргумент режим контакта может принимать значения OUTPUT (вывод) и INPUT (ввод). То есть нам, чтобы помигать светодиодом, надо будет добавить в программу строчку:

  pinMode(2, OUTPUT);

Для вывода высокого или низкого уровня сигнала на один из контактов общего назначения, в редакторе программ Arduino IDE используется функция digitalWrite

Вызов этой функции имеет вид:

  digitalWrite(НОМЕР ПИНА, УРОВЕНЬ СИГНАЛА);

где аргумент уровень сигнала может принимать два значения:  HIGH (высокий, +5В) и LOW (низкий, заземлен).

Другими словами, если написать:

 digitalWrite(2,HIGH);

то Ардуино соединит ногу №2 с питанием +5В и светодиод, вспыхнет!

Если же напишем:

 digitalWrite(2,LOW);

Анод светодиода замкнется на землю, и светодиод погаснет.

Итоговая программа для мигания светодиодом будет иметь вид:

int led = 2;                     // переменная пина подключения светодиода 

void setup() { 
  pinMode(led, OUTPUT);          // установка пина светодиода в режим работы "выход" 
} 

void loop() { 
  digitalWrite(led, HIGH);       // включение вывода светодиода 
  delay(1000);                   // ожидание 1 секунда
  digitalWrite(led, LOW);        // выключение вывода светодиода 
  delay(1000);                   // ожидание 1 секунда 
}

В программе присутствует еще одна полезная функция — delay. Это просто пауза, задаваемая в миллисекундах. 

delay (1000) — означает паузу в 1000 миллисекунд, что равно одной секунде.

Все! Загружаем программу на Ардуино и смотрим на мигающий светодиод!

Самостоятельная работа

Попробуйте написать прогроммы для следующих анимаций:

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

     

Все элементы гирлянды поочередно включаются с задержкой в 200 мс, затем в обратном порядке поочередно выключаются с задержкой в 100 мс.

Все элементы гирлянды поочередно включаются и выключаются с периодом в 250мс.

Все элементы гирлянды поочередно включаются и выключаются с периодом в 200 мс. Огонек должен пробежаться в одном направлении, потом «ударившись» о край гирлянды отскочить обратно.

Все элементы гирлянды поочередно включаются и выключаются с периодом в 150 мс. Огонек должен пробежаться в одном направлении, потом, «ударившись» о край гирлянды – отскочить обратно. Обратите внимание что в одном направлении должны гореть только четные элементы гирлянды, в другом нечетные.

Все элементы гирлянды должны демонстрировать движение змейки на игровом поле. Движение начинается за границей гирлянды и заканчивается, когда змейка полностью скрывается за последним элементом гирлянды. Длинна змейки составляет 3 светодиода.

Все элементы гирлянды должны демонстрировать увеличение области освещения. Элементы должны начинать свое включение из центра к краям, и выключение от краев к центру.