CONTENIDO ►
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

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:
- utilizamos el pin 11 con una señal PWM para la conmutación suave de la tira de LEDs;
- modificar la función delay() para cambiar la velocidad de conmutación.

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:
- en la expresión if (millis() – counttime < 10000) puedes poner cualquier valor en milisegundos en el que la luz no se apague;
- la función delay(200); puede afectar a la velocidad de respuesta del sensor, pero permite descargar ligeramente el procesador

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é:
- en la expresión if (millis() – counttime < 10000) puedes poner cualquier valor en milisegundos en el que la luz no se apague;
- la función delay(200); puede afectar a la velocidad de respuesta del sensor, pero permite descargar ligeramente el procesador

Deja una respuesta