- Wymagane materiały:
- LDR:
- Dioda LED RGB:
- Schemat obwodu:
- Objaśnienie programowania:
- Działanie lampy mieszającej Arduino:
A jeśli możemy wygenerować różne kolory za pomocą pojedynczej diody RGB i uatrakcyjnić narożnik naszego pokoju? Oto prosta lampa do mieszania kolorów oparta na Arduino, która może zmieniać kolor, gdy zmienia się światło w pomieszczeniu. Tak więc ta lampa automatycznie zmienia kolor w zależności od warunków oświetlenia w pomieszczeniu.
Każdy kolor to połączenie koloru czerwonego, zielonego i niebieskiego. Możemy więc wygenerować dowolny kolor, używając kolorów czerwonego, zielonego i niebieskiego. Więc tutaj będziemy zmieniać PWM, czyli intensywność światła na LDR. Spowoduje to dalszą zmianę intensywności koloru czerwonego, zielonego i niebieskiego w diodach LED RGB i zostaną wyprodukowane różne kolory.
Poniższa tabela przedstawia kombinacje kolorów z odpowiednimi zmianami cykli pracy.
Wymagane materiały:
- 1 x Arduino UNO
- 1 x płyta do krojenia chleba
- Rezystory 3 x 220 omów
- Rezystory 3 x 1 kiloom
- Przewody połączeniowe
- 3 x LDR
- 3 x kolorowe paski (czerwony, zielony, niebieski)
- 1 x dioda LED RGB
LDR:
W tym obwodzie użyjemy fotorezystora (lub rezystora zależnego od światła, LDR lub fotoprzewodzącego ogniwa). LDR są wykonane z materiałów półprzewodnikowych, dzięki czemu mają właściwości wrażliwe na światło. Te LDR lub FOTO REZYSTORY działają na zasadzie „przewodnictwa fotoelektrycznego”. Ta zasada mówi, że ilekroć światło pada na powierzchnię LDR (w tym przypadku), przewodnictwo elementu wzrasta lub innymi słowy, opór LDR spada, gdy światło pada na powierzchnię LDR. Tę właściwość spadku rezystancji dla LDR uzyskuje się, ponieważ jest to właściwość materiału półprzewodnikowego zastosowanego na powierzchni.
Tutaj trzy czujniki LDR są używane do kontrolowania jasności poszczególnych czerwonych, zielonych i niebieskich diod LED wewnątrz diody RGB. Dowiedz się więcej o sterowaniu LDR za pomocą Arduino tutaj.
Dioda LED RGB:
Istnieją dwa rodzaje diod LED RGB, jedna to wspólna katoda (wspólny ujemny), a druga to wspólna anoda (wspólny dodatni). W CC (Common Cathode lub Common Negative) będą trzy dodatnie zaciski, każdy zacisk reprezentujący kolor i jeden zacisk ujemny reprezentujący wszystkie trzy kolory.
W naszym obwodzie zastosujemy typ CA (Common Anode lub Common Positive). W typie wspólnej anody, jeśli chcemy, aby CZERWONA dioda LED była WŁĄCZONA, musimy uziemić pin CZERWONEJ diody LED i zasilić wspólny dodatni. To samo dotyczy wszystkich diod LED. Dowiedz się tutaj, jak połączyć diody LED RGB z Arduino.
Schemat obwodu:
Pełny schemat obwodu tego projektu podano powyżej. Połączenie + 5V i uziemienie pokazane na schemacie obwodu można uzyskać z 5V i pinu uziemiającego Arduino. Samo Arduino można zasilać z laptopa lub przez gniazdo DC za pomocą adaptera 12V lub baterii 9V.
Użyjemy PWM do zmiany jasności diody RGB. Możesz dowiedzieć się więcej o PWM tutaj. Oto kilka przykładów PWM z Arduino:
- Zmienny zasilacz Arduino Uno
- Sterowanie silnikiem DC za pomocą Arduino
- Generator tonów oparty na Arduino
Objaśnienie programowania:
Najpierw deklarujemy wszystkie piny wejściowe i wyjściowe, jak pokazano poniżej.
const bajt red_sensor_pin = A0; const bajt green_sensor_pin = A1; const bajt blue_sensor_pin = A2; bajt const green_led_pin = 9; bajt const blue_led_pin = 10; bajt const red_led_pin = 11;
Zadeklaruj początkowe wartości czujników i diod jako 0.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned 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); }
W sekcji pętli weźmiemy wyjście trzech czujników z funkcją analogRead (); funkcjonować i przechowywać w trzech różnych zmiennych.
void loop () { red_sensor_value = analogRead (red_sensor_pin); opóźnienie (50); blue_sensor_value = analogRead (blue_sensor_pin); opóźnienie (50); green_sensor_value = analogRead (green_sensor_pin);
Wydrukuj te wartości na monitorze szeregowym w celu debugowania
Serial.println ("Nieprzetworzone wartości czujnika:"); Serial.print ("\ t czerwony:"); Serial.print (red_sensor_value); Serial.print ("\ t Blue:"); Serial.print (blue_sensor_value); Serial.print ("\ t Zielony:"); Serial.println (green_sensor_value);
Otrzymamy wartości 0-1023 z czujników, ale nasze piny Arduino PWM mają wartości 0-255 na wyjściu. Musimy więc przekonwertować nasze surowe wartości na 0-255. W tym celu musimy podzielić surowe wartości przez 4 LUB po prostu możemy użyć funkcji mapowania Arduino, aby przekonwertować te wartości.
red_led_value = red_sensor_value / 4; // zdefiniuj czerwoną diodę LED blue_led_value = blue_sensor_value / 4; // zdefiniuj niebieską diodę LED green_led_value = green_sensor_value / 4; // zdefiniuj zieloną diodę
Wydrukuj zmapowane wartości do monitora szeregowego
Serial.println ("Zmapowane wartości czujnika:"); Serial.print ("\ t czerwony:"); Serial.print (red_led_value); Serial.print ("\ t Blue:"); Serial.print (blue_led_value); Serial.print ("\ t Zielony:"); Serial.println (green_led_value);
Użyj analogWrite (), aby ustawić wyjście dla diody LED RGB
analogWrite (red_led_pin, red_led_value); // wskaż czerwoną diodę analogWrite (blue_led_pin, blue_led_value); // wskaż niebieską diodę analogWrite (green_led_pin, green_led_value); // wskazują na zielony
Działanie lampy mieszającej Arduino:
Ponieważ używamy trzech LDR, więc gdy światło pada na te czujniki, jego rezystancja zmienia się, w wyniku czego zmienia się również napięcie na pinach analogowych Arduino, które działają jako piny wejściowe dla czujników.
Kiedy natężenie światła zmienia się na tych czujnikach, odpowiednia dioda LED w RGB będzie świecić wraz ze zmianą rezystancji i mamy różne mieszanie kolorów w diodach RGB za pomocą PWM.