MICROCONTROLADORES
PROGRAMACIÓN CON ARDUINO
1. COMPETENCIA ESPECIFICA DE LA SESIÓN
- Conocer el entorno ARDUINO
- Instalar y configurar IDE ARDUINO
- Familiarizarse con la programación
2. MARCO TEÓRICO
Funciones de lectura y escritura digital en Arduino
Arduino está formado basicamente por pines de entrada, un
microcontrolador en el medio y pines de salida. Los pines de entrada
sirven para escuchar y capturar información del exterior, ejem: pulsadores,
sensores, lectoras, etc.; el microcontrolador sirve para procesar el programa
cargado y finalmente los pines de salida sirven para enviar información desde
la tarjeta Arduino hacia el exterior.
Al hablar de Entradas o Salidas digitales se entiende que
tanto la información que escuchan como las respuestas pueden tener solamente
dos estados: +5voltios o O voltios. OJO: Esto es solamente cuando se habla de
señales digitales. En la lógica Arduino las señales digitales pueden
manejar los siguientes valores o estados:
TODO programa en Arduino debe tener dos funciones
básicas: setup() y loop(). La sintaxis (forma de escribir)
es la siguiente:
void setup(){ }
void loop(){ }
La función setup() sirve para definir el
comportamiento inicial de mi placa Arduino, es decir cuando la a una fuente de
alimentación (pila, batería). Algunos ejemplos de uso de la función setup() son:
Que pines voy a utilizar, cuáles serán entradas y cuáles salidas, iniciar
alguna variable, etc
La función loop() sirve para definir todas las
tareas que Arduino ejecutará repetidamente mientras esté conectada. Por
ejemplo: Leer el valor de las entradas, escribir en los pines de salida, enviar
alertas, emitir sonidos, enviar mensajes por el puerto serial, etc.
Estructura de un programa en Arduino
La estructura básica de programación de Arduino es bastante
simple y divide la ejecución en dos partes: setup y loop. Setup() constituye la
preparación del programa y loop() es la ejecución. En la función Setup() se
incluye la declaración de variables y se trata de la primera función que se
ejecuta en el programa. Esta función se ejecuta una única vez y es empleada
para configurar el pinMode (p. ej. si un determinado pin digital es de entrada
o salida) e inicializar la comunicación serie. La función loop() incluye el
código a ser ejecutado continuamente (leyendo las entradas de la placa,
salidas, etc.).
Como se observa en este bloque de código cada instrucción
acaba con ; y los comentarios se indican con //. Al igual que en C se pueden
introducir bloques de comentarios con /* ... */.
La función bucle (loop) siguiente contiene el código que se
ejecutara continuamente (lectura de entradas, activación de salidas, etc) Esta
función es el núcleo de todos los programas de Arduino y la que realiza la
mayor parte del trabajo.
setup()
La función setup() se invoca una sola vez cuando
el programa empieza. Se utiliza para inicializar los modos de trabajo de los
pins, o el puerto serie. Debe ser incluido en un programa aunque no haya
declaración que ejecutar. Así mismo se puede utilizar para establecer el estado
inicial de las salidas de la placa.
void setup(){
pinMode(pin, OUTPUT); // configura el 'pin'
como salida
digitalWrite(pin, HIGH); // pone el ‘pin’ en estado HIGH
}
loop()
Después de llamar a setup(), la función loop() hace
precisamente lo que sugiere su nombre, se ejecuta de forma cíclica, lo que
posibilita que el programa esté respondiendo continuamente ante los eventos que
se produzcan en la placa.
void loop()
{
digitalWrite(pin,
HIGH); // pone en uno (on, 5v) el 'pin'
delay(1000); // espera un segundo (1000 ms)
digitalWrite(pin,
LOW); // pone en cero (off, 0v.) el 'pin'
delay(1000);
}
funciones
Una función es un bloque de código que tiene un nombre y un
conjunto de instrucciones que son ejecutadas cuando se llama a la función. Son
funciones setup() y loop() de las que ya se ha hablado. Las
funciones de usuario pueden ser escritas para realizar tareas repetitivas y
para reducir el tamaño de un programa. Las funciones se declaran asociadas a un
tipo de valor “type”. Este valor será el que devolverá la función, por ejemplo
'int' se utilizará cuando la función devuelve un dato numérico de tipo entero.
Si la función no devuelve ningún valor entonces se colocará delante la palabra
“void”, que significa “función vacía”. Después de declarar el tipo de dato que
devuelve la función se debe escribir el nombre de la función y entre paréntesis
se escribirán, si es necesario, los parámetros que se deben pasar a la función
para que se ejecute.
type nombreFunción(parámetros)
{
instrucción;
}
La función siguiente devuelve un número entero, delayVal() se
utiliza para poner un valor de retraso en un programa que lee una variable
analógica de un potenciómetro conectado a una entrada de Arduino. Al principio
se declara como una variable local, 'v' recoge el valor leído del potenciómetro
que estará comprendido entre 0 y 1023, luego se divide el valor por 4 para
ajustarlo a un margen comprendido entre 0 y 255, finalmente se devuelve el
valor 'v' y se retornaría al programa principal. Esta función cuando se ejecuta
devuelve el valor de tipo entero 'v'.
int delayVal()
{
int v; // crea una variable
temporal 'v'
v=
analogRead(pot); // lee el valor del
potenciómetro
v /= 4; // convierte 0-1023 a 0-255
return v; // devuelve el valor final
}
{} entre
llaves
Las llaves sirven para definir el principio y el final de un
bloque de instrucciones. Se utilizan para los bloques de programación setup(),
loop(), if.., etc.
type funcion()
{
instrucciones;
}
Una llave de apertura
“{“ siempre debe ir seguida de una llave de cierre “}”, si no es así el
programa dará errores.
El entorno de programación de Arduino incluye una
herramienta de gran utilidad para comprobar el total de llaves. Sólo tienes que
hacer click en el punto de inserción de una llave abierta e inmediatamente se
marca el correspondiente cierre de ese bloque (llave cerrada).
; punto y
coma
El punto y coma “;” se utiliza para separar instrucciones en
el lenguaje de programación de Arduino. También se utiliza para separar
elementos en una instrucción de tipo “bucle for”.
int x = 13; /* declara la variable 'x' como tipo entero
de valor 13 */
Nota: Olvidaos de poner fin a una línea con un punto y coma
o se producirá en un error de compilación. El texto de error puede ser obvio, y
se referirá a la falta de una coma, o puede que no. Si se produce un error raro
y de difícil detección lo primero que debemos hacer es comprobar que los puntos
y comas están colocados al final de las instrucciones.
/*… */ bloque de comentarios
Los bloques de comentarios, o comentarios multi-línea son
áreas de texto ignorados por el programa que se utilizan para las descripciones
del código o comentarios que ayudan a comprender el programa. Comienzan con / *
y terminan con * / y pueden abarcar varias líneas.
/* esto es un bloque
de comentario no se debe olvidar
cerrar los
comentarios estos deben estar equilibrados */
Debido a que los comentarios son ignorados por el compilador
y no ocupan espacio en la memoria de Arduino pueden ser utilizados con
generosidad. También pueden utilizarse para "comentar" bloques de
código con el propósito de anotar informaciones para depuración y hacerlo mas
comprensible para cualquiera.
Nota: Dentro de una misma línea de un bloque de comentarios
NO se puede escribir otro bloque de comentarios (usando /*..*/).
// línea de comentarios
Una línea de comentario empieza con // y terminan con la siguiente
línea de código. Al igual que los comentarios de bloque, los de línea son
ignoradas por el programa y no ocupan espacio en la memoria.
// línea de comentarios
Una línea de comentario se utiliza a menudo después de una
instrucción, para proporcionar más información acerca de lo que hace ésta o
para recordarla más adelante.
Diferencias y similitudes entre PIC y Arduino
PIC es un
microcontrolador de Microchip, es un microcontrolador muy popular hasta hace un
par de años era el microcontrolador mas vendido en el mundo , sin embargo los
nuevos microcontroladores ARM Cortex han ido adquiriendo popularidad. Si
de Arduino hay cientos o miles de aplicaciones de PIC hay millones, y esta
diferencia es de esperarse pues los microcontroladores PIC tienen mucho mas
tiempo en el mercado que Arduino.
Arduino es una plataforma de código abierto con la cual un entusiasta de la electrónica puede crear proyectos de electrónica digital, domótica, robótica , etc. de forma rápida y sencilla ademas de económica, es decir tiene las tres "B" Bueno Bonito y Barato, y es que los cientos de proyectos que andan circulando por la red son realmente increíbles. Su placa mas popular el Arduino UNO, se basa en el microcontrolador Atmega328 de Atmel.
En mi opinión ambos son dispositivos excelentes, pero en mi opinión el microcontrolador Arduino es utilizado por estudiantes de secundaria, los cuales se encuentran llevando una formación vocacional para el cual es perfecto, debido a que no tiene gran complejidad con los comando y tiene la facilidad de que puede programarse en la plataforma Scrach que es mucho más dinámica.
Por el contrario PIC es una marca más comercial y como tal, tiene una mayor complejidad al momento de programarlo, debido a que puede programarse en C++, o en lenguaje ensamblador el cual a mi parecer son más acondicionados para un nivel universitario, este tipo de controlador a diferencia del arduino es más utilizado a nivel comercial, y si de aprender se trata este microcontrolador le garantizará un dinamismo absoluto en las cataratas de codigo ensamblador que deben montarse para hacer una sencilla aplicación.
Arduino es una plataforma de código abierto con la cual un entusiasta de la electrónica puede crear proyectos de electrónica digital, domótica, robótica , etc. de forma rápida y sencilla ademas de económica, es decir tiene las tres "B" Bueno Bonito y Barato, y es que los cientos de proyectos que andan circulando por la red son realmente increíbles. Su placa mas popular el Arduino UNO, se basa en el microcontrolador Atmega328 de Atmel.
En mi opinión ambos son dispositivos excelentes, pero en mi opinión el microcontrolador Arduino es utilizado por estudiantes de secundaria, los cuales se encuentran llevando una formación vocacional para el cual es perfecto, debido a que no tiene gran complejidad con los comando y tiene la facilidad de que puede programarse en la plataforma Scrach que es mucho más dinámica.
Por el contrario PIC es una marca más comercial y como tal, tiene una mayor complejidad al momento de programarlo, debido a que puede programarse en C++, o en lenguaje ensamblador el cual a mi parecer son más acondicionados para un nivel universitario, este tipo de controlador a diferencia del arduino es más utilizado a nivel comercial, y si de aprender se trata este microcontrolador le garantizará un dinamismo absoluto en las cataratas de codigo ensamblador que deben montarse para hacer una sencilla aplicación.
3. EVIDENCIA DEL LABORATORIO
VÍDEO
CHALECO DE CICLISTA
MODIFICACIÓN DE CHALECO DE CICLISTA
4. OBSERVACIONES
- La actividad me ha resultado bastante interesante. Me he quedado con ganas de aprender más sobre este proyecto y de comprarme una placa Arduino. Debería dedicársele más tiempo, ya sea mediante una práctica adicional o incluso una asignatura optativa.
- Las sesiones dedicadas a este proyecto han sido interesantes y muy divertidas. Además, hay que tener en cuenta el trabajo que conlleva desarrollar cada uno de los prototipos de circuito por los profesores.
- Me ha servido mucho el proyecto de el chaleco porque soy inexperto en la programación. Gracias a la aplicación práctica del lenguaje del arduino al diseño de circuitos con Arduino, me ha costado menos su estudio. Es alentador poder aprender de forma práctica ya desde el primer curso.
5. CONCLUSIONES
- Se ha logrado desarrollar un dispositivo utilizando un Sistema programable a través de las grandes ventajas que nos proporciona la Plataforma de Arduino, con la variedad de dispositivos disponibles se pueden crear no solo este tipo de prototipos sino que puede desarrollarse todo una gama de buenos proyectos.
- Interesante resulta el hecho que no es necesario grandes cantidades de energía eléctrica, ni de grandes costos, con una inversión bien planificada se puede realizar un diseño similar al que se presenta.
- El grupo de trabajo agradece la oportunidad de haber conocido y aprendido de las grandes ventajas de Arduino y sus múltiples funcionalidades
6. FOTO GRUPAL
No hay comentarios:
Publicar un comentario