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