- Необходими материали:
- LDR:
- RGB LED:
- Електрическа схема:
- Обяснение на програмирането:
- Работа на цветна смесителна лампа Arduino:
Ами ако можем да генерираме различни цветове с помощта на един RGB светодиод и да направим ъгъла на стаята си по-привлекателен? И така, тук е проста лампа за смесване на цветове, базирана на Arduino, която може да промени цвета, когато има промяна в светлината в стаята. Така тази лампа автоматично ще промени цвета си в зависимост от светлинните условия в стаята.
Всеки цвят е комбинацията от червен, зелен и син цвят. Така че можем да генерираме всеки цвят, като използваме червени, зелени и сини цветове. Така че тук ще варираме ШИМ, т.е. интензивността на светлината върху LDR. Това допълнително ще промени интензивността на червения, зеления и синия цвят в RGB LED и ще бъдат произведени различни цветове.
По-долу таблицата показва цветовите комбинации със съответната промяна в работните цикли.
Необходими материали:
- 1 x Arduino UNO
- 1 х Макет
- 3 x 220 ома резистори
- 3 х 1 килохм резистори
- Джъмперни проводници
- 3 x LDR
- 3 x цветни ленти (червено, зелено, синьо)
- 1 x RGB LED
LDR:
Тук в тази схема ще използваме фоторезистор (или резистор, зависим от светлината, LDR или фотопроводима клетка). LDR са направени от полупроводникови материали, за да им позволят да имат своите чувствителни на светлина свойства. Тези LDR или ФОТОРЕЗИСТОРИ работят на принципа на „Фотопроводимост“. Сега този принцип казва, че когато светлината падне върху повърхността на LDR (в този случай), проводимостта на елемента се увеличава или с други думи, съпротивлението на LDR пада, когато светлината пада върху повърхността на LDR. Това свойство на намаляване на съпротивлението за LDR се постига, тъй като е свойство на полупроводников материал, използван на повърхността.
Тук се използват три LDR сензора за управление на яркостта на отделните червени, зелени и сини LED вътре в RGB Led. Научете повече за управлението на LDR с Arduino тук.
RGB LED:
Има два вида RGB светодиоди, единият е общ катоден тип (общ отрицателен), а другият е общ аноден тип (общ положителен). В CC (Common Cathode или Common Negative) ще има три положителни терминала, всеки терминал представляващ цвят и един отрицателен терминал, представящ и трите цвята.
В нашата схема ще използваме тип CA (Common Anode или Common Positive). В типа на общия анод, ако искаме ЧЕРВЕНИЯ светодиод да е включен, трябва да заземим червения светодиоден щифт и да захраним общия положител. Същото важи и за всички светодиоди. Научете тук, за да свържете RGB LED с Arduino.
Електрическа схема:
Пълната схема на този проект е дадена по-горе. Връзката + 5V и заземяване, показана на електрическата схема, може да бъде получена от 5V и заземяващия щифт на Arduino. Самият Arduino може да се захранва от вашия лаптоп или през DC жака с помощта на 12V адаптер или 9V батерия.
Ще използваме ШИМ, за да променим яркостта на RGB led. Можете да научите повече за ШИМ тук. Ето някои примери за PWM с Arduino:
- Променливо захранване от Arduino Uno
- DC управление на двигателя с помощта на Arduino
- Генератор на тонове на базата на Arduino
Обяснение на програмирането:
Първо декларираме всички входни и изходни щифтове, както е показано по-долу.
const байт red_sensor_pin = A0; const байт green_sensor_pin = A1; const байт blue_sensor_pin = A2; const байт green_led_pin = 9; const байт blue_led_pin = 10; const байт red_led_pin = 11;
Обявете началните стойности на сензорите и светодиодите като 0.
неподписан int red_led_value = 0; неподписан int blue_led_value = 0; неподписан int green_led_value = 0; неподписан int red_sensor_value = 0; неподписан int blue_sensor_value = 0; неподписан int green_sensor_value = 0; void setup () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
В секцията на цикъла ще вземем изход на три сензора с analogRead (); функция и се съхранява в три различни променливи.
невалиден цикъл () { red_sensor_value = analogRead (red_sensor_pin); забавяне (50); blue_sensor_value = analogRead (blue_sensor_value); забавяне (50); green_sensor_value = analogRead (green_sensor_pin);
Отпечатайте тези стойности върху серийния монитор за отстраняване на грешки
Serial.println ("Сурови стойности на сензора:"); Serial.print ("\ t Червено:"); Serial.print (red_sensor_value); Serial.print ("\ t Синьо:"); Serial.print (blue_sensor_value); Serial.print ("\ t Зелено:"); Serial.println (green_sensor_value);
Ще получим 0-1023 стойности от сензорите, но нашите PWM щифтове Arduino имат 0-255 стойности като изход. Така че трябва да преобразуваме нашите сурови стойности в 0-255. За това трябва да разделим суровите стойности на 4 ИЛИ просто можем да използваме функцията за картографиране на Arduino, за да конвертираме тези стойности.
red_led_value = red_sensor_value / 4; // дефиниране на червен светодиод blue_led_value = blue_sensor_value / 4; // дефиниране на син светодиод green_led_value = green_sensor_value / 4; // дефинираме Green Led
Отпечатайте картографираните стойности на сериен монитор
Serial.println ("Картирани стойности на сензора:"); Serial.print ("\ t Червено:"); Serial.print (red_led_value); Serial.print ("\ t Синьо:"); Serial.print (blue_led_value); Serial.print ("\ t Зелено:"); Serial.println (green_led_value);
Използвайте analogWrite (), за да зададете изход за RGB LED
analogWrite (red_led_pin, red_led_value); // посочваме червен LED analogWrite (blue_led_pin, blue_led_value); // посочваме син LED analogWrite (green_led_pin, green_led_value); // посочва зелено
Работа на цветна смесителна лампа Arduino:
Тъй като ние използваме три LDR, така че, когато светлината пада върху тези сензори, неговото съпротивление се променя в резултат на това напреженията се променят и при аналоговите щифтове на Arduino, който действа като входни щифтове за сензори.
Когато интензивността на светлината се промени на тези сензори, съответният светодиод в RGB ще свети с промяната на съпротивлението и имаме различно смесване на цветовете в RGB светодиода с използване на ШИМ.