Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Язык программирования Ардуино

Контроллеры Arduino

Определение 1

Arduino - семейство контроллеров (программируемых электронных плат) для домашнего технического творчества. С их помощью можно создавать элементы "умного дома", несложных роботов и другие автоматизированные устройства. Arduino активно используется и в образовательных целях как средство обучения основам программирования и робототехники.

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

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

Контроллер Arduino и подключаемые к нему устройства. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Контроллер Arduino и подключаемые к нему устройства. Автор24 — интернет-биржа студенческих работ

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

В Сети существует обширное комьюнити, поддерживающее разработчиков. Производители Arduino сопровождают свою продукцию подробной онлайн-документацией.

Arduino IDE

Для разработки программ, загружаемых в контроллеры Arduino, используется специальное программное обеспечение (IDE), которое можно скачать с сайта производителя.

Замечание 1

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

«Язык программирования Ардуино» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Arduino IDE написана на кроссплатформенном языке Java, поэтому ее легко установить на любую современную настольную операционную систему (Windows, Linux, MacOS). IDE комплектуется большим количеством примеров и программных библиотек. Недостающие библиотеки легко загрузить через Интернет.

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

Скетч, открытый в Arduino IDE. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Скетч, открытый в Arduino IDE. Автор24 — интернет-биржа студенческих работ

Язык программирования для Arduino

Язык программирования, на котором пишутся скетчи для Arduino, с точки зрения синтаксиса принадлежит к классу Си-подобных.

Замечание 2

Некоторые компании, продающие платы Arduino, занимаются разработкой собственного ПО для создания скетчей. Так, российская компания Amperka предоставляет IDE для программирования Arduino на языке JavaScript.

Скетч состоит из следующих стандартных блоков:

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

Переменные в Arduino обладают строгой типизацией, совместимой с некоторыми реализациями Си:

  • boolean - для логических значений true/false;
  • byte - 8 бит, целое число от 0 до 255;
  • char - 8 бит, целое в диапазоне от -128 до 127;
  • word - 2 байта, целое от 0 до 65535
  • int - 2 байта, целое от -32768 до 32767;
  • unsigned long - 32 бита, целое от 0 до 4294967295;
  • long - 32 бита, целое от -2,147,483,648 до 2,147,483,647;
  • float - 32 бита, дробное число (с плавающей точкой) в диапазоне от -3.4028235E38 до 3.4028235E38.

Кроме того, скетч может содержать комментарии, инструкции #define и т.п.

Функция setup выполняется один раз, в момент запуска программы. В ней обычно настраиваются режимы работы пинов, устанавливаются свойства библиотек. По окончании работы она передает управление функции loop, повторяющейся в бесконечном цикле до тех пор, пока контроллер не будет обесточен или не произойдет какая-нибудь авария. При каждой итерации этого цикла контроллер опрашивает пины по запрограммированному в скетче алгоритму, взаимодействует с устройствами по шинам I2C, RS-232 и т.п.

Рассмотрим некоторые наиболее распространенные встроенные функции Arduino:

  • pinMode() - устанавливает режим пина (INPUT/OUTPUT);
  • digitalWrite() - подает на пин высокий или низкий уровень напряжения;
  • digitalRead() - считывает с входа уровень сигнала (высокий или низкий);
  • analogRead() - считывает аналоговый сигнал в виде числа от 0 до 1024;
  • tone() - подает звуковой сигнал (предполагается, что к пину подключен динамик);
  • noTone() - прекращает звуковой сигнал;
  • millis() - возвращает время работы устройства в миллисекундах, прошедшее с момента включения устройства;
  • delay() - приостанавливает работу устройства;
  • Serial.print() - отправляет информацию в терминальное окно IDE.

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

Пример скетча для Arduino

int buzzer = 9; // К пину №9 будет подключен динамик-пищалка.
int smoke = A0; // К аналоговому пину A0 будет подключен датчик задымления.
int sensorThres = 100; // Порог срабатывания (при превышении этого значения подать звуковой сигнал).

void setup() {
 pinMode(buzzer, OUTPUT);
 pinMode(smoke, INPUT);
 tone(buzzer, 1000, 200); // Подаем звуковой сигнал в момент запуска программы.
 Serial.begin(9600); // Для отладки подготавливаем терминал IDE.
}

void loop() {
 int analogSensor = analogRead(smokeA0); // Считываем сигнал с датчика.
 Serial.print("Pin A0: ");
 Serial.println(analogSensor); // Отправляем данные на ПК.
 if (analogSensor > sensorThres) { // Если превышен порог:
 tone(buzzer, 1000, 500); // подаем звуковой сигнал.
 }
 else { // В противном случае
 noTone(buzzer); // выключаем звук.
 }
 delay(1000); // Приостанавливаем процесс на 1 секунду.
}
Дата написания статьи: 29.04.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot