- Materiali richiesti:
- LDR:
- LED RGB:
- Schema elettrico:
- Spiegazione della programmazione:
- Funzionamento della lampada di miscelazione dei colori Arduino:
E se riusciamo a generare colori diversi utilizzando un singolo led RGB e rendere l'angolo della nostra stanza più attraente? Quindi, ecco una semplice lampada di miscelazione dei colori basata su Arduino che può cambiare colore quando c'è un cambiamento di luce nella stanza. Quindi questa lampada cambierà automaticamente il suo colore in base alle condizioni di luce nella stanza.
Ogni colore è la combinazione di colore rosso, verde e blu. Quindi possiamo generare qualsiasi colore usando i colori rosso, verde e blu. Quindi, qui varieremo PWM, ovvero l'intensità della luce sugli LDR. Ciò cambierà ulteriormente l'intensità del colore rosso, verde e blu nel LED RGB e verranno prodotti colori diversi.
La tabella sottostante mostra le combinazioni di colori con la rispettiva variazione dei cicli di lavoro.
Materiali richiesti:
- 1 x Arduino UNO
- 1 x tagliere
- 3 resistenze da 220 ohm
- 3 resistenze da 1 kilohm
- Cavi jumper
- 3 x LDR
- 3 x strisce colorate (rosso, verde, blu)
- 1 x LED RGB
LDR:
Useremo la fotoresistenza (o resistenza dipendente dalla luce, LDR o cella fotoconduttiva) qui in questo circuito. Gli LDR sono realizzati con materiali semiconduttori per consentire loro di avere le loro proprietà fotosensibili. Questi LDR o FOTO RESISTORI funzionano secondo il principio della "Conduttività fotografica". Quello che dice questo principio è che ogni volta che la luce cade sulla superficie dell'LDR (in questo caso) la conduttanza dell'elemento aumenta o, in altre parole, la resistenza dell'LDR cade quando la luce cade sulla superficie dell'LDR. Questa proprietà della diminuzione della resistenza per l'LDR è ottenuta perché è una proprietà del materiale semiconduttore utilizzato sulla superficie.
Qui tre sensori LDR vengono utilizzati per controllare la luminosità dei singoli LED rosso, verde e blu all'interno dei LED RGB. Scopri di più sul controllo di LDR con Arduino qui.
LED RGB:
Esistono due tipi di LED RGB, uno è di tipo a catodo comune (negativo comune) e l'altro è di tipo anodo comune (positivo comune). In CC (Common Cathode o Common Negative), ci saranno tre terminali positivi, ciascun terminale rappresenta un colore e un terminale negativo che rappresenta tutti e tre i colori.
Nel nostro circuito useremo il tipo CA (Common Anode o Common Positive). Nel tipo di anodo comune, se vogliamo che il LED ROSSO sia acceso, dobbiamo mettere a terra il pin del LED ROSSO e alimentare il positivo comune. Lo stesso vale per tutti i LED. Impara qui come interfacciare il LED RGB con Arduino.
Schema elettrico:
Lo schema elettrico completo di questo progetto è riportato sopra. Il + 5V e la connessione di terra mostrati nello schema elettrico possono essere ottenuti dal 5V e dal pin di terra di Arduino. Lo stesso Arduino può essere alimentato dal tuo laptop o tramite il jack DC utilizzando un adattatore da 12V o una batteria da 9V.
Useremo PWM per cambiare la luminosità del led RGB. Puoi saperne di più su PWM qui. Ecco alcuni esempi PWM con Arduino:
- Alimentatore variabile di Arduino Uno
- Controllo motore CC utilizzando Arduino
- Generatore di toni basato su Arduino
Spiegazione della programmazione:
Innanzitutto, dichiariamo tutti gli input e i pin di output come mostrato di seguito.
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;
Dichiarare 0 i valori iniziali dei sensori e dei led.
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); }
Nella sezione loop, prenderemo l'output di tre sensori con analogRead (); funzione e memorizzare in tre diverse variabili.
void loop () { red_sensor_value = analogRead (red_sensor_pin); ritardo (50); blue_sensor_value = analogRead (blue_sensor_pin); ritardo (50); green_sensor_value = analogRead (green_sensor_pin);
Stampa questi valori sul monitor seriale a scopo di debug
Serial.println ("Raw Sensor Values:"); Serial.print ("\ t Red:"); Serial.print (red_sensor_value); Serial.print ("\ t Blue:"); Serial.print (blue_sensor_value); Serial.print ("\ t Green:"); Serial.println (green_sensor_value);
Otterremo valori 0-1023 dai sensori ma i nostri pin PWM Arduino hanno valori 0-255 come output. Quindi dobbiamo convertire i nostri valori grezzi in 0-255. Per questo dobbiamo dividere i valori grezzi per 4 O semplicemente possiamo usare la funzione di mappatura di Arduino per convertire questi valori.
red_led_value = red_sensor_value / 4; // definisce il LED rosso blue_led_value = blue_sensor_value / 4; // definisce il LED blu green_led_value = green_sensor_value / 4; // definisce il LED verde
Stampa i valori mappati sul monitor seriale
Serial.println ("Mapped Sensor Values:"); Serial.print ("\ t Red:"); Serial.print (red_led_value); Serial.print ("\ t Blue:"); Serial.print (blue_led_value); Serial.print ("\ t Green:"); Serial.println (green_led_value);
Utilizzare analogWrite () per impostare l'uscita per il LED RGB
analogWrite (red_led_pin, red_led_value); // indica il LED rosso analogWrite (blue_led_pin, blue_led_value); // indica il LED blu analogWrite (green_led_pin, green_led_value); // indica il verde
Funzionamento della lampada di miscelazione dei colori Arduino:
Poiché stiamo utilizzando tre LDR, quando la luce colpisce questi sensori, la sua resistenza cambia di conseguenza anche le tensioni sui pin analogici di Arduino che funge da pin di ingresso per i sensori.
Quando l'intensità della luce cambia su questi sensori, il rispettivo led in RGB si illuminerà con la quantità di resistenza che cambia e abbiamo un diverso mix di colori nei led RGB usando PWM.