Tip 3

De ArduWiki
Revisión del 17:28 13 sep 2019 de Kike GL (Discusión | contribuciones) (Página creada con «== Descripción == Intentare explicar la diferencia entre usar delay() y millis(). Ambos códigos hacen lo mismo prender y apagar un LED cada 0.5 seg. == Código...»)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Descripción

Intentare explicar la diferencia entre usar delay() y millis().

Ambos códigos hacen lo mismo prender y apagar un LED cada 0.5 seg.

Código 1

Este ejemplo funciona muy bien porque lo único que tiene que hacer Arduino es prender y apagar el LED. Pero si ademas quisieras hacer algo mas no funcionaria porque los delay() paralizan todas las operaciones y no habria tiempo para hacer nada mas. Aumentar el valor de n por ejemplo.

unsigned long n;
void setup(){
   Serial.begin(9600);
   pinMode(13, OUTPUT);
}
void loop(){
   digitalWrite(13, HIGH);       //Prende LED
   delay(500);                   //Espera 0.5 seg
   digitalWrite(13, LOW);        //Apaga LED
   delay(500);                   //Espera 0.5 seg
   n++;
   Serial.println(n);
}

Nota: Veras que el valor de n se incrementa cada 1 segundo.


Código 2

Con este codigo te das cuenta que Arduino puede hacer otras tareas (aumentar el valor de n por ejemplo), porque le sobra tiempo hasta que debe conmutar el LED, porque el corre a una velocidad muy superior. Aproximadamente a 16 MHz.

unsigned long n,t;
void setup(){
   Serial.begin(9600);
   pinMode(13, OUTPUT);
}
void loop(){
   if (millis() - t > 500){
      digitalWrite(13, !digitalRead(13));   //Conmuta LED
      t = millis();
   }
   n++;
   Serial.println(n);   
}

Nota: Veras que el valor de n se incrementa muy rápidamente en cada ciclo de loop().


Vea también

Tips


Referencias externas