Краткие сведения об Arduino. Среда разработки Arduino IDE. Работа со светодиодами. Синтаксис и структура кода.

Цель: Обеспечить усвоение учащимися понятий аппаратная вычислительная платформа, ознакомить с платформой Arduino и со средой разработки Arduino IDE. На основе свечения светодиода, изучить основу программирования Arduino.

Краткие сведения об Arduino.

Что такое Arduino?

         Arduino (Ардуино) —  аппаратная вычислительная платформа, основными компонентами которой являются плата ввода-вывода и среда разработки. Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере. Arduino относится к одноплатным компьютерам.

Семейство Ардуино – несколько моделей так называемых отладочных плат. Отладочная плата представляет собой как ни странно печатную плату, в сердце которой стоит микроконтроллер – та самая штука, которую мы будем программировать. Микроконтроллер это микросхема, содержащая в себе микропроцессор, интерфейсы ввода-вывода, память (оперативную и постоянную), таймеры и другие штуки. Да, микропроцессор – это другое, микропроцессор по сути может только выполнять вычисления (как процессор в компьютере), а микроконтроллер – это практически полноценный компьютер, размещенный в одном кристалле микросхемы. В большинстве плат Arduino используются микроконтроллеры серии ATmega от производителя AVR.

Запомнили сразу важную мысль – Ардуино – не микроконтроллер, не процессор, Ардуино – платформа. Плата Ардуино это отладочная плата с микроконтроллером.

Что касается программной части, предоставленной Arduino, то это Arduino IDE (Integrated Development Environment – интегрированная среда разработки), включающая в себя редактор кода, компилятор и всё остальное необходимое для загрузки прошивки в плату.

Сначала рассмотрим общий вид программы, т.е. как она выглядит после запуска. В самом центре – блокнот, то самое место, где пишется код. По умолчанию уже написаны два стандартных блока, setup и loop. К ним вернёмся в разделе уроков программирования. Всё остальное можно увидеть на рисунке ниже.

Проверить – компиляция (сборка, проверка на ошибки…) кода без его загрузки в плату. То есть код можно написать и проверить на ошибки даже не подключая плату к компьютеру

Загрузить – компиляция и загрузка прошивки в плату

Создать/открыть/сохранить – тут всё понятно

Монитор порта – кнопка открывает монитор последовательного пора для общения с платой

Меню вкладок – работа с вкладками, о них поговорим ниже

Текущее состояние – тут выводится краткая информация о последнем действии: загрузка завершена, ошибка загрузки, автоформатирование завершено и т.д.

Лог работы – тут выводится лог компиляции и вообще все системные сообщения, отчёты об ошибках и размере скомпилированного кода

Конфигурация оборудования – выводится название выбранной платы, версии микроконтроллера и номер выбранного COM порта

 Работа со светодиодами.

Светодиод — это полупроводниковый прибор, трансформирующий электроток в видимое свечение.

На основе свечения светодиода мы будем работать и рассматривать основу программирования Arduino. Перейдем непосредственно к практике Для начала работы нам понадобятся такие компоненты

  • плата Arduino
  • Breadboard (макетная плата для удобного подключения приборов к Arduino)
  • Провода
  • светодиод
  • резистор

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

Для работы этой модели подойдет следующая программа:

void setup()

{

pinMode(8, OUTPUT);

}

void loop()

{

digitalWrite(8, HIGH);

delay(1000);

digitalWrite(8, LOW);

delay(1000);

}

Синтаксис и структура кода. Программирование.

Ардуино программируется на языке программирования C (C++) с соответствующим ему синтаксисом. Встроенный сборщик, препроцессор и компилятор (avr-gcc или Win-AVR) прощают большое количество ошибок и делает многое за пользователя автоматически, мы даже об этом не знаем и не задумываемся. Куча базовых функций для управления выводами микроконтроллера, математика и некоторые другие функции/макросы взяты из открытого фреймворка для работы с микроконтроллерами под названием Wiring. Именно из него примерно на 80% состоит базовый набор инструментов (функций) Ардуино. В связи с этим сами разработчики Ардуино называют язык “упрощённым C++”, и даже дали ему отдельное название – Arduino Wiring.

