OBJETIVO
Utilizaremos Arduino para leer a través de una entrada analógica el voltaje que suministra una pila. Dependiendo de este voltaje, encenderemos un LED de un color. Si la pila está nueva, se encenderá un LED verde. Si la pila no es nueva pero se ha consumido parte de su energía encenderemos un LED amarillo. Por último, si la pila está gastada o no suministra el suficiente voltaje, encenderemos un LED rojo.
OjO
Debemos de tener mucho cuidado con el tipo de pila y de batería que vamos a medir. Es muy peligroso suministrar más de 5V a los pines analógicos de Arduino. Mucho ojo con una pila de 9V, las cuadradas. Como bien he dicho antes, estas pilas superan con creces el límite de 5V.
MATERIALES
- Arduino UNO o cualquier placa de Arduino
- Protoboard donde conectaremos los componentes
- Cables para la conexión entre los componentes y la placa
- 3 resistencias de 220 Ω
- 1 resistencia de 10 kΩ
- 1 LED rojo de 5 mm
- 1 LED amarillo de 5 mm
- 1 LED verde de 5 mm
A continuacion se realizara el montaje del medidor, presta atencion principalmente a las resistencias y los cables al conectar.
PROGRAMACION
Ahora toca la parte de la lógica y la programación, aqui la pondre para simplemente copiarlo:
// Pines para los LEDs
#define LEDVERDE 2
#define LEDAMARILLO 3
#define LEDROJO 4
#define ANALOGPILA 0
// Variables
int analogValor = 0;
float voltaje = 0;
int ledDelay = 800;
// Umbrales
float maximo = 1.6;
float medio = 1.4;
float minimo = 0.3;
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
// Los pines de LED en modo salida
pinMode(LEDVERDE, OUTPUT);
pinMode(LEDAMARILLO, OUTPUT);
pinMode(LEDROJO, OUTPUT);
}
void loop() {
// Leemos valor de la entrada analógica
analogValor = analogRead(ANALOGPILA);
// Obtenemos el voltaje
voltaje = 0.0048 * analogValor;
Serial.print("Voltaje: ");
Serial.println(voltaje);
// Dependiendo del voltaje mostramos un LED u otro
if (voltaje >= maximo)
{
digitalWrite(LEDVERDE, HIGH);
delay(ledDelay);
digitalWrite(LEDVERDE, LOW);
}
else if (voltaje < maximo && voltaje > medio)
{
digitalWrite(LEDAMARILLO, HIGH);
delay(ledDelay);
digitalWrite(LEDAMARILLO, LOW);
}
else if (voltaje < medio && voltaje > minimo)
{
digitalWrite(LEDROJO, HIGH);
delay(ledDelay);
digitalWrite(LEDROJO, LOW);
}
// Apagamos todos los LEDs
digitalWrite(LEDVERDE, LOW);
digitalWrite(LEDAMARILLO, LOW);
digitalWrite(LEDROJO, LOW);
}
El montaje quedaria de esa forma, habiendo logrado el objetivo.
No hay comentarios:
Publicar un comentario