LED RGB como alarma de nivel
- publicado por Ing. Jesús Martínez
- Fecha agosto 30, 2023
Contenido:
Materiales:
- Arduino UNO
- LED RGB
- 3 Resistencias 330 ohm
- Protoboard
- Potenciómetro 10K ohm
Introducción:
En la era actual de la automatización y la interconexión, las posibilidades para crear proyectos ingeniosos y funcionales con dispositivos electrónicos son casi infinitas. Desde el control del hogar hasta la monitorización industrial, la tecnología nos permite diseñar soluciones que se adaptan a nuestras necesidades específicas. En esta entrada de blog, vamos a explorar un emocionante proyecto: la creación de una alarma de nivel utilizando un Arduino y luces RGB.
Imagina tener la capacidad de recibir alertas visuales claras y llamativas cuando un tanque de líquido alcanza ciertos niveles. Ya sea para evitar desbordamientos, para mantener un nivel óptimo en una piscina o para supervisar reservas de agua, esta alarma de nivel puede ser una herramienta valiosa en una amplia gama de aplicaciones.
En este proyecto, vamos a utilizar un Arduino, un microcontrolador programable ampliamente utilizado en el mundo maker, y luces RGB para construir nuestra alarma de nivel. Las luces RGB nos permitirán crear señales visuales altamente personalizables, mientras que la programación del Arduino nos permitirá definir umbrales precisos para cada nivel.
Desarrollo:
Comencemos con el armado de nuestro circuito, sigue al detalle el siguiente diagrama para que nuestro resultado sea replicable en tu proyecto.
Una vez armado tu circuito, es momento de pasar a la programación, comenzaremos definiendo los pines con los cuales trabajaremos, tanto los analógicos para el potenciómetro como los digitales para el control de nuestro led RGB. En esta ocasión hemos decidido controlar el LED mediante señales PWM para que tengas más control sobre los colores que replicará el LED, así que los pines digitales a utilizar serán con capacidad PWM.
#define pinA A0
#define pinR 11
#define pinB 10
#define pinG 9
Ahora declararemos la variable vPot, la cual almacenará la lectura analógica en el pin A0
int vPot;
Es momento de declarar el funcionamiento que tendrán nuestros pines, en este caso, los pines digitales para el LED RGB, todos ellos funcionarán como salidas y esto lo declararemos en la función setup()
.
void setup() {
pinMode(pinR, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinG, OUTPUT);
Serial.begin(9600);
}
Excelente, ahora trabajemos sobre la función loop()
, comenzaremos obteniendo la lectura analógica del pin A0 mediante analogRead()
y mapeando su valor entre 0 y 3, esto para que de la lectura se generen 3 rangos que vamos a utilizar.
void loop() {
vPot = analogRead(pinA);
int mPot = map(vPot, 0, 1023, 0, 3);
Serial.println(mPot);
}
Perfecto, vamos muy bien, ahora es momento de incluir un switch case para controlar los estados del LED RGB con respecto al valor de la lectura analógica, definiremos el color verde para el primer rango, amarillo para el segundo y rojo para el tercero y default. Estos colores que vamos a definir los trabajaremos en el mismo rango que se trabajan los colores de manera digital, es decir en un rango de 0 a 255, donde el cero representa la menor intensidad y el 255 la mayor intensidad para dicho color(aquí no necesitamos mapear nada ya que es el mismo rango de trabajo de analogWrite()
en Arduino). A su vez estos valores de color serán enviados a la función setRGB()
la cual se encargará de generar las señales PWM y aplicarlas a los pines en los cuales se encuentra el LED RGB.
void loop() {
vPot = analogRead(pinA);
int mPot = map(vPot, 0, 1023, 0, 3);
switch (mPot) {
case 0:
setRGB(0, 255, 0);
break;
case 1:
setRGB(255, 255, 0);
break;
case 2:
setRGB(255, 0, 0);
break;
default:
setRGB(255, 0, 0);
break;
}
Serial.println(mPot);
}
Excelente, estamos casi por terminar nuestro código, solo nos resta escribir la función setRGB()
void setRGB(int R, int G, int B) {
analogWrite(pinR, R);
analogWrite(pinB, B);
analogWrite(pinG, G);
}
Y listo, hemos terminado nuestro pequeño proyecto.
Resultados:
Te comparto el resultado en el simulador Tinkercad para que puedas compararlo con el tuyo. Enlace al simulador
Etiqueta:Arduino
Soy un apasionado por la innovación tecnológica, el desarrollo y el emprendimiento. Durante mi educación superior me enfoqué en la programación de software para visión artificial e inteligencia artificial. Poco después al graduarme tuve la oportunidad de aplicar estos conocimientos en el desarrollo de soluciones para empresas como General Motors, Ford, Harley-Davidson, Mack, Tesla y unas cuantas empresas más del ramo automotriz.