Синтаксис.

  • Тела функций заключаются в фигурные скобки { }
  • Каждая команда заканчивается точкой с запятой ;
  • Метод применяется к объекту через точку. Пример: Serial.begin();
  • Вызов функции или метода всегда заканчивается скобками, даже если функция не принимает параметров. Пример: loop()
  • Разделитель десятичных дробей – точка. Пример: 0.25 У запятой тут другое применение.
  • Запятыми перечисляются аргументы функций и методов, а также членов массива. Пример: digitalWrite(3, HIGH); массив – int myArray[] = {3, 4, 5 ,6};  Одиночный символ заключается в одиночные кавычки ‘а’
  • Строка заключается в двойные кавычки “строка”
  • Имена переменных могут содержать латинские буквы в верхнем и нижнем регистре (большие и маленькие), цифры и нижнее подчеркивание. Пример: myVal_35 .
  • Имена переменных не могут начинаться с цифры. Только с буквы или нижнего подчёркивания.
  • Регистр имеет значение, т.е. большая буква отличается от маленькой. Пример: переменные val и Val – не одно и то же.
  • К синтаксису также можно отнести комментарии, т.к. в разных языках они выделяются по-разному. Комментарий это обычный текст, который игнорируется на этапе компиляции. Комментарии нужны для пояснения кода, как себе самому, так и другим возможным его читателям. В C++ у нас два типа комментариев:
  • Однострочный комментарий

// однострочный комментарий

// компилятор меня игнорирует =(

  • Многострочный комментарий

/* Многострочный

            комментарий */

Структура кода.

         При запуске Arduino IDE даёт нам заготовку в виде двух обязательных функций: setup и loop.

Код в блоке setup выполняется один раз при каждом запуске микроконтроллера.  Код в блоке loop выполняется “по кругу” на всём протяжении работы микроконтроллера, начиная с момента завершения выполнения setup.

Функция pinMode.

Устанавливает режим работы заданного вход/выхода (pin) как входа или как выхода.

Синтаксис

pinMode(pin, mode)

Параметры

pin: номер вход/выхода (pin), который Вы хотите установить

mode: режим одно из двух значение — INPUT или OUTPUT, устанавливает на вход или выход соответственно.

Функция digitalWrite().

Подает HIGH или LOW значение на цифровой вход/выход (pin).

Если вход/выход (pin) был установлен в режим выход (OUTPUT) функцией pinMode(), то для значение HIGH напряжение на соответствующем вход/выходе (pin) будет 5В (3.3В для 3.3V плат), и 0В(земля) для LOW.

Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор. Подача LOW в свою очередь отключает этот резистор.  Нагрузочного резистра достаточно чтобы светодиод, подключенный к входу, светил тускло. Если вдруг светодиод работает, но очень тускло, возможно необходимо установить режим выход (OUTPUT) функцией pinMode().

Замечание. Вход/выход 13 сложнее использовать как цифровой вход, т.к. он имеет встроенный в плату резистор и светодиод. Если вы активируете еще внутренний нагрузочный резистор 20K, то напряжение на этом входе будет около 1.7В, вместо ожидаемых 5В, т.к. светодиод и добавочный резистор снижает напряжение, т.е. Вы всегда будете получать LOW. Если же Вам все же необходимо использовать 13ый вход/выход, то  используйте внешний нагрузочный резистор.

Синтаксис

digitalWrite(pin, value)

Параметры

pin: номер вход/выхода(pin)

value: значение HIGH или LOW

Практика.

  1. Сделайте так, чтобы светодиод светился полсекунды, а пауза между вспышками была равна одной секунде.
  2. Измените код примера так, чтобы светодиод включался на три секунды после запуска устройства, а затем мигал в стандартном режиме.
  3. Подключите еще несколько светодиодов. Напишите программу светофора:
  • Светит только красный цвет нашего будущего светофора.
  • Не выключая красный сигнал светофора включаем желтый .
  • Выключаем красный и желтый включаем зеленый.
  • Выключаем зеленый сигнал светофора включаем желтый.
  • После чего цикл повторяем с красного сигнала светофора.

Контрольные вопросы:

  1. Что будет, если подключить к земле анод светодиода вместо катода?
  2. Что будет, если подключить светодиод с резистором большого номинала (например, 10 кОм)?
  3. Что будет, если подключить светодиод без резистора?
  4. Зачем нужна встроенная функция pinMode? Какие параметры она принимает?
  5. Зачем нужна встроенная функция digitalWrite? Какие параметры она принимает?
  6. С помощью какой встроенной функции можно заставить микроконтроллер ничего не делать?
  7. В каких единицах задается длительность паузы для этой функции?

Добавить комментарий