MOTOR POTENCIÓMETRO Y 4 LEDS
MOTOR POTENCIÓMETRO Y 4 LEDS
Esta es una nueva práctica a desarrollar en la que a través de una placa base, un potenciómetro, un regulador, un motor, 4 leds, cables y resistencias de 220 ohmios para permitir el paso de la corriente entre los distintos componentes, debemos realizar un sistema en el que se vaya iluminando un led según vamos moviendo el regulador y apagando los demás leds de tal manera que en el momento en el que movamos hacia un extremo el regulador pase lo mismo con el led, encendiéndose así el de su derecha o izquierda (según el lado al que muevas el regulador) y apagándose los demás tal y como podemos observar el el siguiente vídeo:
Como siempre todo este proceso práctico no serviría de nada sin su dicho código el cual es quien manda encender y apagar los leds según vamos moviendo el regulador;
#include <Servo.h> //Incluimos la libreria que maneja servos
#include <stdio.h>
#define POTENCIOMETRO 0 //Pin de entrada analógica para el potenciómetro
#define MOTOR 9 //Pin de conexión del motor
#define ESPERAMOTOR 15 //Tiempo de espera Motor
#define ESPERALEDS 500 //Tiempo de espera LEDS
#define LEDROJO 2 //Pin de conexión el LED rojo
#define LEDAMARILLO 3 //Pin de conexión el LED amarillo
#define LEDVERDE 4 //Pin de conexión el LED verde
#define LEDAZUL 5 //Pin de conexión el LED azul
Servo servomotor; //Creamos un objeto servo
int valorPort; //Variable que recoge el valor del potenciómetro
int valorMap; //Variable que ha mapeado el valor para el motor
void setup()
{
servomotor.attach(MOTOR); //Conectamos el servomotor al pin 9
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
}
void loop()
{
valorPort=analogRead (POTENCIOMETRO); //Leemos el valor del potenciometro (valores de 0 a 1023)
valorMap=map(valorPort, 0, 1023, 0, 180); //Mapeamos el valor del potenciometro a valores de 0 a 180
servomotor.write(valorMap); //Ponemos el valor del servomotor
delay(ESPERAMOTOR); //Tiempo de espera
Serial.println(valorPort);
Serial.println(valorMap);
if (valorMap<=45) //Si giramos el servo entre 0 y 45 grados
{
digitalWrite(LEDROJO, HIGH); //Encendemos el LED rojo
delay(ESPERALEDS); //Tiempo de espera
Serial.println ("rojo");
digitalWrite(LEDVERDE, LOW);
digitalWrite(LEDAMARILLO, LOW);
digitalWrite(LEDAZUL, LOW);
}
else if(valorMap>45 && valorMap<=90) //Si giramos el servo entre 46 y 90 grados
{
digitalWrite(LEDAMARILLO,HIGH) ; //Encendemos el Led amarillo
delay(ESPERALEDS); // Tiempo de espera
Serial.println ("amarillo");
digitalWrite(LEDAZUL, LOW);
digitalWrite(LEDROJO, LOW);
digitalWrite(LEDVERDE, LOW);
}
else if (valorMap>90 && valorMap<=135) //Si giramos el servo entre 91 y 135 grados
{
digitalWrite(LEDVERDE,HIGH); //Encendemos el led verde
delay(ESPERALEDS); //Tiempo de espera
Serial.println ("verde");
digitalWrite(LEDAMARILLO, LOW);
digitalWrite(LEDAZUL, LOW);
digitalWrite(LEDROJO, LOW);
}
else if (valorMap>135 && valorMap<=180); //Si giramos el servo entre 136 y 180 grados
{
digitalWrite(LEDAZUL, HIGH); //Encendemos el led azul
delay(ESPERALEDS); //Tiempo de espera
Serial.println ("azul");
digitalWrite(LEDAMARILLO, LOW);
digitalWrite(LEDROJO, LOW);
digitalWrite(LEDVERDE, LOW);
}
}
Esquema en FRITZING:
Comentarios
Publicar un comentario