En mi Arduino, ¿por qué está siempre encendido este LED, aunque le dije que se apagara?

4

Soy un desarrollador de software que trata de entender cómo funcionan las computadoras en un nivel inferior.

He comprado el Microcontrolador Arduino Uno y he seguido todos los tutoriales de LadyAda.

Me he dado cuenta de que el LED (no el LED de alimentación) siempre está ENCENDIDO a menos que esté parpadeando, incluso si proporciono el siguiente programa, que borra la memoria y debería apagar el LED:

#include <EEPROM.h>

void setup()
{
  // write a 0 to all 512 bytes of the EEPROM
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, 0);

  // turn the LED on when we're done
  digitalWrite(13, LOW);
}

void loop()
{
}

¿Por qué el LED está siempre encendido? He buscado en Google y he leído algunas preguntas similares en otro foro como this , pero tengo Aún no encontré una respuesta.

    
pregunta w0051977

3 respuestas

8

Creo que su problema es que no está configurando ese pin como salida. Use pinMode(13, OUTPUT) para configurar el pin 13 para que se use como salida digital. Dado que los pines GPIO se pueden usar como entrada o salida / activación, es necesario que el microcontrolador sepa en qué modo se debe configurar ese pin.

#include <EEPROM.h>
int led = 13;

// the setup routine runs once when you press reset:
void setup() 
{                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);

  // write a 0 to all 512 bytes of the EEPROM
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, 0);

  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
}

void loop() 
{
}

Puede ver el ejemplo básico de Hello World aquí , que muestra el parpadeo del LED pin 13.

Además, debe tener cuidado al escribir en la EEPROM, como se señala en los comentarios, solo tiene un ciclo de vida de 100k.

    
respondido por el Garrett Fogerlie
5

Nadie ha respondido la pregunta. ¿Por qué el LED solo se apaga cuando el pin 13 está configurado en SALIDA con escritura digital BAJA? Claro que entiendo que en el modo INPUT-PULLUP se suministra voltaje al pin a través de una resistencia pull-up que, en teoría, puede hacer que el LED brille tenuemente. Pero la realidad es que el LED brilla intensamente cuando el pin 13 es una ENTRADA, baja o alta. Si el pin 13 está configurado en ENTRADA / BAJA (que es el valor predeterminado en el encendido), ¿de dónde proviene la tensión y la corriente para impulsar el LED? Y nadie se atreva a volver a la mierda sobre la resistencia de pull-up. Como dije, el LED es brillante independientemente de si el pin 13 está ENTRADA-BAJA o EN ENTRADA-ALTA.

Parece que el UNO r3 funciona de manera diferente a las versiones anteriores. Esquema REF: enlace El pin 13 es una entrada para un amplificador operacional. Si hay un voltaje en el pin 13, el amplificador operacional coincidirá con el voltaje en su salida que impulsa el LED. Debido a que los pines de ENTRADA tienen una alta impedancia, sin una resistencia de bajada su voltaje flotará, o quizás haya una minúscula fuga en el microcontrolador y sin una resistencia de bajada habrá voltaje en la patilla. Las entradas del amplificador operacional tienen una impedancia infinita teórica.

Esto es una mejora de diseño. Con la versión anterior no se podía usar el pin 13 como INPUT-PULLUP porque el voltaje solo sería de 1.7V porque el LED estaba drenando la corriente que entraba a través de la resistencia de pull-up. Con el UNO R3, el op-amp no drenará la corriente de pull-up, lo que nos permite configurar el pin 13 como INPUT_PULL-UP. Sin embargo, el Pro-mini aún tiene el diseño antiguo, y si quieres usar el pin 13 como INPUT-PULLUP, debes apagar la resistencia del tablero.

    
respondido por el Matt
0

Todos los que tengan problemas con L (pin 13) en su Arduino Uno, pongan este código como está en una pantalla en blanco en la ventana del IDE. Resolverá el problema.

const int led = 13;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led,LOW);
}

Espero que esto ayude :)

    
respondido por el Astrokid_21

Lea otras preguntas en las etiquetas