Controla una tira de LEDs Arduino

El control de una tira de LEDs de 12 voltios a través del Arduino puede hacerse con un módulo de relés o un transistor – los pines del Arduino sólo dan salida a 5 voltios. En el primer caso, se oirá un chasquido cuando se active o desactive el relé magnético. Además, un relé no proporcionará un efecto de atenuación suave de las luces. Vea cómo conectar y conducir una tira de LED a un microcontrolador para crear una iluminación inteligente.

Para esta actividad necesitaremos:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • tira de LEDs 12V;
  • sensor de movimiento;
  • un módulo de transistores o relés;
  • placa de pruebas;
  • cables de conexion.

Cómo conectar y programar una tira LED con Arduino

Conectar la tira de LEDs de 12V al Arduino
Cómo conectar la tira de LEDs de 12V al Arduino Uno

En la imagen presentamos la primera opción para conectar la tira de LEDs al Arduino: a través de un transistor. Conexión mediante relé y con sensor de movimiento Arduino, ver abajo. Un transistor bipolar o de efecto de campo permite encender la tira de LEDs con suavidad y regular el brillo de la luz. Se puede utilizar una tira de LEDs de 5 o 12 voltios. Monta el circuito y carga el siguiente código de ejemplo en la placa Arduino Uno.

Programa Arduino control de tiras de LED y transistor

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

void loop() {
   for (int i=0; i<=255; i++) {
     analogWrite(11, i);
     delay(5);
   }
   for (int i=255; i>=0; i--) {
     analogWrite(11, i);
     delay(5);
   }
}

Explicación del código control de tiras de LED y transistor:

  1. utilizamos el pin 11 con una señal PWM para la conmutación suave de la tira de LEDs;
  2. modificar la función delay() para cambiar la velocidad de conmutación.
Control de tiras de luz LED con transistor y sensor de movimiento
Control de tiras de luz LED con transistor y sensor de movimiento

En el siguiente ejemplo, utilizaremos un sensor de movimiento y un transistor para que la tira de LEDs 12V del Arduino se encienda suavemente. El código utilizará varios ciclos de tiempo para que la luz no se apague inmediatamente, sino 10 segundos después de que el sensor haya dejado de detectar movimiento en la habitación. Utiliza un transistor de potencia adecuado, recuerda que un metro de tira LED consume 1 amperio.

Programme Arduino tiras de LED y sensor de movimiento

unsigned long counttime;
byte w = 2;

#define LED  11
#define PIR  2

void setup() {
   pinMode(LED, OUTPUT);
   pinMode(PIR, INPUT);
}

void loop() {
   delay(200);

// si hay movimiento, encienda la luz suavemente y cambie a (w == 1)
   if (digitalRead(PIR) == HIGH) {
     for (int i = 0; i <= 255; i++) {
       analogWrite(LED, i);
       delay(5);
       }
     w = 1;
   }
   while (w == 1) {
      delay(200);
 
// si no hay movimiento, pasar al bucle while (w == 0)
      if (digitalRead(PIR) == LOW) { counttime = millis(); w = 0; }
   }

   while (w == 0) {
      delay(200);

// si no hay movimiento durante 10 segundos, apague la luz suavemente
      if (millis() - counttime > 10000) {
         for (int i = 255; i >= 0; i--) {
            analogWrite(LED, i);
            delay(5);
         }
         w = 2;
      }

//si se detecta movimiento, entra (w == 1) sin apagar la luz
      if (digitalRead(PIR) == HIGH) { w = 1; }
   }
}

Explicación del código tiras de LED y sensor de movimiento:

  1. en la expresión if (millis() – counttime < 10000) puedes poner cualquier valor en milisegundos en el que la luz no se apague;
  2. la función delay(200); puede afectar a la velocidad de respuesta del sensor, pero permite descargar ligeramente el procesador
Control de tiras LED con módulo de relé y sensor de movimiento
Control de tiras LED con módulo de relé y sensor de movimiento

El siguiente ejemplo muestra la posibilidad de utilizar un sensor de movimiento para encender automáticamente la luz. Arduino la tira de LEDs 12V no se apaga inmediatamente, sino 10 segundos (10000 milisegundos) después de que el sensor haya dejado de detectar movimiento en la habitación. Monta el circuito con el módulo de relés como en la imagen anterior y carga el programa en el microcontrolador Arduino Uno.

Programme Arduino tiras de LED y módulo de relé

unsigned long counttime;
byte w = 1;

#define LED  11
#define PIR  2

void setup() {
   pinMode(LED, OUTPUT);
   pinMode(PIR, INPUT);
}

void loop() {
   delay(200);
   // si hay movimiento, encienda las luces
   if (digitalRead(PIR) == HIGH) { digitalWrite(LED, HIGH); w = 0; }
   // si no hay movimiento - inicie el contador y entre mientras
   if (digitalRead(PIR) == LOW) { counttime = millis(); w = 1; }

   while (w == 1) {
      // si han transcurrido 10 segundos, apague la luz
      if (millis() - counttime > 10000) {
        digitalWrite(LED, LOW); w = 0;
      }
      // si hay movimiento - encienda la luz y salga 
      if (digitalRead(PIR) == HIGH) {
        digitalWrite(LED, HIGH); w = 0;
      }
   }
}

Explicación del código tiras de LED y módulo de relé:

  1. en la expresión if (millis() – counttime < 10000) puedes poner cualquier valor en milisegundos en el que la luz no se apague;
  2. la función delay(200); puede afectar a la velocidad de respuesta del sensor, pero permite descargar ligeramente el procesador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *