Tip 3
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
Referencias externas
- Saber nuestra IP por Mail - jojopapa