# Lampeggio led con funzione "millis"

**URL:** <https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493>\
**Category:** Software\
**Created:** [August 1, 2025, 10:09pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493 "2025-08-01T22:09:10Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 1, 2025, 10:09pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/1 "2025-08-01T22:09:10Z")

</div>

ciao a tutti, ho cercato di leggere diversi tutorial e post per capire meglio la funzione "millis", ma ho ancora dei dubbi.  
Ho provato a fare un programma base per far lampeggiare due led, ma resta sempre solo acces quello sul pin 3 🤔

qui di seguito il codice:

```arduino
unsigned long prevMillis = 0;
const long interval = 500;

void setup() {
  for (int ledPin = 2; ledPin<4; ledPin++) {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  }
}

void loop() {
  if (millis() - prevMillis >= interval) {
    prevMillis = millis();
      digitalWrite(2, HIGH);
      digitalWrite(3, LOW);
      }
  else {
    digitalWrite(2, LOW);
    digitalWrite(3, HIGH);
  }
}

```

dove sto sbagliando??

l'obbiettivo finale e´ far lampeggiare 8 led in sequenza attivati dalla pressione di un pulsante e poi fermarli tramite la pressione dello stesso pulsante.  
Ho fatto diverse prove, ma sono ancora in alto mare...

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 1, 2025, 10:52pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/2 "2025-08-01T22:52:54Z")

</div>

Forse ho capito l’errore base: con il codice scritto in quel modo, la condizione vera dell’if viene verificata solo nel momento in cui passa il mezzo secondo, poi riazzera il conteggio ed essendo veloce non vedo mai acceso il primo led.  
Dovrei forse mettere un contatore (tipo una variabile ”prevMillis2”) anche per la condizione ”else”?

E per impostarlo su 8 led qual’é il codice più semplice da usare?  
Grazie per l’aiuto.

---

<div class="post-metadata">

