- Nødvendige materialer:
- LDR:
- RGB LED:
- Kredsløbsdiagram:
- Programmeringsforklaring:
- Arbejd af Arduino farveblandingslampe:
Hvad hvis vi kan generere forskellige farver ved hjælp af en enkelt RGB-led og gøre vores roms hjørne mere attraktivt? Så her er en simpel Arduino-baseret farveblandingslampe, som kan skifte farve, når der skiftes lys i rummet. Så denne lampe ændrer automatisk sin farve i henhold til lysforholdene i rummet.
Hver farve er kombinationen af rød, grøn og blå farve. Så vi kan generere en hvilken som helst farve ved hjælp af røde, grønne og blå farver. Så her vil vi variere PWM dvs. lysintensiteten på LDR'er. Det vil yderligere ændre intensiteten af rød, grøn og blå farve i RGB LED, og forskellige farver vil blive produceret.
Nedenstående tabel viser farvekombinationerne med de respektive ændringer i arbejdscyklusser.
Nødvendige materialer:
- 1 x Arduino UNO
- 1 x brødplade
- 3 x 220 ohm modstande
- 3 x 1-kilohm modstande
- Jumper ledninger
- 3 x LDR'er
- 3 x farvede strimler (rød, grøn, blå)
- 1 x RGB LED
LDR:
Vi bruger fotoresistor (eller lysafhængig modstand, LDR eller fotoledende celle) her i dette kredsløb. LDR'er er lavet af halvledermaterialer for at gøre det muligt for dem at have deres lysfølsomme egenskaber. Disse LDR'er eller FOTOMODSTANDE fungerer på princippet om "Fotokonduktivitet". Hvad dette princip siger, er, at når lys falder på overfladen af LDR (i dette tilfælde), øges ledningsevnen af elementet, eller med andre ord, modstanden af LDR falder, når lyset falder på overfladen af LDR. Denne egenskab ved faldet i modstand for LDR opnås, fordi det er en egenskab af halvledermateriale anvendt på overfladen.
Her bruges tre LDR-sensorer til at kontrollere lysstyrken på individuelle røde, grønne og blå LED'er inde i RGB Led. Lær mere om styring af LDR med Arduino her.
RGB LED:
Der er to typer RGB-LED'er, den ene er almindelig katodetype (almindelig negativ) og den anden er almindelig anodetype (almindelig positiv) type. I CC (Common Cathode eller Common Negative) vil der være tre positive terminaler, hver terminal repræsenterer en farve og en negativ terminal, der repræsenterer alle tre farver.
I vores kredsløb skal vi bruge typen CA (Common Anode eller Common Positive). I Common Anode-typen, hvis vi ønsker, at RØD LED skal være TIL i, er vi nødt til at jordforbinde den RØDE LED-pin og tænde den fælles positive. Det samme gælder for alle lysdioder. Lær her at interface RGB LED med Arduino.
Kredsløbsdiagram:
Det komplette kredsløbsdiagram for dette projekt er givet ovenfor. + 5V og jordforbindelsen vist i kredsløbsdiagrammet kan fås fra 5V og jordstiften på Arduino. Arduino selv kan drives fra din bærbare computer eller gennem DC-stikket ved hjælp af en 12V adapter eller 9V batteri.
Vi bruger PWM til at ændre lysstyrken på RGB-ledet. Du kan lære mere om PWM her. Her er nogle PWM-eksempler med Arduino:
- Variabel strømforsyning af Arduino Uno
- DC Motor Control ved hjælp af Arduino
- Arduino-baseret tonegenerator
Programmeringsforklaring:
Først erklærer vi alle input og output pins som vist nedenfor.
const byte red_sensor_pin = A0; const byte green_sensor_pin = A1; const byte blue_sensor_pin = A2; const byte green_led_pin = 9; const byte blue_led_pin = 10; const byte red_led_pin = 11;
Angiv startværdier for sensorer og lysdioder som 0.
usigneret int red_led_value = 0; usigneret int blue_led_value = 0; usigneret int green_led_value = 0; usigneret int red_sensor_value = 0; usigneret int blue_sensor_value = 0; usigneret int green_sensor_value = 0; ugyldig opsætning () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
I loop-sektionen tager vi output fra tre sensorer med analogRead (); funktion og gem i tre forskellige variabler.
ugyldig sløjfe () { red_sensor_value = analogRead (red_sensor_pin); forsinkelse (50); blue_sensor_value = analogRead (blue_sensor_pin); forsinkelse (50); green_sensor_value = analogRead (green_sensor_pin);
Udskriv disse værdier på den serielle skærm til fejlfindingsformål
Serial.println ("Rå sensorværdier:"); Serial.print ("\ t Rød:"); Serial.print (rød_sensor_værdi); Serial.print ("\ t Blå:"); Serial.print (blue_sensor_value); Serial.print ("\ t Green:"); Serial.println (grøn_sensor_værdi);
Vi får 0-1023 værdier fra sensorerne, men vores Arduino PWM-ben har 0-255 værdier som output. Så vi er nødt til at konvertere vores rå værdier til 0-255. Til det er vi nødt til at dele råværdier med 4 ELLER simpelthen kan vi bruge kortfunktion af Arduino til at konvertere disse værdier.
red_led_value = red_sensor_value / 4; // definer rød LED blue_led_value = blue_sensor_value / 4; // definer blå LED grøn_led_værdi = grøn_sensor_værdi / 4; // definer Green Led
Udskriv kortlagte værdier til seriel skærm
Serial.println ("Kortlagte sensorværdier:"); Serial.print ("\ t Rød:"); Serial.print (red_led_value); Serial.print ("\ t Blå:"); Serial.print (blue_led_value); Serial.print ("\ t Green:"); Serial.println (grøn_led_værdi);
Brug analogWrite () til at indstille output til RGB LED
analogWrite (red_led_pin, red_led_value); // angive rød LED analogWrite (blue_led_pin, blue_led_value); // indikere blå LED analogWrite (green_led_pin, green_led_value); // angive grøn
Arbejd af Arduino farveblandingslampe:
Da vi bruger tre LDR'er, så når lys, der falder ind på disse sensorer, ændres modstanden, hvilket resulterer i, at spændinger også ændres ved analoge ben på Arduino, som fungerer som indgangsstift til sensorer.
Når lysintensiteten ændres på disse sensorer, lyser den respektive led i RGB med modstandsændring, og vi har forskellige farveblandinger i RGB-led ved hjælp af PWM.