Введение
В этом опыте мы сначала зажжем встроенный светодиод на плате Arduino, а затем заставим мигать внешние светодиоды, подключенные к выводам платы.
Параллельно мы осовоим новые элементы яыка программирования, если Вы с ним еще не знакомы.
Отметим для преличия, что именно мигание светодиодом должна быть первой программой для Arduino, и потому именно эту программу обычно называют как Hello World на Arduino. 😉
Часть 1. Встроенный светодиод
На плате ардуино есть несколько светодиодов, и один из них можно зажигать программным путем для индикации происходящих в устройстве определенных процессов.
В зависимости от модели и версии платы, светодиод может быть разного цвета, но обычно он красный либо желтый и помечен буквой L.
Необходимые компоненты
Только плата ардуино.
Скетч
Итак, вот скетч, который 1 раз в секунду будет зажигать встроенный светодиод на полсекунды.
[post-content id=453]
Результат
Вы увидите как мигает встроенные светодиод.
Объяснение
За встроенным светодиодом закреплен цифровой пин 13. Т.е. если на пин 13 устанавливается высокий потенциал (HIGH), то светодиод зажигается, а если низкий (LOW) – гаснет. Делается это с помощью функции digitalWrite, которая имеет 2 параметра: номер цифрового пина и его значение – HIGH (высокое) или LOW (низкое).
Чтобы установить значение пина, его надо инициализировать на ввод. Делается это внутри функции setup() с помощью функции pinMode, которая имеет 2 параметра: номер цифрового пина и режим работы пина – OUTPUT (вывод) или INPUT (ввод).
- OUTPUT говорит плате, что мы будем выводить через этот пин информацию (т.е. будет устанавливать значение HIGH или LOW).
- INPUT говорит плате, что мы будем считывать значение с этого пина.
Часть 2. Подключение светодиода
Поскольку плата ардуино обычно находится в корпусе изделия, то встроенный светодиод не будет видет. Но его можно продублировать, подключив внешний светодид к пину 13 на плате. Внешний светодиод будет установлен в корпус таким образом, чтобы его хорошо было видно.
Давайте сделаем это.
Необходимые компоненты
- Макетная плата
- Светодиод
- Сопротивление 220 Ом
- Несколько проводов-перемычек
Схема сборки
Скетч
Скетч остается прежним.
Результат
Мы видим как одновременно мигают встроенный и подключенный нами светодиоды:
Объяснение
Слаботочный светодиод должен быть защищен с помощью резистора, подключенного последовательно со светодиодом. Обычно для этого используют резистор 220 Ом, поскольку напряжение на пине платы составляет 5V.
Часть 3. Мигание несколькими светодиодами
Аналогичным образом возможно подключить светодиод к любому цифровому пину (с 2 по 13 пин). Давайте подключим еще один светодиод и будем теперь их переключать по очереди каждую секунду.
Необходимые компоненты
В дополнение к компонентам предыдущего опыта нам понадобится еще одна пара светодиода и резистора.
Схема сборки
Подключим 2й светодиод к порту 12.
Скетч
Параллельно мы немного оптимизируем программу, вынеся номера пинов в константы программы, а временную задержку в глобальные переменные:
/**
* (C) jarduino.ru 2019
* Изучение ардуино через опыты.
*
* Опыт №2. Поочередное мигание двумя светодиодами
*/
// Иницилизация глобальных констант и переменных:
const byte pin_led1 = 13; // пин для светодиода 1
const byte pin_led2 = 12; // пин для светодиода 2
const unsigned int nDelay = 1000; // продолжительность свечения светодиода
bool bLedOn = false; // хранит текущее положение мигалки. если bLedOn = true, то горит светодиод 1.
// настройка платы
void setup()
{
// Перевести пины для подключения светодиодов в режим вывода:
pinMode(pin_led1, OUTPUT);
pinMode(pin_led2, OUTPUT);
}
// главный цикл программы
void loop()
{
// Каждый новый цикл инвертирует состояние светодиода
// Инвертиировать состояние светодиодов:
bLedOn = !bLedOn;
// Выставить противоположные положения светодиодов:
digitalWrite(pin_led1, bLedOn);
digitalWrite(pin_led2, !bLedOn);
// Пауза программы:
delay(nDelay);
}
Результат
Вы результате вы увидите мигание нескольких светодиодов.
Учим C/С++
Здесь появились новые ключевые слова и конструкции:
bool – тип данных для логических переменных принимающих значения 1 или 0 (или true или false)
byte – тип данных, для переменных принимающих целые числа от 0 до 255. Подходящий тип для хранения номеров пина.
unsigned int – тип данных, представляющий целые числа от 0 до 65535. С помощью переменной такого типа можно хранить временные задержки до 65 секунд.
Хорошей практикой считается избегание любых константных значений в программе, вынося их в переменные или именованные константы, которые легко можно изменить в одном месте программы.
Приставка const перед объявлением переменной говорит о том, что значение данной переменной нельзя изменить в ходе выполнения программы.
Хорошей практикой считается использование const везде, где это возможно. Это позволит выявить многие логические ошибки еще на этапе компиляции программы, а также это позволит компилятору соптимизировать исполняемый код, сократив используемую память.
Заключение
В этом опыте мы разобрались как работать с цифровыми пинами на плате на примере управления светодиодами.
Также мы познакомились с новыми элементами языка программирования:
- типы данных bool, byte, unsigned int,
- переменными и константами.
Оставляйте, пожалуйста, свои комментарии, делитесь со своими друзьями, задавайте вопросы или присылайте замечания!
Оставляйте, пожалуйста, свои комментарии, делитесь со своими друзьями, задавайте вопросы или присылайте замечания!