Arduino: Blink con millis anzichè delay

Questo è un semplice esempio per far lampeggiare un led con la funzione millis, anzichè la classica funzione delay. Il delay è più semplice da usare, ma ha lo svantaggio di mettere in pausa tutto il programma, il millis invece permette al microcontrollore di continuare ad eseguire lo sketch.

Questo è il semplice esempio blink di arduino: 

  1. int led = 13;
  2. void setup() {                
  3. pinMode(led, OUTPUT);    
  4. }
  5. void loop() {
  6.   digitalWrite(led, HIGH);
  7.   delay(1000);              
  8.   digitalWrite(led, LOW);    
  9.   delay(1000);          
  10. }

Questo invece è l'esempio con la funzione millis:

  1. int led = 13;
  2. unsigned long time;
  3. unsigned long lampeggio_time = 0;
  4. void setup() 
  5. { 
  6.   pinMode(led, OUTPUT);
  7. }
  8. void loop() 
  9. { 
  10.    time=millis();
  11.    if(time>lampeggio_time+1000)
  12.   {
  13.     digitalWrite(led, HIGH);
  14.   }
  15.    if(time>lampeggio_time+2000)
  16.   {
  17.     digitalWrite(led, LOW);
  18.     lampeggio_time=millis();
  19.   }
  20. }

Segui Daniele Alberti su Google+

2 commenti:

  1. Come é vero che la programmazione C dipende dal programmatore io personalmente l'avrei scritta cosi'
    "int LEDpin = 13;
    int LEDstato = LOW;
    long milliprecedenti = 0;
    long intervallo = 1000;
    void setup() {
    pinMode(LEDpin, OUTPUT);
    }
    void loop() {
    unsigned long millicorrenti = milli();
    if (millicorrenti - milliprecedenti > intervalo) {
    milliprecedenti = millicorrenti; if (LEDstato == LOW) {
    LEDstato = HIGH;
    } else {
    LEDstato = LOW;
    }
    digitalWrite(LEDpin, LEDstato);
    }
    }"

    RispondiElimina
    Risposte
    1. Grazie del tuo contributo, in effetti riguardando il codice che ho scritto avrei potuto renderlo un po' più pulito.
      Comunque il mio obiettivo è quello di fornire un codice funzionante a chi ne ha bisogno, poi un buon programma è un'altra cosa :)
      In ogni caso è molto istruttivo vedere diversi modi per raggiungere lo stesso risultato, penso che potrà essere utile a molti. Ciao e grazie ancora!

      Elimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Related Posts Plugin for WordPress, Blogger...