Páginas

jueves, 26 de febrero de 2015

Arduino Uno. Potenciómetro para controlar el encendido de 6 leds

Hola

Como una vez que se comienza no se puede parar de jugar con el Arduino, aquí dejo el segundo ejemplo, el uso de un potenciómetro para regular en encendido de 6 leds.

Jugamos además con las comunicaciones por el puerto serie con el PC para monitorizar el valor del potenciómetro.

El montaje es:


El 'plano' del circuito es:



El código es:

/*
SEGUNDO EJERCICIO 2015-02-25
Finalidad. Se trata de encender hasta seis led en funcion de la
resistencia de cierto potenciomentro. A mayor resistencia mas
led encendidos.
*/

//Colocamos los Led en las salidas 8-13
const int LEDPIN08 =  8;
const int LEDPIN09 =  9;
const int LEDPIN10 =  10;
const int LEDPIN11 =  11;
const int LEDPIN12 =  12;
const int LEDPIN13 =  13;

// Lectura del potenciomentro
int pot;

//Numero de leds activos
int numleds=0;

void setup(){

   //Iniciamos las salidas digitales
   pinMode(LEDPIN08,OUTPUT);
   pinMode(LEDPIN09,OUTPUT);
   pinMode(LEDPIN10,OUTPUT);
   pinMode(LEDPIN11,OUTPUT);
   pinMode(LEDPIN12,OUTPUT);
   pinMode(LEDPIN13,OUTPUT);

   //Iniciamos comunicacion con puerto serie del PC
   //para monitorizar la resistencia del potenciometro
   Serial.begin(9600);
}

void loop(){

   //Leemos el valor del potenciometro
   pot = analogRead(0);

   //Mapeamos el nmero de leds activos
   numleds = map(pot, 0, 1023, 0, 6);

   //Mostramos por consola los valores: potenciometro - numleds
   Serial.print(pot);
   Serial.print("-");
   Serial.print(numleds);
   Serial.print("\n");

   //Encendemos el numero de leds adecuado
   switch (numleds) {
    case 0:
      digitalWrite(LEDPIN08,LOW);
      digitalWrite(LEDPIN09,LOW);
      digitalWrite(LEDPIN10,LOW);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break;
    case 1:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,LOW);
      digitalWrite(LEDPIN10,LOW);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break;
    case 2:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,LOW);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break;
    case 3:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break; 
    case 4:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,HIGH);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break; 
    case 5:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,HIGH);
      digitalWrite(LEDPIN12,HIGH);
      digitalWrite(LEDPIN13,LOW);
      break; 
    default: //los seis leds
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,HIGH);
      digitalWrite(LEDPIN12,HIGH);
      digitalWrite(LEDPIN13,HIGH);
   }
}

Y un video donde se puede ver funcionando:



Un saludo

No hay comentarios:

Publicar un comentario