sábado, 31 de julio de 2010

Potenciómetro en Arduino

Últimamente, cojo mucho el Arduino, como podéis observar si veis las últimas entradas, que tratan sobre el. Debe ser el verano, que me altera la sangre. Hoy me ha dado por experimentar con un potenciómetro, que tenía algo muerto de risa en un cajón de mi escritorio, y os voy a poner parte de los experimentos que he hecho.

Antes de nada, para los noveles, decir que un Potenciómetro es, ni mas ni menos, un resistor cuyo valor es variable. En mi caso, es una "ruletita", la cual puedo girar para variar el valor de resistencia del potenciómetro.
Aquí una foto del que estoy usando:

Como vemos, tenemos 3 pines:
Los extremos, los vamos a conectar, en este caso, uno a GND y otro al pin de salida de 5V. El del medio, lo vamos a conectar a un pin analógico, para leer los valores que nos devuelva.



El ejemplo mas simple (Que podéis leer en la página Arduino) es hacer parpadear un led (Típico ejemplo blink), pero, según la resistencia del potenciómetro, este parpadeará más o menos rápido. El montaje quedaría así: (Antes de nada, si, lo sé, necesito una placa de prototipado)



Y sin mas rodeos, el código del programa:

int lPin = 13;
int pPin = 5;
int val = 0;


void setup()
{
pinMode(lPin, OUTPUT);
}

void loop()
{
val = analogRead(pPin);
digitalWrite(lPin, HIGH);
delay(val);             
digitalWrite(lPin, LOW);
delay(val);   
}



Como vemos, es bastante sencillo. Simplemente declaramos los pin's, leemos el valor analógico de pPin y se lo asignamos a val, que será el tiempo de los delays.

Podemos hacer modificaciones al programa y hacer que los valores se envíen por serial al ordenador. En setup(), añadimos Serial.begin (9600); (Es 9600 por defecto)

Y en el programa, en loop(), añadimos un print: Serial.println (val); (Con esto imprimimos por serial el valor actual del val).

Como bien podemos imaginar, esto puede tener muchas utilidades. A mi se me ocurre, por ejemplo, usarlo como acelerador para un pequeño juego. O como dirección (Por ejemplo, si incrementa, gira derecha, ..) Etc. Como siempre digo, cuando haga cosas mas interesantes, las iré subiendo aquí.

Probando con Speaker

Podemos hacer algo bastante gracioso (Sobre todo si tus vecinos duermen) con un simple speaker y una modificación del programa, Podemos usar tone(pin, frecuencia, duración); para generar tonos con un speaker desde arduino. Por lo cual, el código nos quedaría así:

int lPin = 13;
int pPin = 5;
int val = 0;  


void setup()
{
pinMode(lPin, OUTPUT);
}

void loop()
{
val = analogRead(pPin);
tone (lPin, val);
}



Como vemos, actualizamos constantemente el valor de frecuencia, pudiendo variar el valor del potenciómetro para generar tonos con distinta frecuencia.

A continuación un ejemplo (Grabado por mi, perdonen la calidad) del Arduino con el Speaker y el potenciómetro:



2 comentarios:

  1. Tus vecinos te desearán lo mejor ^^

    ResponderEliminar
  2. una consulta se pueden usar potenciometros de cualquier valor en arduino ?

    ResponderEliminar