Diferencia entre revisiones de «Tip 3»

De ArduWiki
Saltar a: navegación, buscar
(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...»)
(Sin diferencias)

Revisión del 16:28 13 sep 2019

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