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:    http://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.

Cortesemente, prima di inserire i commenti leggi il regolamento

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

8 comments

Skip to comment form

    • Filippo on 12 giugno 2012 at 15:13
    • Reply

    premetto che sono un ragazzino ma in questo progetto dato che la combinazione pulsante potenziometro modifica il colore invece di mettere 2 potenziometri non conveniva metterne uno soltanto ???

    1. Non è importante che età hai o quanta conoscenza, siamo tutti quì per condividere, la tua idea potrebbe essere ottima, se hai già realizzato questo sketch puoi inviarlo e condividerlo con tutti.

      Mauro

    • Francesco on 24 gennaio 2014 at 18:43
    • Reply

    Non riesco capire come modificare il programma, allora ti do
    > l’allegato sketch_buttons se tu puoi sistemare il programma per
    > aggiungere: timer per spegnere il display, e due potenziometri uno
    > che regola la velocità di scorrimento ed un secondo che regola solo
    > il tempo.
    > Scusami ti chiedo di aiutarmi perchè che so sei esperto e l’unico
    > per me che può aiutarmi. grazie. Cordiali saluti
    Mi hai chiesto:
    1. il display deve spegnersi dopo un tempo predefinto ed accenderersi in quale occasione?
    Quando una persona suona campanello o chiama al tefono o altro
    2. il potenziometro regola quale velocità di scorrimento?
    lo scorrimento dell’avviso quando suona es: il campanello
    3. che range in secondi vuoi poter regolare con il potenziometro che spegne il display?
    per quanto tempo deve scorrere l’avviso es: per 1 minuto o 2 minuti.

    1. Ciao Francesco,
      inviami il codice e la descrizione a mezzo email alla casella info del blog.
      Proverò a farti un preventivo per le modifiche di cui hai bisogno.

      Mauro

    • Emanuele on 20 febbraio 2015 at 20:18
    • Reply

    Scusa l’ignoranza, ma al posto dei pulsanti non conviene aggiungere un altro potenziometro, cosi da averne uno per fase? Io ho fatto cosi e non noto differenze con quello con i pulsanti.

    1. Ciao Emanuele,
      alcuni miei esperimenti sono puro esercizio di stile e la pubblicazione di una delle possibili soluzioni sw.
      Se hai trovato una soluzione alternativa è un ottimo risultato e certamente ne esistono altre più o meno performanti.

    • Davide on 27 settembre 2018 at 21:41
    • Reply

    Premetto che son nuovo in materia.. ho bisogno di fare impianto per non udente usando uno schema simile all’esempio.. cioè X ogni singolo evento, associare un colore. Al posto dei pulsanti mi occorre un microfono, un sensore di movimento è un sensore di vibrazioni… qualcuno può aiutarmi per realizzazione e soprattutto sketch?
    Grazie

    1. Ciao Davide,
      puoi usare tutti gli articoli e le mie spiegazioni linea per linea per capire come assemblare lo sketch che ti occorre.
      Lascio il tuo commento on-line per consentire a chi lo desidera di aiutarti.

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.