Error con el println()

En el sketch que adjunto, al llegar al primer primer println() solo devuelve dos caracteres y detiene la ejecución. El sketch está compilado. No devuelve código de error.

int contador = 0;
int pulsos = 0;
int timeold = 0;
int timeact = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Tiempo   Pulsos");
  Serial.println();
  pinMode(2, INPUT);
  timeold = millis();
  timeact = millis();
}

void loop() {
  // put your main code here, to run repeatedly:
  for (contador = 0; contador < 6; contador++); {
    if (digitalRead(2) == HIGH) {
      pulsos = pulsos + 1;
    }
    if (millis - timeact >= 1000) {
      Serial.print(timeact - timeold);
      Serial.print("   ");
      Serial.println(pulsos);
      timeact = millis() - timeold;
      pulsos = 0;
    }
  }
  Serial.println(" ");
  exit(0);
}

Gracias por la ayuda

exit(0);

Why do you do this? ... it stops the program.
Por qué haces esto? Detiene el programa.

if (millis-timeact>=1000)

should be...
debiera ser...

if (millis()-timeact>=1000)

Thank you for your answer.

It is a test version, so I want to stop it after 5 cycles.
But my problem is before this. The first Serial.println() only sends the first 2 characters (Ti) to the Monitor serial and stops de execution. And it doesn´t jump a line. Same for serial.print().

Thank you

No lo digo con certeza pero se me ocurre que como enviar 2 caracteres por serial a 9600 bps toma casi 2 ms, para cuando tiene que imprimir el 3ro (y los demás) se ejecuta

exit(0);

y puede ser el causante del problema.

Si estás haciendo pruebas y tu intención es detenerlo en ese punto usa

while(1);

Pero puedes lograr lo mismo haciendo todo en setup() y dejando loop() vacío. Así te evitas esas instrucciones "raras". :wink:

Saludos

1 Like

Gracias Gatul!

Efectivamente, el while(1) resolvió el problema.

Saludos!

No uses estas funciones a menos que tengas bien claro para que sirven.

Gracias!