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:
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
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);
}
}
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);
}
}