3.- ANALÓGICO: LED+POT.



ENCENDIDO DE 5 LEDS CON UN POTENCIÓMETRO.

ÍNDICE:
0.- TEORÍA: EL POTENCIÓMETRO.
1.- PRÁCTICA: ENCENDIDO DE LEDES VARIANDO UN POTENCIÓMETRO.


0.- TEORÍA: EL POTENCIÓMETRO
Un potenciómetro es una resistencia variable, podemos elegir el valor que puede tomar. De esta forma, controlamos la intensidad de corriente que fluye por un circuito si éste está conectado en paralelo, así como la diferencia de potencial si está conectado en serie.
 El potenciómetro dispone de tres patillas: entre las dos de sus extremos existe siempre un valor fijo de resistencia, y entre cualquiera de los dos extremos y la patilla central tenemos una parte de ese valor. Es decir, la resistencia máxima que ofrece el potenciómetro entre sus dos extremos no es más que la suma de las resistencias entre un extremo y la patilla central.
1.- PRÁCTICA
 En este ejemplo observaremos que a medida que variamos la resistencia interna del potenciómetro, se irán encendiendo más o menos LEDs.
Los componentes que vamos a utilizar en este caso serán:

  • 5 LEDs (el color no es significativo)
  • 5 resistencias de 220Ω (una para cada LED)
  • 1 potenciómetro 50kΩ

Primero, procederemos a montar el circuito en la breadboard. Antes que nada, conectaremos el potenciómetro: la patilla de la derecha, la conectaremos a la alimentación de 5V (cable rojo), la patilla central la conectaremos al pin analógico A0 (cable amarillo), y finalmente, el cable blanco irá conectado a masa
 Una vez tenemos esta parte hecha, procedemos a conectar los LEDs. Hay que tener en cuenta, como se ha explicado en una entrada anterior (Diodo LED. Introducción y ejemplo), que para cada diodo LED, es necesario conectar una resistencia de 220Ω para evitar que éste pueda ser dañado.



CÓDIGO:
 int leds[]={2,3,4,5,6}; // simplificación a la hora de definir las variables. Está definiendo los 5 pines.
int pot; // Esta variable se refiere al potenciómetro
int n=0; // Variable auxiliar que utilizaremos como contador en el bucle.
void setup(){
   for(n=0;n<5;n++)
  {
  pinMode(leds[n],OUTPUT);
  }
  Serial.begin(9600);  //Iniciamos la comunicación con el puerto monitor serial
}


void loop(){
  pot = analogRead(0);// Definimos el valor de la variable pot como una analógica en el puerto A0

/*Monitorizamos el valor del potenciómetro con el serial.print seguido entre paréntesis de lo que queremos que nos muestre.*/
 Serial.print("Valor del potenciometro: ");
  Serial.print(pot);
  Serial.print("\n");
  delay(2000);
 
/*Ahora definimos los límites de acuerdo con los valores que va obteniendo el potenciómetro, para determinar a partir de qué valor se encenderá cada LED*/

  if(pot >= 0 && pot <= 150){ //Definimos el rango para el cual se encenderá el LED
 for(n=0;n<1;n++)  //solo se enciende un LED, de ahí el número 1
 digitalWrite(leds[n],HIGH); // Se encienden n LEDs, aquí n = 1
 for(n=1;n<5;n++) //Los demás LEDs están apagados
 digitalWrite(leds[n],LOW);
 }

//Para los demás bucles se procederá de la misma forma, modificando las condiciones de encendido

 if(pot >= 150 && pot <= 300){
 for(n=0;n<2;n++)
 digitalWrite(leds[n],HIGH);
 for(n=2;n<5;n++)
 digitalWrite(leds[n],LOW);
 }
 if(pot >= 300 && pot <= 450){
 for(n=0;n<3;n++)
 digitalWrite(leds[n],HIGH);
 for(n=3;n<5;n++)
 digitalWrite(leds[n],LOW);
 }
 if(pot >= 450 && pot <= 600){
 for(n=0;n<4;n++)
 digitalWrite(leds[n],HIGH);
 for(n=4;n<5;n++)
 digitalWrite(leds[n],LOW);
 }
 if(pot >= 600){
 for(n=0;n<5;n++)
 digitalWrite(leds[n],HIGH);
 }
 }