Estimados, un saludos a todos y mi consulta es con el siguiente código, resulta que cuando descomento la linea //Serial.println(contador); el programa se ejecuta, de lo contrario se queda el led encendido. Tengo entendido que Serial.print solo es para hacer un seguimiento al programa. Les agradecería una explicación que estoy haciendo mal. Desde ya muy agracedido por sus respuestas.
Mi arduino es un Mega
int led0 = 13;
int contador = 0;
void setup() {
Serial.begin(9600);
pinMode(led0, OUTPUT);
}
void loop() {
contador++;
if(contador > 50){
digitalWrite(led0, !digitalRead(led0));
contador = 0;
}
//Serial.println(contador);
}
contador.ino (261 Bytes)
Piensa en la velocidad de Arduino.
Hay unas cosas que se ejecutan más rapidas que otras. Por ejemplo, Serial.println, es relativamente lenta, de una decima parte de milisegundo. Cuando tu lo imprimes, estas provocando
un pequeño retraso, con lo que te da la sensación de que parpadea.
En cambio, si quitas el Serial.println, el resto de operaciones se ejecuta mucho mas
deprisa, asi que cuando el contador llega a 50 y se pone a cero, el led si se apaga, pero es tan rapido que ya ha vuelto a contar 50 y se pone otra vez a 1, encendiendo el led.
Aumenta el contador, por ejemplo a 32000. Verás que ahora si parpadea. ¿qué ocurre? pues que si tarda X en ejecutar el código, 50 veces X será un tiempo, y 32000 veces será mucho mas.
Muchas gracias por la información y por tu rápida respuesta.