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

Entradas populares de este blog

MONO LOCO

SIMÓN DICE

CRUMBLE