Цель: начать осваивать программирование в среде Arduino. Научиться работать с цифровыми портами.
План урока
1. Описание среды Arduino
2. Основные функции
Теоретическая часть
1. Описание среды Arduino
Для программирования плат Arduino существует специальная интегрированная среда разработки IDE Arduino. Рассмотрим внешний вид программы(рис 1).
Рисунок 1 — Внешний вид IDE Arduino
Вверху, под строкой заголовка находится строка Меню, со следующими пунктами: Файл, Правка, Скетч, Настройки, Сервис.
Под строкой меню располагается строка инструментов, на которую вынесены частоиспользуемые команды:
— Проверить
— Проверить
— Загрузить
— Создать
— Создать
— Сохранить
— Открыть
— Монитор порта.
Ниже располагается строка с названиями открытых вкладок. В конце строки находится пиктограмма , по нажатии на которую открывается меню, относящееся ко вкладкам.
В центре окна находится рабочая область, в которой пишется код программы. Под рабочей областью находится окно сообщений, куда выводятся сообщения о результате компиляции, загрузки и т.д.
2. Основные функции
Программа, написанная в IDE Arduino называется скетчем. Каждый скетч должен состоять как минимум из двух функций:
void setup()
{
операторы;
}
void loop()
{
операторы;
}
В начале программы, перед функцией setup, обычно, объявляются переменные. После включения питания платы первой выполняется функция setup. Она выполняется только один раз. Обычно в ней инициализируются режимы работы портов: порты, к которым подключены различные датчики устанавливаются как входы, а порты с исполнительными устройствами как выходы.
Код, написанный в функции loop() начинает выполняться после выполнения функции setup(), и выполняется в бесконечном цикле снова и снова. В этой функции выполняется основная работа: различные вычисления, получение значений датчиков, вывод значений на порты.
В таблице ниже приведены в соответствия блоки из Skretch и их аналоги — функции из С++.
Блок из Skretch
Аналог в С++
Описание
void loop()
{
/*действия, которые будут выполняться постоянно, пока включено питание платы*/
}
Одна из обязательных функций. Внутри располагаются действия, которые будут выполняться постоянно, пока включено питание.
digitalWrite(10, HIGH);
Посылает на заданный порт значение HIGH
digitalWrite(10,LOW);
Посылает на заданный порт значение LOW
digitalRead(2);
Возвращает значение ИСТИНА, если на порте значение HIGH и ЛОЖЬ, если LOW.
analogRead(0);
Возвращает аналоговое значение с заданного порта
analogWrite(5,255);
Посылает на порт аналоговое значение от 0 до 255. Функция в С++ может посылать аналоговое значение и на дискретные и на аналоговые порты.
delay(100);
Задержка в миллисекундах.
if (/*условие*/)
{ /*
дейсвия, выполняемые, если выполняется условие */
};
Выполняет действия, указанные между фигурных скобок, если условие истинно. Если выполняемое действие одно, то оно может не заключаться в фигурные скобки. Условие записывается с помощью следующих операторов отношения: == — проверка на равенство, < — меньше, > — больше, <= — меньше или равно, >= больше или равно, != — не равно.
if (/*условие*/)
{ /*
дейсвия, выполняемые, если выполняется условие */
}
else { /*
действия, выполняемые, если условие не выполняется */
};
Выполняется аналогично предыдущей функции, но после слова else указываются действия, которые должны выполняться, если условие ложно.
Практическая часть
Пример программы, которая “моргает” светодиодом.
Скрипт в Skretcs
Программа на C++
void setup()
{
pinMode(10, OUTPUT);
}
void loop()
{
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10,LOW);
delay(1000);
}
Пример программы, которая зажигает светодиод при нажатой кнопке.
Скрипт в Skretcs
Программа на C++
void setup()
{
pinMode(10, OUTPUT);
}
void loop()
{
if (digitalRead(2)==HIGH)
{
digitalWrite(10, HIGH);
delay(1000);
}
else
{
digitalWrite(10,LOW);
delay(1000);
}
}
Задание.
Написать программу для управления тремя светодиодами и тремя кнопками:
1. При нажатии одной из кнопок начинает светиться соответствующий ей светодиод. Если кнопка не нажата, то светодиод не светится.
2. При нажатии первой кнопки три светодиода должны последовательно начать светиться и гаснуть ( первый зогорается, горит секунду, затем гаснет и одновременно с этим загорается второй и тд). При нажатии второй кнопки три светодиода одновременно моргают 3 раза с интервалом 1 с. При нажатии третьей кнопки светодиоды должны сначать последовательно все начать светиться, а затем в том же порядке погаснуть.