Bien ahora llega el momento del ejemplo. En esta entrada veremos como variar la intensidad de un led utilizando el valor de entrada de un potenciómetro y un pin pwm, los pines pwm son todos aquellos marcados con ~, o lo que es lo mismos los pines 3, 5, 6, 9, 10, y 11 en el arduino uno.
Al final de la entrada dejare el código completo del ejemplo:
Comencemos con el código:
Primero declaramos las variables que contendrán el valor de salida, el valor de entrada del potenciómetro y los pines que utilizaremos:
int valor = 0; //Esta variable contendrá el valor del potenciómetro
int VSalida = 0; // Mientras que esta contendrá el valor de la salida
int Led = 9;
int poten = 0;
Ahora dentro del void setup() iniciamos el puerto serie para poder observar los valores del potenciómetro y de la salida desde el pc y declaramos el pin 9 como salida:
void setup()
{
pinMode(Led,OUTPUT);
Serial.begin(9600);
Serial.println("Iniciando...");
delay(50);
}
Dentro del void loop leeremos la entrada analógica del potenciómetro y la convertiremos con la ayuda de la función map(), ya que los valores de salida van de 0 a 255 mientras que los valores de entrada van de 0 a 1023, para luego escribirlos en la salida utilizando la función analogWrite():
void loop()
{
valor = analogRead(poten);
VSalida = map(valor,0,1023,0,255); /*En la función map() primero escribimos la variable que queremos convertir seguido del valor mínimo y del valor máximo de dicha variable, después de estos valores escribimos los valores a los que deseamos convertir nuestra variable comenzando tambien por el valor mínimo y luego el máximo aunque estos valores se podrian invertir para conseguir el efecto contrario por ejemplo: cuando el valor de la variable sea 0 la salida puede ser 255*/
Serial.print("Valor del potenciómetro: ");
Serial.println(valor);
Serial.print("Valor de la Salida: ");
Serial.println(VSalida);
analogWrite(Led,VSalida); //Esta función trabaja de una manera parecida a la función //digitalWrite() solo que en ella se pueden escribir valores concretos
delay(50);
}
Aquí os dejo el cableado:
int poten = 0;
int valor = 0;
int Led = 9;
int VSalida = 0;
void setup()
{
pinMode(Led,OUTPUT);
Serial.begin(9600);
Serial.println("Iniciando...");
delay(50);
}
void loop()
{
valor = analogRead(poten);
VSalida = map(valor,0,1023,0,255);
Serial.print("Valor del potenciómetro: ");
Serial.println(valor);
Serial.print("Valor de la Salida: ");
Serial.println(VSalida);
analogWrite(Led,VSalida);
delay(50);
}
No hay comentarios:
Publicar un comentario