**Author:** ![Maurotec](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/maurotec/32/213982_2.png) [@Maurotec](https://forum.arduino.cc/u/Maurotec)\
**Post date:** [August 2, 2025, 1:27am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/3 "2025-08-02T01:27:33Z")

</div>

La clausola else non ci deve proprio essere, o meglio non va messa li, cioè:

```arduino
void loop() {
  if (millis() - prevMillis >= interval) {
      prevMillis = millis();
      If (digitalRead(2) == LOW) {
          digitalWrite(2, HIGH);
          digitalWrite(3, LOW);
      } else {
          digitalWrite(2, LOW);
          digitalWrite(3, HIGH);
      }
  }
}

```

Per 8 led in sequenza cosa intendi?

> **[Applicazione accesso a parcheggio](https://programmersqtcpp.blogspot.com/2022/03/applicazione-accesso-parcheggio.html)**
>
> L’implementazione di una macchina a stati finiti tramite lo switch case.
> Automazione per plastico.

**Nella seconda parte ci sono due led lampeggianti**

Ciao.

---

<div class="post-metadata">

**Author:** ![Claudio\_FF](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/claudio_ff/32/239118_2.png) [@Claudio\_FF](https://forum.arduino.cc/u/Claudio_FF)\
**Post date:** [August 2, 2025, 6:30am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/4 "2025-08-02T06:30:37Z")

</div>

> [@cinepicture](#):
>
> E per impostarlo su 8 led qual’é il codice più semplice da usare?

Ogni volta che scade il tempo controllato con millis incrementi un contatore. In base al valore del contatore comandi i led.

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 2, 2025, 7:05am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/5 "2025-08-02T07:05:41Z")

</div>

Grazie a tutti per le risposte.

Dopo averci dormito su, mi é venuta l’illuminazione del principiante 😁 ieri avevo fatto un test con 8 led ed un contatore, che però non funzionava; mi son accorto ora che verificavo il numero contenuto nella variabile del contatore con il simbolo ”=” anziché ”==” 🫣 piú tardi faró delle prove e vedremo se funzionerà.

Il prossimo step sarà avviare e fermare la sequenza tramite pressione dello stesso pulsante (installato sul pin 10); anche li ho provato a ricreare una routine di controllo e conteggio, ma non funzionava…

---

<div class="post-metadata">

**Author:** ![Claudio\_FF](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/claudio_ff/32/239118_2.png) [@Claudio\_FF](https://forum.arduino.cc/u/Claudio_FF)\
**Post date:** [August 2, 2025, 8:32am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/6 "2025-08-02T08:32:25Z")

</div>

> [@cinepicture](#):
>
> verificavo il numero contenuto nella variabile del contatore con il simbolo ”=”

Questo è il motivo per cui consigliano di effettuare i confronti di uguaglianza tra una costante e una variabile scrivendo prima la costante.

`if (0 == C) ....`

Dal momento che un singolo `=` è un'assegnazione e a una costante non si può assegnare niente, l'errore viene rilevato al momento della compilazione e non diventa un subdolo errore di semantica (credere che un operatore o una funzione facciano una certa cosa mentre in realtà ne fanno un'altra).

---

<div class="post-metadata">

**Author:** ![Standardoil](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/standardoil/32/1286411_2.png) [@Standardoil](https://forum.arduino.cc/u/Standardoil)\
**Post date:** [August 2, 2025, 2:50pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/7 "2025-08-02T14:50:39Z")

</div>

Bravo

Indenti in maniera decente (ovvero meglio del 99% dei frequentatori)  
E sai pensare ai problemi  
Cosa anche più rara  
Prosegui così e riuscirai

Sia chiaro:  
Hai ricevuto i miei complimenti (meritati)  
La cosa è altrettanto rara

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 2, 2025, 6:10pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/8 "2025-08-02T18:10:56Z")

</div>

Grazie, troppo gentile!  
Ho finalmente risolto il codice che fa lampeggiare i led in sequenza se tengo un pulsante premuto, li spegne quando lo lascio:

```arduino
int pulsante = 0;
int conteggio = 0;
unsigned long prevMillis = 0;
unsigned long currMillis = 0;
const long interval = 500;

void setup() {
  for (int ledPin = 2; ledPin<10; ledPin++) { // i led vanno dal pin 2 al 9
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(10, INPUT);
  }
}

void loop() {
  currMillis = millis();
  pulsante=digitalRead(10);
      if (pulsante == HIGH) {
        if (currMillis - prevMillis >= interval) {
          prevMillis = currMillis;
          if (conteggio == 0) {
          digitalWrite(2, HIGH);
          digitalWrite(3, LOW);
          digitalWrite(4, LOW);
          digitalWrite(5, LOW);
          digitalWrite(6, LOW);
          digitalWrite(7, LOW);
          digitalWrite(8, LOW);
          digitalWrite(9, LOW);
          conteggio = 1;
          }
            else if (conteggio == 1) {
            digitalWrite(2, LOW);
            digitalWrite(3, HIGH);
            digitalWrite(4, LOW);
            digitalWrite(5, LOW);
            digitalWrite(6, LOW);
            digitalWrite(7, LOW);
            digitalWrite(8, LOW);
            digitalWrite(9, LOW);
            conteggio = 2;
            }
            else if (conteggio == 2) {
            digitalWrite(2, LOW);
            digitalWrite(3, LOW);
            digitalWrite(4, HIGH);
            digitalWrite(5, LOW);
            digitalWrite(6, LOW);
            digitalWrite(7, LOW);
            digitalWrite(8, LOW);
            digitalWrite(9, LOW);
            conteggio = 3;
            }
            else if (conteggio == 3) {
            digitalWrite(2, LOW);
            digitalWrite(3, LOW);
            digitalWrite(4, LOW);
            digitalWrite(5, HIGH);
            digitalWrite(6, LOW);
            digitalWrite(7, LOW);
            digitalWrite(8, LOW);
            digitalWrite(9, LOW);
            conteggio = 4;
            }
            else if (conteggio == 4) {
            digitalWrite(2, LOW);
            digitalWrite(3, LOW);
            digitalWrite(4, LOW);
            digitalWrite(5, LOW);
            digitalWrite(6, HIGH);
            digitalWrite(7, LOW);
            digitalWrite(8, LOW);
            digitalWrite(9, LOW);
            conteggio = 5;
            }
            else if (conteggio == 5) {
            digitalWrite(2, LOW);
            digitalWrite(3, LOW);
            digitalWrite(4, LOW);
            digitalWrite(5, LOW);
            digitalWrite(6, LOW);
            digitalWrite(7, HIGH);
            digitalWrite(8, LOW);
            digitalWrite(9, LOW);
            conteggio = 6;
            }
            else if (conteggio == 6) {
            digitalWrite(2, LOW);
            digitalWrite(3, LOW);
            digitalWrite(4, LOW);
            digitalWrite(5, LOW);
            digitalWrite(6, LOW);
            digitalWrite(7, LOW);
            digitalWrite(8, HIGH);
            digitalWrite(9, LOW);
            conteggio = 7;
            }
            else if (conteggio == 7) {
            digitalWrite(2, LOW);
            digitalWrite(3, LOW);
            digitalWrite(4, LOW);
            digitalWrite(5, LOW);
            digitalWrite(6, LOW);
            digitalWrite(7, LOW);
            digitalWrite(8, LOW);
            digitalWrite(9, HIGH);
            conteggio = 0;
            } 
          }
      }
      else {
          digitalWrite(2, LOW);
          digitalWrite(3, LOW);
          digitalWrite(4, LOW);
          digitalWrite(5, LOW);
          digitalWrite(6, LOW);
          digitalWrite(7, LOW);
          digitalWrite(8, LOW);
          digitalWrite(9, LOW);
          conteggio = 0;
      }
    }

```

il prossimo passo e far attivare la sequenza e spegnerla tramite pressione delle stesso pulsante!  
Ho trovato diversi esempi in rete, ma non riesco a farli funzionare e piu´ che altro non li comprendo 🤔 di base cerco sempre di capire un codice prima di passare ad un altro tentativo!

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 2, 2025, 7:17pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/9 "2025-08-02T19:17:50Z")

</div>

ce l'ho fatta 😃 son finalmente riuscito ad inserire la routine per la lettura del pulsante!  
Ho usato l'esempio del progetto 10 dello starter kit; avevo provato anche ieri, ma sbagliavo ad inserire le parentesi } di chiusura al posto giusto in alcune condizioni e il loop non funzionava...  
Il tasto di verifica del codice controlla solo che la sintassi sia corretta, quindi devo andare per tentativi e non avendo ancora l'occhio allenato alla lettura degli sketch, ci metto un po´ a trovare gli errori 😅

comunque ora funziona, questo e´ il codice finale:

```arduino
int pulsanteStato = 0; // variabile contente lo stato del pulsante
int prevPulsanteStato = 0;
int attivaSequenza = 0; // variabile per attivare/disattivare la sequenza di lampeggio
int conteggio = 0; // variabile per conteggiare la sequenza dei led da accendere
unsigned long prevMillis = 0;
unsigned long currMillis = 0;
const long interval = 500; // mezzo secondo di intervallo per il lampeggio tra i led

void setup() {
  for (int ledPin = 2; ledPin<10; ledPin++) { // i led vanno dal pin 2 al 9
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(10, INPUT); // il pin 10 e´ collegato al pulsante
  }
}

void loop() {
  currMillis = millis();
  pulsanteStato=digitalRead(10);
  delay(1);
  if (pulsanteStato != prevPulsanteStato) {
    if (pulsanteStato == HIGH) {
      attivaSequenza = !attivaSequenza;
    }
  }
  if (attivaSequenza == 1) {
    if (currMillis - prevMillis >= interval) {
      prevMillis = currMillis;
      if (conteggio == 0) {
      digitalWrite(2, HIGH);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      conteggio = 1;
      }
      else if (conteggio == 1) {
      digitalWrite(2, LOW);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      conteggio = 2;
      }
      else if (conteggio == 2) {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      conteggio = 3;
      }
      else if (conteggio == 3) {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      conteggio = 4;
      }
      else if (conteggio == 4) {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      conteggio = 5;
      }
      else if (conteggio == 5) {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, HIGH);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      conteggio = 6;
      }
      else if (conteggio == 6) {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, HIGH);
      digitalWrite(9, LOW);
      conteggio = 7;
      }
      else if (conteggio == 7) {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, HIGH);
      conteggio = 0;
      } 
    }
  } else {
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    conteggio = 0;
    }
  prevPulsanteStato = pulsanteStato;
}

```

Suggerimenti per semplificare la lunga lista di istruzioni per fare lampeggiare i led??  
Grazie del supporto!

---

<div class="post-metadata">

**Author:** ![Claudio\_FF](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/claudio_ff/32/239118_2.png) [@Claudio\_FF](https://forum.arduino.cc/u/Claudio_FF)\
**Post date:** [August 2, 2025, 7:32pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/10 "2025-08-02T19:32:47Z")

</div>

> [@cinepicture](#):
>
> Suggerimenti per semplificare la lunga lista

Sfruttare il [modello IPO](https://en.wikipedia.org/wiki/IPO_model)

Tutto l'output raggruppato alla fine:

```
digitalWrite(2, attivaSequenza && 0==conteggio);
digitalWrite(3, attivaSequenza && 1==conteggio);
digitalWrite(4, attivaSequenza && 2==conteggio);
digitalWrite(5, attivaSequenza && 3==conteggio);
digitalWrite(6, attivaSequenza && 4==conteggio);
digitalWrite(7, attivaSequenza && 5==conteggio);
digitalWrite(8, attivaSequenza && 6==conteggio);
digitalWrite(9, attivaSequenza && 7==conteggio);

```

---

<div class="post-metadata">

**Author:** ![max\_1312](https://avatars.discourse-cdn.com/v4/letter/m/cab0a1/32.png) [@max\_1312](https://forum.arduino.cc/u/max_1312)\
**Post date:** [August 2, 2025, 7:34pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/11 "2025-08-02T19:34:16Z")

</div>

Buona sera,  
mi associo ai complimenti di @Standardoil, il tuo atteggiamento e' davvero encomiabile.  
Detto questo, per quanto riguarda il prossimo "passo" l'hai praticamente gia' fatto.  
Prova a pensare di non avere un software che accenda e spenga una sequenza di led, e di essere tu stesso a doverlo fare, accenderesti i led quando sono spenti e li spegneresti quando sono accesi....  
Cio' che manca e' solamente sapere (quando viene premuto il pulsante) se la sequenza e' attiva oppure no. Timanca semplicemente una variabile che indichi lo stato dei led... Da qui fai cio' che vuoi

Anzi puoi usare attivaSequenza, quindi lo stato e' definito da questa variabile.

Quindi quando viene premuto il pulsante

```arduino
Se attivaSequenza ==1 attivaSequenza = 0
altrimenti attivaSequenza = 0

```

```arduino
quindi la variabile che indica lo stato del pulsante non serve piu'

```

Massimo

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 2, 2025, 8:01pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/12 "2025-08-02T20:01:18Z")

</div>

Grazie a tutti per le risposte ed i suggerimenti!

Il mio team di lavoro é composto da me e mio figlio di 10 anni 😁 lui lancia le idee e si occupa di costruire i circuiti, io penso al SW (ci andrà ancora un attimo perché si diverta con quello 😉 ).

Di tempo ne abbiamo, le idee non finiscono mai e speriamo che con il giusto metodo si riesca a fare delle belle cose!  
Per ora ci divertiamo 😎

---

<div class="post-metadata">

**Author:** ![max\_1312](https://avatars.discourse-cdn.com/v4/letter/m/cab0a1/32.png) [@max\_1312](https://forum.arduino.cc/u/max_1312)\
**Post date:** [August 2, 2025, 8:02pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/13 "2025-08-02T20:02:16Z")

</div>

Farete cose bellissime ....fidati

---

<div class="post-metadata">

**Author:** ![Maurotec](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/maurotec/32/213982_2.png) [@Maurotec](https://forum.arduino.cc/u/Maurotec)\
**Post date:** [August 2, 2025, 8:19pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/14 "2025-08-02T20:19:16Z")

</div>

Hai fatto una FSM (Finite State Machine) dove la variabile di stato è `conteggio`.

Purtroppo io per lampeggio intendo un'altra cosa, questa è una sequenza binaria: 0000 0000, 0000 0001, 0000 0010, 0000 0100 ecc.

Molto simile all'effetto SuperCar del telefilm, solo che poi quello torna anche indietro e ricomincia all'infinito.

Con una lista di pin (array o vettore) basterebbe contare da 0 a 7, ad ogni incremento del contatore spegni il pin[0] e accendi il pin[1] ecc.

Ciao.

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 2, 2025, 8:51pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/15 "2025-08-02T20:51:34Z")

</div>

Hai ragione, é una sequenza piú che un lampeggio.  
Perdonatemi se spesso useró una terminologia inappropriata 😁 uso troppo il metodo ”training on the job” piú che imparare la teoria 🫣

> [@Maurotec](#):
>
> Con una lista di pin (array o vettore) basterebbe contare da 0 a 7, ad ogni incremento del contatore spegni il pin[0] e accendi il pin[1] ecc.

Hai un esempio del codice che suggerisci?  
Grazie

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 2, 2025, 8:59pm UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/16 "2025-08-02T20:59:58Z")

</div>

Quindi dovrei mantenere nei vari if/else del millis solo l’incremento della variabile “_conteggio_” e poi aggiungere questo tuo codice alla fine?

> [@Claudio\_FF](#):
>
> Tutto l'output raggruppato alla fine:
> 
> ```arduino
> digitalWrite(2, attivaSequenza && 0==conteggio);
> digitalWrite(3, attivaSequenza && 1==conteggio);
> digitalWrite(4, attivaSequenza && 2==conteggio);
> digitalWrite(5, attivaSequenza && 3==conteggio);
> digitalWrite(6, attivaSequenza && 4==conteggio);
> digitalWrite(7, attivaSequenza && 5==conteggio);
> digitalWrite(8, attivaSequenza && 6==conteggio);
> digitalWrite(9, attivaSequenza && 7==conteggio);
> 
> ```

Perdona l’ignoranza, ma come fa quell’istruzione a settare il led a zero se le due condizioni AND non sono vere?  
Inoltre non dovrei anche scrivere “_attivaSequenza == 1_”?

---

<div class="post-metadata">

**Author:** ![Claudio\_FF](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/claudio_ff/32/239118_2.png) [@Claudio\_FF](https://forum.arduino.cc/u/Claudio_FF)\
**Post date:** [August 3, 2025, 8:16am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/17 "2025-08-03T08:16:47Z")

</div>

> [@cinepicture](#):
>
> Quindi dovrei mantenere nei vari if/else del millis solo l’incremento della variabile “_conteggio_” e poi aggiungere questo tuo codice alla fine?

L'idea è quella. Dopo di che (in questo specifico caso) puoi semplificare l'intera struttura if/else in un semplice incremento del contatore.

> [@](#):
>
> ma come fa quell’istruzione a settare il led a zero

Sul pin viene scritto il risultato dell'espressione booleana, zero o uno (corrispondente a false/true o LOW/HIGH che sono solo alias di 0 e 1).

> [@cinepicture](#):
>
> non dovrei anche scrivere “_attivaSequenza == 1_”?

Gli operatori booleani `&&` `||` e `!` considerano la verità dei loro operandi (falso se uguale a 0, vero diverso da 0). Aggiungere il confronto esplicito in questo caso non fa nessuna differenza (anche se può rendere più chiaro e leggibile il codice).

In generale basta tenere conto del tipo di operandi atteso dagli operatori, e del risultato prodotto dalle operazioni:

| Operatori | Operandi | Risultato |
| --- | --- | --- |
| Aritmetici: `+ - * / %` | Numeri | Numero |
| Logici bitwise: `& | ^ ~ << >>` | sequenza bit | sequenza bit |
| Confronto: `< > <= >= == !=` | Numeri | 0/1 |
| Logici booleani: `&& || !` | vero/falso | 0/1 |

E delle precedenze di calcolo. Nel caso in questione prima viene calcolato il confronto `n==conteggio` e poi si calcola l'and booleano `&&` tra la "verità" di `attivaSequenza` e la "verità" del risultato del confronto.

 ![876765654](https://europe1.discourse-cdn.com/arduino/original/4X/e/4/f/e4fe93d9b1742987e7a26203cc587a6c1baa6125.png)

---

<div class="post-metadata">

**Author:** ![cinepicture](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cinepicture/32/1228623_2.png) [@cinepicture](https://forum.arduino.cc/u/cinepicture)\
**Post date:** [August 3, 2025, 9:52am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/18 "2025-08-03T09:52:56Z")

</div>

Grazie Claudio\_FF dei chiarimenti.

Queste basi teoriche legate ad esempi pratici e specifici (senza dover imparare di botto tutta la teoria, in fondo non punto a diventate programmatore professionista 😉) sono davvero utili e di rapida comprensione 👍

---

<div class="post-metadata">

**Author:** ![docdoc](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/docdoc/32/220907_2.png) [@docdoc](https://forum.arduino.cc/u/docdoc)\
**Post date:** [August 3, 2025, 10:52am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/19 "2025-08-03T10:52:23Z")

</div>

> [@cinepicture](#):
>
> Il mio team di lavoro é composto da me e mio figlio di 10 anni 😁 lui lancia le idee e si occupa di costruire i circuiti, io penso al SW

Sai che questa cosa è bellissima? Dovevo dirtelo...  
Complimenti a te soprattutto, e sono anche io sicuro che se il figlio si appassiona vorrà iniziare a scrivere anche lui il software (a 10 anni ormai ce la possono fare benissimo)!

---

<div class="post-metadata">

**Author:** ![max\_1312](https://avatars.discourse-cdn.com/v4/letter/m/cab0a1/32.png) [@max\_1312](https://forum.arduino.cc/u/max_1312)\
**Post date:** [August 3, 2025, 11:45am UTC](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493/20 "2025-08-03T11:45:50Z")

</div>

> [@docdoc](#):
>
> Sai che questa cosa è bellissima?

(breve OT)  
e' bellissima davvero, ieri sera quando l'ho letto mi sono commosso... E' cio' che ho sempre sognato, ma purtroppo non ho avuto figli

Massimo

[Next page](https://forum.arduino.cc/t/lampeggio-led-con-funzione-millis/1399493.md?page=2)
