Tutorial: arduino, led rgb, potenziometri e pulsanti

Con i led RGB puoi fare tanti effetti e trovare la tua sfumatura preferita, quello che ti occorre è uno sketch che ti permetta di modificare il valore associato ad ogni colore e dei pulsanti che ti consentano di memorizzare il colore nel tuo sketch.

Led RGB due potenziometri e dei pulsanti

Ecco il progetto di oggi.

Nell’articolo precedente: Tutorial: arduino, led rgb e potenziometri hai potuto realizzare un controllo RGB per il tuo led con soli due potenziometri, l’inconveniente è che il potenziometro B imposta il valore sia del colore verde sia di quello blu.

Un altro inconveniente è che il colore varia al variare della posizione del potenziometro, per cui non puoi toccare il potenziometro dopo la sua regolazione altrimenti il gioco finisce.

Aggiungeno 3 pulsanti, 3 resistenze da 10KΩ  e questo sketch le cose cambiano.

/*
 * Sketch Led RGB e potenziometri
 *
 * @author: Alfieri Mauro
 * @see:    https://www.mauroalfieri.it
 *
 * @licenze: Creative common
 */

int ledR = 9;
int ledG = 10;
int ledB = 11;

int potA = A5;
int potB = A4;

int butR = 6;
int butG = 7;
int butB = 8;

void setup()
{
  pinMode(ledR,OUTPUT);
  pinMode(ledG,OUTPUT);
  pinMode(ledB,OUTPUT);

  pinMode(butR,INPUT);
  pinMode(butG,INPUT);
  pinMode(butB,INPUT);

  Serial.begin(9600);
}

void loop()
{
  int valA = map(analogRead(potA),0,1023,0,255);
  int valB = map(analogRead(potB),0,1023,0,255);

  Serial.print(" Button R: ");
  Serial.print( digitalRead(butR) );
  Serial.print(" Button G: ");
  Serial.print( digitalRead(butG) );
  Serial.print(" Button B: ");
  Serial.print( digitalRead(butB) );

  if (digitalRead(butR) == 1) { analogWrite(ledR,valA); }
  if (digitalRead(butG) == 1) { analogWrite(ledG,valB); }
  if (digitalRead(butB) == 1) { analogWrite(ledB,valB); }

  Serial.print(" Potenziometro A: ");
  Serial.print( valA );
  Serial.print(" Potenziometro B: ");
  Serial.println( valB );

  delay(500);
}

Vediamo cosa accade:

E se sei curioso di capire come funziona leggi a desrizione dello sketch.

Rispetto allo sketch presentato nell’articolo precedente ci sono alcuni piccoli cambiamenti, inizia dalle

linee 17-19: in cui definisci 3 nuove variabili, sempre di tipo integer come le altre presenti, a ciascuna di esse associ il pin digitale a cui hai collegato un pulsante. Ogni pulsante ha il suo effetto su un colore, ad es.: se al pin 6 di arduino colleghi il pulsante con cui vuoi agire sul colore rosso, allora 6 deve essere il valore della variabile butR. Stesso discorso per gli altri 2 pulsanti;

linee 27-29: anche queste sono nuove, rispetto al precedente sketch, il loroscopo è informare arduino che i pin definiti come butR, butG e butB sono da utilizzare come INPUT;

linee 39-44: ti servono per visualizzare nel monitor seriale il valore letto con la funzione digitalRead(pin) dove pin è sostituito con i valorei delle variabili butR, butG e butB;

Nota Bene: il valore restituito dalla funzione digitalRead(pin) può essere 0 o 1, 0 quando il pulsante non è premuto in quanto la corrente transita attraverso al resistenza di 10KΩ verso il polo negativo facendo rilevare ad arduino un segnale pari a 0 ( <5v ) e sarà 1 alla pessione del pulsante in quanto questo commuterà a +5v il corrispondente pin di arduino;

Fatta questa premessa passiamo alle linee successive:

linee 46-48: sono tutte identiche fatto salvo la loro influenza su pin differenti sia in lettura che in scrittura. In particolare la condizione di if verifica il valore restituito dalla funzione digitarRead() e se tale valore è 1 invia al pin corrispondente il valore letto sul potenziometro e mappato da 0 a 255. Normalmente il valore letto sui tre pin connessi ai pulsanti è 0 (vedi Nota Bene) alla pressione di uno di essi il corrispettivo valore letto è 1 che verifica la condizione presente nell’if e attua l’effetto desiderato sul pin PWM corrispondente.

Il funzionamento è abbastanza semplice, il video dovrebbe averti già chiarito tutto, qualora non ti fosse chiaro puoi scrivermi commentando questo articolo.

Buon divertimento.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/tutorial-arduino-led-rgb-potenziometri-pulsanti.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.