- Необхідні матеріали:
- LDR:
- Світлодіод RGB:
- Кругова діаграма:
- Пояснення програмування:
- Працює змішувальна лампа Arduino:
Що робити, якщо ми можемо генерувати різні кольори за допомогою одного RGB-світлодіода і зробити кут нашої кімнати більш привабливим? Отже, ось проста аркуїнова змішувальна лампа на основі Arduino, яка може змінювати колір, коли в кімнаті змінюється світло. Таким чином, ця лампа автоматично змінить свій колір відповідно до освітленості в кімнаті.
Кожен колір - це поєднання червоного, зеленого та синього кольорів. Тож ми можемо генерувати будь-який колір, використовуючи червоний, зелений та синій кольори. Отже, тут ми будемо змінювати ШІМ, тобто інтенсивність світла на LDR. Це додатково змінить інтенсивність червоного, зеленого та синього кольорів у RGB LED, і будуть випускатися різні кольори.
Нижче в таблиці наведено комбінації кольорів із відповідною зміною робочих циклів.
Необхідні матеріали:
- 1 x Arduino UNO
- 1 х Макет
- 3 резистори на 220 Ом
- 3 резистори на 1 кілограм
- Провід перемички
- 3 x LDR
- 3 x кольорові смужки (червона, зелена, синя)
- 1 x RGB світлодіод
LDR:
Ми будемо використовувати фоторезистор (або світлозалежний резистор, LDR або фотопровідну комірку) тут, у цій схемі. LDR виготовляються з напівпровідникових матеріалів, щоб вони мали свої світлочутливі властивості. Ці LDR або ФОТОРЕЗИСТОРИ працюють за принципом “Фотопровідність”. Тепер, що говорить цей принцип, це те, що коли світло падає на поверхню LDR (у цьому випадку) провідність елемента збільшується або іншими словами, опір LDR падає, коли світло падає на поверхню LDR. Ця властивість зменшення опору для LDR досягається, оскільки це властивість напівпровідникового матеріалу, що використовується на поверхні.
Тут три датчики LDR використовуються для управління яскравістю окремих червоних, зелених та синіх світлодіодів всередині світлодіода RGB. Дізнайтеся більше про управління LDR за допомогою Arduino тут.
Світлодіод RGB:
Існує два типи світлодіодів RGB, один - це загальний катодний тип (загальний негативний), а інший - загальний анодний тип (загальний позитивний). У CC (загальний катод або загальний негатив) буде три позитивних термінали, кожен термінал представляє колір і один негативний термінал, що представляє всі три кольори.
У нашій схемі ми будемо використовувати тип CA (Common Anode або Common Positive). У типі загального анода, якщо ми хочемо, щоб ЧЕРВОНИЙ світлодіод був увімкнений, нам потрібно заземлити червоний світлодіодний штифт і подати загальний позитив. Те саме стосується всіх світлодіодів. Дізнайтеся тут про взаємодію RGB LED з Arduino.
Кругова діаграма:
Повна принципова схема цього проекту наведена вище. З'єднання + 5 В і заземлення, показане на електричній схемі, можна отримати за допомогою 5 В і заземлення Arduino. Сам Arduino можна живити від вашого ноутбука або через роз'єм постійного струму за допомогою адаптера 12 В або акумулятора 9 В.
Ми будемо використовувати ШІМ, щоб змінити яскравість світлодіода RGB. Ви можете дізнатись більше про ШІМ тут. Ось кілька прикладів ШІМ з Arduino:
- Змінний блок живлення від Arduino Uno
- Керування двигуном постійного струму за допомогою 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.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; без підпису int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned 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_value);
Друкуйте ці значення на послідовному моніторі для налагодження
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 значень від датчиків, але наші ШІМ 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); // вказуємо червоний світлодіод analogWrite (blue_led_pin, blue_led_value); // вказуємо синій світлодіод analogWrite (green_led_pin, green_led_value); // позначаємо зеленим
Працює змішувальна лампа Arduino:
Оскільки ми використовуємо три LDR, то, коли світло падає на ці датчики, його опір змінюється, в результаті напруга також змінюється на аналогових виводах Arduino, який виконує роль вхідних висновків для датчиків.
Коли інтенсивність світла змінюється на цих датчиках, відповідний світлодіод у RGB буде світитися із зміною рівня опору, і ми маємо різне змішування кольорів у світлодіодах RGB за допомогою ШІМ.