- •Курс «Основы робототехники». Занятие 3 Управление светодиодами
- •3.1. Подключение внешнего светодиода с использованием токоограничивающего резистора
- •3.2. Макетная плата
- •Практическое занятие 1. Простой светофор
- •Практическое занятие 2. Светофор с миганием
- •3.3. Управление уровнем напряжения. Аналоговый выход – команда analogWrite
- •Практическое занятие 3. Изменение яркости светодиода
- •Практическое занятие 4. Изменение яркости пяти светодиодов
- •3.4. Команда для получения случайных чисел random
- •Практическое занятие 5. Случайная яркость пяти светодиодов
- •Домашнее задание
3.3. Управление уровнем напряжения. Аналоговый выход – команда analogWrite
Команда analogWrite (номер пина, уровень) позволяет подать на определенный пин Arduino (поддерживающих данную функцию – 3, 5, 6, 9, 10, 11 – на Arduino Uno отмечены штрихом) значение от 0 до 255, что соответствует напряжению от 0 В до +5 В на контакте. Примеры:
analogWrite (6, 200); – напряжение на пине 6 станет равным 5·200/255= 3,9 В
analogWrite (11, 50); – напряжение на пине 11 станет равным 5·50/255= 1 В
Таким образом, постепенно увеличивая/уменьшая переданное вanalogWrite значение можно добиться плавного роста/падения напряжения на выходе. Подключенный к одному из PWM-портов Arduino (3, 5, 6, 9, 10, 11) светодиод будет плавно загораться и затухать (fading).
Примечание: используя данную команду, можно плавно регулировать скорость вращения моторов, яркость освещения, уровень температуры, скорость подачи воды при поливе и т.д.
Практическое занятие 3. Изменение яркости светодиода
Нужные компоненты:
один светодиод с подпаянным резистором (цвет – любой)
один провод цвета, аналогичного цвету светодиода со штырьками на обоих концах
один черный или синий провод со штырьками на обоих концах
соедините контакт с резистором (+) с цифровым пином 3 Arduino, а другой контакт светодиода (–) – с нижней линией контактов Gnd
откройте программу Файл / Примеры / Analog / Fading
исправьте номер пина, к которому подключен светодиод: ledPin = 9
подключите контроллер к компьютеру, загрузите программу и убедитесь, что светодиод меняет свою яркость
int ledPin = 9; // светодиод подключен к цифровому пину 3 void setup() { // Нет необходимости вызвать функцию pinMode для команды analogWrite } void loop() { // меняем значение fadeValue от 0 до 255 с шагом 5 for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { analogWrite(ledPin, fadeValue); // посылаем значение от 0 до 255 на пин со // светодиодом, напряжение на нем меняется от 0 до 5 В и соответственно меняется яркость delay(30); // ждем 30 миллисекунд } // меняем значение fadeValue от 255 до 0 с шагом 5 for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { analogWrite(ledPin, fadeValue); // посылаем значение от 255 до 0 на пин со // светодиодом, напряжение на нем меняется от 5 до 0 В и соответственно меняется яркость delay(30); // ждем 30 миллисекунд } } |
Примечание: используемые светодиоды достигают максимальной яркости при напряжении, меньшем 5 В. Для большей наглядности изменения яркости можно изменить в коде программы 255 на 100, а также поставить бОльший шаг времени в delay.
Практическое занятие 4. Изменение яркости пяти светодиодов
Нужные компоненты:
пять светодиодов с подпаянными резисторами: красный, желтый, зеленый, синий, белый
пять соединительных проводов соответствующих светодиодам цветов со штырьками на обоих концах
четыре соединительных провода синего или черного цвета со штырьками на обоих концах
Попробуем управление яркостью одновременно пяти светодиодов пяти разных цветов. Для начала будем устанавливать всем одинаковый уровень яркости
подключите контакт с резистором (+ светодиода) каждого светодиода к одному из пинов, поддерживающих управление уровнем напряжения (3, 6, 9, 10, 11)
откройте программу Файл / При меры / Analog / Fading и модифицируйте ее для одновременного управления яркостью пяти светодиодов:
// создадим переменные для хранения номеров контактов светодиодов
int led_1 = 3;
int led_2 = 6;
int led_3 = 9;
int led_4 = 10;
int led_5 = 11;
void setup() {
// Нет необходимости использовать функцию pinMode для команды analogWrite
}
void loop() {
// меняем значение fadeValue от 0 до 255 с шагом 5
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// посылаем значение fadeValue на каждый пин со светодиодом
analogWrite(led_1, fadeValue);
analogWrite(led_2, fadeValue);
analogWrite(led_3, fadeValue);
analogWrite(led_4, fadeValue);
analogWrite(led_5, fadeValue);
delay(30); // ждем 30 миллисекунд
}
// меняем значение fadeValue от 255 до 0 с шагом 5
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// посылаем значение fadeValue на каждый пин со светодиодом
analogWrite(led_1, fadeValue);
analogWrite(led_2, fadeValue);
analogWrite(led_3, fadeValue);
analogWrite(led_4, fadeValue);
analogWrite(led_5, fadeValue);
delay(30); // ждем 30 миллисекунд
}
}
Загрузите данную программу в контроллер и испытайте
Разбирать схему не надо, она понадобится в следующем занятии