Задания и мысли
RGB светодиод — яркий представитель семейства светодиодов, с помощью которого можно сделать много интересных артефактов. Однако, в наше время на замену простому RGB-светодиоду приходят его более продвинутые версии, которые имеют на борту встроенный микроконтроллер. Например, светодиодный модуль ws2812 или модуль Пиксель APA102. О них мы поговорим на будущих уроках.
Задания
- Индикатор температуры. Добавим в схему термистор и подключим его к аналоговому входу. Светодиод должен менять свой цвет в зависимости от температуры термистора. Чем ниже температура, тем более синий цвет, а чем выше, тем более красный.
- RGB лампа с регулятором. Добавим в схему три переменных резистора и подключим их к аналоговым входам. Программа должна непрерывно считывать значения резисторов и менять цвет соответствующей компоненты RGB-светодиода.
Не знаю, как на предыдущих версиях Arduino IDE, но на моей (1.8.5) скетч плавного изменения яркости не заработал — отладчик дюже ругался на (переменную?) dim. Немного пошукав по сети, добавил сразу после строчки [const byte rgbPins[3] = {6,5,3}; (изменил порядок под свою раскладку цветов)] такую строчку: [int dim = 1;] — всё заработало! Здесь число dim меняет шаг
дискретности уровня свечения. Чем меньше число, тем меньше шаг и
плавнее изменение яркости.
В коде была ошибка, исправили. Спасибо за комментарий!
Cпасибо очень интересно. и познавательно.
Довольно прикольно. Интересно, а на этот RGB светодиод на каждый выход(цвет) добавить три потенциометра и через них регулировать свечение цвета и яркость?
Разумеется можно. Три потенциометра подключаются к трем аналоговым входам контроллера. Программа берет с них значения, и пропорционально передает их на три контакта RGB светодиода.
скетч рабочий и компактный .Я применил задержку — 50,так мне кажется лучше. Уно- китайская.
вот код Ж
убрал переменную dim , работает так же вот код : const byte rgbPins[3] = {3,5,6};
void setup() {
for(byte i=0; i=0; i—){
analogWrite( rgbPins[0], i );
analogWrite( rgbPins[1], (255-i) );
delay(10);
}
// гасим зеленый, параллельно разжигаем синий
for(int i=255; i>=0; i—){
analogWrite( rgbPins[1], i );
analogWrite( rgbPins[2], (255-i));
delay(10);
}
// гасим синий, параллельно разжигаем красный
for(int i=255; i>=0; i—){
analogWrite( rgbPins[2], i);
analogWrite( rgbPins[0], (255-i) );
delay(10);
}