Éste es el primero de una serie de posts que irán
descubriendo poco a poco el uso de microcontroladores para realizar diferentes
tareas. Éstas irán creciendo en dificultad y/o complejidad progresivamente, con
la idea de ir consolidando el conocimiento
de manera gradual, y sobre todo práctica.
¿Es necesario tener conocimientos
previos de electrónica? Sí, o al menos recomendable. Aunque trataré de explicar
en algunos montajes ciertas propiedades sobre los componentes nuevos que vayan
apareciendo, no profundizaré en ello, con lo que puede que queden algunas
lagunas. En cualquier caso se admiten preguntas para aclarar cualquier duda.
¿Y de programación? Estamos en el mismo caso que antes,
tener ciertas nociones de programación orientada a objetos no vendría mal. El
lenguaje del microcontrolador que usaré para los ejemplos, el Arduino, es muy
similar al Lenguaje C de programación. Intentaré ser todo lo descriptivo
posible con el código, e id añadiendo la dificultad paulatinamente.
¿Necesitaré algo más a parte del Arduino? Sí, pero es
barato. Yo te recomendaría que aparte de hacer con un surtido de leds,
microinterruptores, pulsadores, motores, etc. comprases una placa de pruebas
“protoboard o breadboard” en inglés. Este componente de facilitará enormemente
el montaje de los prototipos. Puedes contemplar la idea de hacerte con un kit.
¿Y el hexacóptero-nuclear-radio controlado-GSM-GPS-APSC-ABS
con junta de trócola galvanizada en qué capítulo vendrá? Lo siento, de momento
no pretendo llegar a los superusers. Todo se andará, pero hay cientos de foros
y webs con proyectos muy avanzados, casi todas en inglés, para ese menester. La
idea de este sitio es aprender desde un nivel básico hasta…. El tiempo lo dirá.
¡Comencemos!
¿Qué es Arduino?
Es un pequeño microcontrolador “open source” que integra
varias entradas y salidas para intercomunicarse con el exterior. Aquí podremos
conectar interruptores, leds, motores, etc. Dispone también de un puerto USB,
que puede servir de alimentación, y que hace las funciones de comunicación con
el ordenador.
El lenguaje que utiliza es el Processing Language (www.processing.org), y el software que
utiliza es el IDE (integrated development environment), que deberemos instalar
en nuestro ordenador, desde su web (www.arduino.cc).
Este software se distribuye para Windows, OSX y Linux.
El Arduino lo podemos conseguir de muchos sitios. Aunque el
nombre de Arduino está reservado para los creadores, podemos encontrar clones
compatibles con otras denominaciones normalmente acabadas en “duino”.
¿Merece la pena comprar un kit? Sí y no. Por precio
posiblemente no, pero a cambio suelen venir con una serie de componentes, resistencias,
leds, transistores, etc. que ayudan a completar muchos ejemplos. Lo dicho, si
tienes alguna tienda de electrónica en tu barrio, prueba primero allí. (Luego
nos quejaremos cuando busquemos un potenciómetro, esa tienda haya cerrado y
esperemos un mes a que venga de China).
Una vez hechas las presentaciones, y si ya has pasado por
caja, tendrás una placa con un aspecto parecido a este:
Como puedes observar, a parte del microcontrolador, tenemos
el puerto USB; una entrada externa de alimentación, varios componentes que facilitan
la comunicación con el PC, y las entradas y salidas.
Si ya has instalado el programa , (recuerda si no lo puedes
descargar desde aquí), es
momento de lanzar el programa, y conectar la placa por USB.
Como primera experiencia y para comprobar el correcto
funcionamiento del arduino, cargaremos uno de los programas de ejemplo de lo
que dispone el programa. Ejecutaremos el ejemplo Blink.
Archivo > Ejemplos > 01.Basics
> Blink
Este programa hace parpadear
el led que se encuentra en la propia placa base. Este led está conectado al puerto 13.
Demos un vistazo al código
del programa. Para ello usaré una traducción del texto en inglés:
Int led =
13; Definimos una constante
integer con un nombre fácilmente
identificable. Aprovechamos para darle un valor, en este caso el nº 13, que es
el puerto donde está conectado el led de prueba.
void setup() {
Comenzamos la
declaración de los puertos de entrada/salida,
pinMode(led,
OUTPUT); en este caso, con esta sentencia declaramos el pin led (puerto
} 13),
como salida (OUTPUT)
void loop() { Comienza la rutina
en bucle del programa. En este caso se
digitalWrite(led,
HIGH); repetería
indefinidamente. Con digitalWrite ponemos
el pin
delay(1000); definido como led, a “1”, o nivel alto. Esto hará que
el led se
digitalWrite(led,
LOW); encienda.
Aplicamos un retardo de 1 segundo y lo apagamos.
delay(1000); Es decir,
escribimos en el pin led un “0”, o nivel bajo, y
} volvemos a aplicar
un retardo de 1 segundo.
En este punto, y después de transferir el programa al
Arduino, el led de la placa, debería comenzar a parpadear a intervalos de 1
segundo.
Podemos empezar a jugar un poco, y modificar el valor del
delay para obtener velocidades de parpadeo diferentes, y no necesariamente
simétricas. Es decir, podemos definir valores diferentes para el apagado y el
encendido. No debemos olvidar transferir el programa después de cada
modificación, para observar el resultado.
Resumiendo
·
Todo lo que pongamos en el programa o sketch,
comprendido entre los signos :
/* texto
Explicativo*/
Será obviado por el compilador.
De todas maneras esto facilita que el programa sea inteligible por los demás y
por nosotros mismos.
Lo mismo sucede con lo que
aparece en cada línea después de dos barras //.
·
Podemos definir constantes y variables antes de
ejecutar el programa. Los nombres que les pongamos ayudarán a comprender el
programa. Existen muchos tipos de variables, que ya iremos definiendo.
·
Digitalwrite (nº de pin, Estado) , pone a 0 ó 1 el pin seleccionado
o
Nº de pin, puede ser un número , constante o
variable definida previamente, que no puede ser mayor que el número de puertos
de nuestro Arduino, y que se debe corresponder con una salida real (sea un led,
relé, altavoz, etc)
o
Estado, que puede tener dos valores, HIGH para encendido o 1, y LOW para apagado o 0.
·
Delay (tiempo),que puede ser número, constante o variable, aplica un
retardo en el flujo del programa. El Arduino no pasará a la siguiente
instrucción, hasta que cuente hasta ese número. Con la base de tiempos del
Arduino UNO, 1000 equivale a 1 segundo.
No hay comentarios:
Publicar un comentario