Tre led con interuttore e trim

 

 

Il setup è realizato con breadboard e cavi jamper. Arduino nano direttamente sula board.

 

Abiamo un interruttore a tre posizioni on-off-on e tre pin, il pin di sinistra lo colleghiamo al pin A5 (da utilizzare come imput pullup) il centrale a GND, quello di destra al pin A4 (da utilizzare come digitale in imput pullup). Quando la leva del pulsante è a sinistra i pin centrale e il pin di sinistra sono collegati, quando la leva è a destra sono collegati il centrale ed il destro, quando la leva è al centro sia il sinistro che il destro sono entrambe scollegati. Per individuare le posizioni dell'interruttore abbiamo:

  • leva a sinistra il pin A0 è OFF e il pin A3 è HIGTH
  • leva a detra il pin A0 è HIGTH e il pin A3 è OFF
  • leva al centro sia A0 che A3 sono HIGTH

Con la leva a sinistra si dovrà accendere il solo led rosso, con leva al centro si accenderà il solo led green e leva a destra si acenderà solo il led blu

 

Le connessioni sono le seguenti:

 

Interruttore:

pin sinistro A0

pin centrale GND

Pin destro A3

 

Led:

Rosso 12

verde 7

blu 2

 

Cdice:

const int pinA0 = A0;  // Pin collegato alla posizione sinistra dell'interruttore
const int pinA3 = A3;  // Pin collegato alla posizione destra dell'interruttore
const int ledRosso = 12; // LED rosso collegato al pin 12
const int ledVerde = 7;  // LED verde collegato al pin 7
const int ledBlu = 2;    // LED blu collegato al pin 2

void setup() {
    pinMode(pinA0, INPUT_PULLUP); // Configura il pin A3 come input con pull-up interno
    pinMode(pinA3, INPUT_PULLUP); // Configura il pin A0 come input con pull-up interno
    pinMode(ledRosso, OUTPUT);    // Configura il pin 12 come output per il LED rosso
    pinMode(ledVerde, OUTPUT);    // Configura il pin 7 come output per il LED verde
    pinMode(ledBlu, OUTPUT);      // Configura il pin 2 come output per il LED blu
}

void loop() {
    bool statoA0 = digitalRead(pinA0); // Legge lo stato del pin A0
    bool statoA3 = digitalRead(pinA3); // Legge lo stato del pin A3

    if (!statoA0 && statoA3) {         // Leva a sinistra
        digitalWrite(ledRosso, HIGH);  // Accende il LED rosso
        digitalWrite(ledVerde, LOW);   // Spegne il LED verde
        digitalWrite(ledBlu, LOW);     // Spegne il LED blu
    } 
    else if (statoA0 && !statoA3) {    // Leva a destra
        digitalWrite(ledRosso, LOW);   // Spegne il LED rosso
        digitalWrite(ledVerde, LOW);   // Spegne il LED verde
        digitalWrite(ledBlu, HIGH);    // Accende il LED blu
    } 
    else if (statoA0 && statoA3) {     // Leva al centro
        digitalWrite(ledRosso, LOW);   // Spegne il LED rosso
        digitalWrite(ledVerde, HIGH);  // Accende il LED verde
        digitalWrite(ledBlu, LOW);     // Spegne il LED blu
    }
}

 

led come di consueto hanno il catodo collegato a GND tramite una resistenza. In questo esempio abbiamo utilizato al posto delle solite resistenze dei trimmer (piccoli potenziometri) che però useremo come sole resistenze variabili che ci permetteranno di variare l'intensità dei tre led in modo da uniformarla.

 

Al variare della resistenza varia la luminosità del led ma non è facile percepire le differenze ad occhio soprattutto alle luminosità più alte. Poi comunque c'è una priorità l'intensità di corrente di solito non deve superare i 20 mA ed anche per Arduino sarebbe bene non superare questo valore, anche se può tollerare fino a 40 mA è meglio evitare. Allora la cosa migliore da fare è misurare con un multimetro l'intensità di corrente che passa su ogni led e variando il trimmer riportarla nei limiti dei 20 mA.

Led

R nom

R real

mA

Rosso 220 217 12.6
Verde 100 99 16.0
Blu 75 74.4 19.8


Come si può notare il rosso ed il verde sono a valori sicuri al di sotto dei 20 mA il blu è ai limiti.

Notare che la corrente rilevata è influenzata dalla somma della resistenza interna del led + la resistenza applicata.

Questo dimosra che c'è molta variabilità tra led  di colore diverso ma anche tra led di diverse case produttrici.

Addirittura il led blu può andare tranquillamente senza nessuna resistenza anche se supera un po i 20 mA.