Cosa impareremo: 

Misceleremo i colori con un LED RGB utilizzando variazioni di tensioni con delle fotoresistenze e dei filtri colorati. Utilizzando i piedini con la scritta (PWM ~) Tramite il Pulse Width Modulation possiamo modulare i piedini con il simbolo ~
Così facendo la tensione ai piedini cambierà rapidamente senza che noi possiamo rendercene conto HIGH/LOW in un periodo chiamato duty cycle o ciclo di lavoro utile. Arduino ha 6 piedini digitali 3,5,6,9 PWM.

Componenti Richiesti:

 

1 LED RGBrgb

3 Resistori da 220 ohmresistore

3 Resistori da 10 Kilo ohm10kohm

3 Fotoresistenze fotoresistenza

3 Filtri colorati RGB Baader RGB-CCD-Filter-Set 2458485

 

Programmazione:

 

Possiamo trovare questo codice precompilato aprendo l’IDE Arduino ,

successivamnete  cliccando su File > Esempi > 10 StarterKit>  p04_ColorMixing

const int greenLEDPin = 9; // LED connesso al pin 9
const int redLEDPin = 10; // LED connected al pin 10
const int blueLEDPin = 11; // LED connected al pin 11
/*L'utilizzo delle costanti semplifica la modifica del codice.
Nelle funzioni inseriremo il nome simbolico delle costanti
ovvero, i valori legati al numero di pin, grazie
ai riferimenti delle costanti scritte in precedenza. */
 
const int redSensorPin = A0; // il pin dove è connessa la fotoresistenza col filtro rosso
const int greenSensorPin = A1; // il pin dove è connessa la fotoresistenza col filtro verde
const int blueSensorPin = A2; // il pin dove è connessa la fotoresistenza col filtro blu
 
//queste variabili conterranno le letture dei sensori, dichiariamole
 
// tutte int  (cerca wikipedia variabile tipo integer).
int redValue = 0; // dichiariamo una variabile per il colore rosso e azzeriamola
int greenValue = 0; // dichiariamo una variabile per il colore verde e azzeriamola
int blueValue = 0; // dichiariamo una variabile per il colore blu e azzeriamola
 
int redSensorValue = 0; // facciamo assumere il valore '0' come le precedenti.
int greenSensorValue = 0;
int blueSensorValue = 0;
 
void setup() {
 // inizializziamo la comunicazione seriale a 9600baund (bit/secondo, come nel tutorial 03)
 Serial.begin(9600);
 
// settiamo gli output
 pinMode(greenLEDPin,OUTPUT);
 pinMode(redLEDPin,OUTPUT);
 pinMode(blueLEDPin,OUTPUT);
}
 
void loop() {
 
 // Leggiamo i valori e salviamole nelle variabili precedentemente azzerate.
 
 // Iniziamo la lettura dei valori dei sensori
 redSensorValue = analogRead(redSensorPin);
 // grazie al ritardo possiamo visualizzare il contenuto
 delay(5);
 //ugualmente viene fatto con le successive.
 greenSensorValue = analogRead(greenSensorPin);
 delay(5);
 blueSensorValue = analogRead(blueSensorPin);
//Riportiamo le letture dei sensori a computer.
 Serial.print("raw sensor Values t red: ");
 Serial.print(redSensorValue);
 Serial.print("t green: ");
 Serial.print(greenSensorValue);
 Serial.print("t Blue: ");
 Serial.println(blueSensorValue);
 
 /*Introduciamo la funzione analogWrite, in questo caso
 ci servirà per sfumare i led. I valori di lettura
 del nostro LED variano da 0 a 1023. Mappando
 questi valori ci risulterà più facile manipolarli.
 Al valore 0 il LED sarà spento a 120 sarà sfumato e
 225 il piedino sarà completamente HIGH.
 Per convertire 0-1023 a 0-225 dobbiamo dividere
 per 4 la lettura dei sensori.*/
 
redValue = redSensorValue/4;
 greenValue = greenSensorValue/4;
 blueValue = blueSensorValue/4;
 
 //Riportiamo i valori di luce calcolati.
 Serial.print("Mapped sensor Values t red: ");
 Serial.print(redValue);
 Serial.print("t green: ");
 Serial.print(greenValue);
 Serial.print("t Blue: ");
 Serial.println(blueValue);
 
analogWrite(redLEDPin, redValue);
 analogWrite(greenLEDPin, greenValue);
 analogWrite(blueLEDPin, blueValue);
}

Schema Elettronico:

 

colormix

 

Dimostrazione:

 

mixing