Урок 11-12.
Тема: ШИМ и смешение цветов.
Для любознательных https://wiki.amperka.ru/
Список деталей для экспериментов Как обмануть наши чувства: цифровой и аналоговый сигналы, ШИМ, частота, инертность восприятия.
Прочитайте п.6 стр. 67
§ 1 плата Arduino Uno
§ 1 беспаечная макетная плата
§ 3 резистора номиналом 220 Ом
§ 1 светодиод
§ 1 трехцветный светодиод
§ 6 проводов «папа-папа»
1 схема. Создадим устройство, которое будет плавно управлять яркостью подключенного светодиода: набирать и плавно угасать.
1. Соберите схему: светодиод любого цвета, подключенный через резистор на 220 Ом, провода, плата. Светодиод подключен к 9-ми пину. Рис 6.2.
Напишите скетч: стр. 69.
int brightness = 0; // изначальная яркость светодиода int fadeAmount = 5; // скорость затухания/нарастания яркости void setup() { // инициализируем пин 9, как работающий на выход pinMode(9, OUTPUT); } void loop() { // изменяем яркость светодиода analogWrite(9, brightness); // на каждом шаге увеличиваем яркость на скорость затухания brightness = brightness + fadeAmount; // в конце затухания меняем его на нарастание яркости и наоборот if (brightness == 0 || brightness == 255) fadeAmount = -fadeAmount; // ждём 30 миллисекунд delay(30); } |
3. Загрузите программу.
Человеческий глаз воспринимает каждый из многочисленных цветов и оттенков окружающего мира как сумму взятых в различных пропорциях трёх базовых цветов — красного, зелёного и синего. Например, пурпурный цвет — это сумма красного и синего, жёлтый – сумма красного и зелёного, голубой — сумма зелёного и синего цветов. Сумма красного, зелёного и синего цветов воспринимается человеком как белый цвет, а их отсутствие — как чёрный цвет.
2563 = 16 777 216 цветов
Задание для самостоятельного решения
|
1. Отключите питание платы, подключите к порту 5 еще один светодиод. Измените код таким образом, чтобы второй светодиод светился на 1/8 от яркости первого
эксперимент. Как при помощи светодиода сделать радугу: трехцветный светодиод
На кромке светодиода есть небольшой скос, это ключ, он указывает на ножку красного светодиода, дальше идет общая, дальше зеленый и синий.
Подключите ногу КРАСНОГО светодиода к резистору 220 Ом. Подключите другой конец резистора в порт Arduino pin9.
Подключите Общий вывод к земле GND.
Подключите ногу ЗЕЛЕНОГО к резистору 220 Ом.
Подключите другой конец резистора в порт Arduino pin10.
Подключите ногу СИНЕГО к резистору 220 Ом.
Подключите другой конец резистора в порт Arduino pin11.
int brightness = 255; // текущее значение яркости int fadeAmount = 5; // скорость затухания // пины, на которых расположен светодиод int leds[3] = {9, 10, 11}; // индексы пинов, с которыми мы работаем // в текущий момент int curPin[2] = {0, 1}; void setup() { for(int i = 0; i < 3; i++) pinMode(leds[i], OUTPUT); } void loop() { // подаём на два разных пина значение равное // brightness и 255-brightness analogWrite(leds[curPin[0]], brightness); analogWrite(leds[curPin[1]], 255 - brightness); // уменьшаем значение brightness // на скорость затухания brightness = brightness - fadeAmount; // когда значение brightness становится равным // нулю, меняем номера пинов, с которыми мы // работаем if (brightness == 0) { curPin[0] = (curPin[0] + 1) % 3; curPin[1] = (curPin[1] + 1) % 3; brightness = 255; } delay(30); } |
Итак, плавно можно управлять не только светодиодами, но моторами, и другими компонентами.
|
А как управлять RGB светодиодом при помощи датчика температуры? То есть менять цвета от зависимости температуры.
это нужно делать в таком порядке:
1. Подключить датчик температуры. И на базовых примерах научится с ним работать (получать температуру, отправлять в Serial, зажигать встроенный светодиод при достижении определенной температуры).
2. Отложить в сторону предыдущий скетч и датчик, взять обычный светик (или опять-таки встроенный) и научится управлять его яркостью.
3. Добавить еще два светка, и научится "рулить яркостью" стразу троих, для начала выставлять их в какие-то предопределенные значения.
4. Выкинуть два светика, и научится менять яркость одного в зависимости от температуры. Вначале линейно (чем выше температура - тем ярче светик)
5. То же самое, но зависимость уже не линейная, а по какой-то "формуле" (экспонента, по квадратичному закону и т.п.) или по "табличным значениям".
6. То же самое, но уже для трех светиков. Но табличка связей "температру-яркость" - для каждого светодиода своя.
7. Смотрим на свой RGB светодиод. Если каждый его канал ждерт больше 40-ма, то делаем развязку силовыми ключами или ULN-кой (вообщем гуглим "ардуина управление мощьной нагрузкой"). Если <=40ma, то пропускаем этот пункт
8. Заменяем три светика на свой RGB диод.
9. Радуемся.