lunes, 31 de mayo de 2010

arduino

INTRODUCCIÓN

Seguro que has oído hablar decir que los ordenadores guardan y transmiten la información a base de unos y ceros. Por ejemplo, si un ordenador va a escribir un punto en la pantalla, le manda un conjunto de ceros y unos, por ejemplo 01001001.

O quizás le manda un mensaje algo más largo a base de ceros y unos, y ese mensaje quiere decir que dibuje un punto de un determinado color en determinado lugar de la pantalla. Pero para ello la pantalla debe entender ese lenguaje de ceros y unos, ésta no es un ordenador.

Está claro que debe haber algún aparato situado entre el ordenador y la pantalla que lea ese mensaje de ceros y unos y según lo que diga ese mensaje, haga que la pantalla presente una serie de imágenes. Ese aparato se llama tarjeta gráfica, y tu ordenador tiene también una tarjeta de sonido, que está entre el ordenador y el altavoz.

Cuando tú compras el ordenador, se supone que éste tendrá que controlar una serie de aparatos como la pantalla, el altavoz, el micrófono y la impresora, y por lo tanto ya te lo venden con una serie de tarjetas controladoras, pero imagina que vas a usar el ordenador para controlar el funcionamiento de otros aparatos, por ejemplo la lavadora, la nevera, el aire acondicionado, etc.

Necesitarías una tarjeta controladora para situarla entre estos aparatos y tu ordenador. No existe una tarjeta controladora que sirva para controlar cualquier aparato, sino que según lo que quieras controlar, necesitarás comprar un tipo de tarjeta controladora.

Existen una serie de tarjetas controladoras que se utilizan para controlar pequeños aparatos tales como leds, pequeños motores, etc. Hay tarjetas controladoras que además de servir de interface entre el ordenador y ciertos aparatos, también son capaces de almacenar programas, de modo que pueden ejecutar dichos programas una vez desconectadas del ordenador. Una de ellas es arduíno duemilanove, que es con la que vamos a trabajar:





Fíjate en la tarjeta y verás una serie de componentes que no sabes lo que son, ni yo tampoco, y tampoco interesan, pero hay otros que sí debemos saber lo que son:
-
Arriba a la izquierda vemos un cuadradito plateado, que es el puerto USB. Un puerto es una salida para conectar a otro aparato. En este caso el puerto USB de la placa se usa para conectarla al ordenador, a través del puerto USB de éste.
-
Abajo a la derecha verás un chip negro grande. Es el
microprocesador, es el cerebro de la tarjeta.
-
Arriba a la derecha vemos unas conexiones en las que hay escrito digital. Son entradas y salidas digitales, son las conexiones con los aparatos que vamos a controlar.
Vemos abajo que hay unas conexiones en las que hay escrito analog in. Son entradas analógicas ¿Qué diferencia hay entre una entrada analógica o digital? La digital solamente puede tener dos valores: el potencial es cero o el potencial es alto, y entonces es un uno. Sólo puede tener valor cero o uno, igual que una bombilla sólo puede estar encendida o apagada y no le puedes dar un valor intermedio. Las entradas analógicas pueden leer el valor del potencial de la entrada.
PROGRAMACIÓN

Queremos controlar una serie de aparatos desde el ordenador, para eso compramos la tarjeta controladora, la conectamos al ordenador,la instalamos, conectamos los aparatos que queremos controlar, ¿y ahora qué? ¿Cómo le decimos a la tarjeta lo que queremos que hagan los aparatos?

Sabemos que debemos mandar a la tarjeta una serie de ceros y unos con el mensaje sobre lo que queremos que hagan los aparatos, pero no conocemos ese lenguaje de ceros y unos. Y aunque lo conociéramos, serían demasiados ceros y unos, y sería una tarea muy pesada.

Para eso existen los llamados lenguajes de programación. Son lenguajes relativamente fáciles mediante los cuales nos comunicamos con la placa. Luego existen unos programas que traducen ese lenguaje al mensaje de ceros y unos, al código máquina, y lo envían a la tarjeta.

O sea que necesitamos una aplicación que me permita escribir instrucciones en un determinado lenguaje, y esa aplicación lo traduzca a código máquina. Ese tipo de aplicaciones se llaman IDE o entornos de desarrollo. No sólo existen IDE para crear programas para comunicarse con una tarjeta controladora, sino para crear aplicaciones informáticas, páginas web, etc.

Así es la ventana del entorno de desarrollo de arduíno, en ella puedes
ver escrito un programa con instrucciones para la tarjeta.












LENGUAJE ARDUÍNO DE PROGRAMACIÓN


Una vez tienes instalada la placa y el ID, y conectados a la placa los componentes que quieres controlar, sólo te falta conocer el lenguaje en el cual le vas a mandar las instrucciones a la placa.

El lenguaje que vamos a utilizar es propio de arduíno y está basado en otro lenguaje llamado processing, y aprenderlo es
un poquito complicado, así que vamos a ir poco a poco.
Lo primero que vamos a hacer es aprender a decirle a la placa
“enciende un led, espéra un poco y apágalo”
Este sería el programa:

void setup(){
pinMode(13,OUTPUT);
}
void loop(){
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13,LOW);
delay(100);
}

El programa tiene dos partes: setup y loop. Cada parte tiene una serie de instrucciones entre llaves.

El setup configura la tarjeta. En este caso, le estamos diciendo que el pin (conexión) número 13 de la tarjeta es una salida. Esto quiere decir que desde la tarjeta le diremos a un componente conectado al pin 13 que se active o se desactive.

En este caso vamos a conectar un LED desde el pin 13 de la tarjeta hasta el pin de masa (GND).

No vamos a entrar por ahora en el significado de la palabra void. Por ahora simplemente tendremos en cuenta que hay que escribirla ahí aunque no sepamos por qué.

El loop es un bucle. Las instrucciones que están entre llaves después de él se ejecutan, y cuando acaban se vuelven a ejecutar y así hasta que se desconecte la tarjeta.
Vamos a ver lo que hacen las instrucciones del loop:

digitalWrite(13,HIGH); Esta instrucción le da un valor de 5V al pin 13, y de este modo el LED conectado al mismo se encenderá.

delay(200); Esta instrucción espera 200 milisegundos.

digitalWrite(13,LOW); Da un valor de 0V al pin 13 de la tarjeta. Es decir, apaga el LED.

delay (100); Espera 100 ms.

Como ves, este es un programa que hace que un LED funcione como intermitente. Modifícalo para que funcione como intermitente estando un segundo encendido y medio segundo apagado .


El resto de instrucciones los puedes ver en el enlace siguiente:

instrucciones

Comienza leyendo la instrucción digitalRead e if, y haz los siguientes programas:

1. Uno similar al anterior pero de modo que el intermitente sólo parpadee si está pulsado un pulsador. Dibuja el circuito correspondiente, representando la tarjeta como un conjunto de puntos númerados según el pin de que se trate. Representa sólo los pines que utilices.

2. Encender alternativamente durante un segundo cinco leds. Al llegar al último comenzar por el primero.

3. El anterior, pero al llegar al último, se encienden cinco veces durante un segundo, parando medio segundo entre una y otra, y luego vuelve a empezar.

4. Se encienden alternativamente como en el ejercicio 2, pero al pulsar el pulsador cambia el sentido.