es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

LED parpadeando solo cuando el Monitor Serie no está abierto.

Tengo un código muy simple que no se comporta como esperaría.

Aquí está el código:

int i;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  //digitalWrite(13, HIGH);
  i = random(1,5);
  Serial.println(i);
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
}

Con este código, el LED solo parpadea cuando el Monitor Serial está encendido y se queda encendido cuando el Monitor Serial está apagado. Otro problema que tengo es que si comento la línea actual digitalWrite(LED_BUILTIN, HIGH) y la reemplazo por la que tengo comentada, el LED no parpadeará incluso si el Monitor Serial está apagado.

Tengo un Arduino Micro.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber algunos problemas con este código. Vamos a analizarlo:

    En primer lugar, el LED solo parpadea cuando el Monitor Serial está encendido. Esto se debe a que la línea Serial.begin(9600) en la función setup() está causando un retardo e interfiriendo con el tiempo de la función digitalWrite(). Para solucionarlo, simplemente debes mover la línea Serial.begin(9600) al final de la función setup(), después de la función pinMode(). De esta manera, el Monitor Serial se inicializará después de que se haya completado la función pinMode().

    En segundo lugar, si comentas la actual línea digitalWrite(LED_BUILTIN, HIGH) y la reemplazas con la línea comentada, el LED no parpadeará. Esto se debe a que la función random() está generando un número entre 1 y 4, pero la función digitalWrite() solo se llama si el número aleatorio es mayor o igual a 2. Intenta cambiar la condición a i >= 1 en lugar de i >= 2 para asegurar que el LED siempre parpadee.

    Aquí está el código actualizado:

    int i;
    
    void setup() {
      pinMode(13, OUTPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      i = random(1,5);
      Serial.println(i);
      digitalWrite(13, HIGH);
      delay(1000);
      digitalWrite(13, LOW);
      delay(1000);
    }
    

    Con estos cambios, el LED debería parpadear sin importar si el Monitor Serial está abierto o cerrado. ¡Avísame si tienes alguna pregunta o inquietud adicional!

Comments are closed.