Tutorial Arduino n.04
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:
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:
Dimostrazione:
Commenti