Beruflich Dokumente
Kultur Dokumente
OBJETIVOS
Realizar los primeros programas que te permitan manejar perifricos de
entradas y salidas (E/S) digitales de forma rpida y sencilla. Ya iba siendo hora !!
Para ello analizaremos el aspecto que tiene un programa escrito en el lenguaje
Arduino de programacin. Se trata de un lenguaje de alto nivel con sus propias reglas,
sentencias y sintaxis. A continuacin vas a estudiar las sentencias elementales que
debers usar para el control bsico de los perifricos de entrada y salida digital que
hay en la tarjeta de experimentacin Arduino BASIC I/O.
REA DE TEORA
Aspecto de un programa.
o Zona de comentarios
o Zona de declaracin de variables y funciones.
o Zona para tareas de configuracin
o Zona para el cuerpo principal del programa.
o Zona de mensajes.
Sentencias en un programa
o Funcin: setup()
o Funcin: loop()
o Funcin: pinMode()
o Funcin: digitalRead()
o Funcin: digitalWrite()
Operadores lgicos
o Operador NO (NOT)
o Operador Y (AND)
o Operador O (OR)
o Combinando operadores
REA DE PRCTICAS
www.microcontroladores.com
MATERIALES NECESARIOS
Cable USB.
4-2
www.microcontroladores.com
AREA DE TEORA
4.1 ASPECTO DE UN PROGRAMA
Todos los programas del curso te los puedes descargar desde el material
complementario de cada Unidad. Te encontrars con un fichero comprimido con el
nombre Ejemplos Unidad x, donde x es el nmero de la Unidad didctica en la que te
encuentres. Te sugiero que te crees una carpeta de trabajo en tu unidad de disco
duro para que guardes y descomprimas los diferentes
ejemplos de las diferentes Unidades.
Ahora bien, si quieres saber mi opinin te dir que
es aconsejable que los ejemplos, al menos los primeros, los
escribas t directamente. Es una buena forma de
familiarizarte con el entorno de trabajo y con las tareas
de edicin de un programa.
En la figura se muestra el entorno de trabajo IDE de Arduino, y contiene el
programa que vamos a seguir como ejemplo para el desarrollo de este apartado. En
este caso es el ejemplo EJEMPLO_4_1.
4.1.1 Zona de comentarios
Todo programa debiera de empezar dando una serie de informacin. Por
ejemplo, en este caso, el nombre del curso, fecha, autor, empresa, etc Tambin sera
interesante una explicacin sobre en qu consiste o qu hace el programa.
4-3
www.microcontroladores.com
4-4
www.microcontroladores.com
4-5
www.microcontroladores.com
4-6
www.microcontroladores.com
En este caso todo ha ido perfectamente. Nos informa de que el programa ocupa
un total de 1066 bytes de la memoria FLASH de programa, de los 32256 disponibles.
Se han consumido 15 bytes de la memoria RAM para datos (por las variables que
hemos creado) de un total de 2048. Quedan por lo tanto disponibles 2033 bytes.
Recuerda: Compilar un programa es traducir el programa que has escrito empleando
el lenguaje Arduino de alto nivel, a su equivalente en cdigos binarios (cdigo mquina)
que es lo que realmente se graba en la memoria FLASH del controlador. Es un proceso
automtico y transparente para ti.
4.2 SENTENCIAS EN UN PROGRAMA
Ya has visto, al menos tericamente, el aspecto de un programa. Habrs
comprobado que est compuesto de varias instrucciones o sentencias tambin
llamadas FUNCIONES. Un programa puede estar compuesto de miles de funciones.
Cada lenguaje de programacin tiene sus propias funciones con sus propias
sintaxis y sus propias reglas de programacin. Vamos a estudiar el lenguaje Arduino de
programacin, del cual ya hemos empleado cinco instrucciones o funciones diferentes.
Vas a verlas ahora con ms detalle.
4-7
www.microcontroladores.com
4-8
www.microcontroladores.com
Sintaxis:
void loop()
{
.......
.......
}
Ejemplo:
void loop()
{
Valor=digitalRead(Pulsador);
digitalWrite(Led_Blanco,Valor);
}
www.microcontroladores.com
modo:
Ejemplos:
int Pulsador=4;
int Led_Blanco=6;
pinMode(Led_Blanco,OUTPUT);
pinMode(9,OUTPUT);
pinMode(Pulsador,INPUT);
pinMode(12,INPUT);
Por defecto, cada vez que se reinicia el sistema, todas las patillas digitales
quedan configuradas como entradas.
Ejemplos:
int Pulsador=4;
Valor=digitalRead(Pulsador);
X=digitalRead(8);
4-10
www.microcontroladores.com
Sintaxis:
digitalWrite(patilla,valor);
patilla:
Valor:
Ejemplos:
int Led_Blanco=6;
digitalWrite(Led_Blanco,Valor);
digitalWrite(11,LOW);
digitalWrite(7,1);
Valor= ! digitalRead(Pulsador);
operacin
genera
un
nivel
1,
tambin
llamado
verdadero,
si
4-12
www.microcontroladores.com
4-13
www.microcontroladores.com
4-14
www.microcontroladores.com
de
compilar
tu
programa
4-15
www.microcontroladores.com
1.2 Comprobacin
Aunque al compilar un programa, el entorno IDE de Arduino no te informe de
errores, no quiere decir que el programa funcione correctamente. El entorno slo
puede detectar errores de tipo sintctico: una funcin mal escrita o inexistente,
emplear variables que no se han declarado previamente, usar datos incorrectos, etc...
La prueba de fuego consiste en comprobar que el controlador hace exactamente
aquello para lo que le has programado. Este ejemplo es muy sencillo. Suponiendo que la
tarjeta de experimentacin BASIC I/O est debidamente insertada sobre la tarjeta
de control Arduino UNO, basta con que acciones el pulsador D4 para observar que el
led blanco conectado en la patilla D6 se ilumina. En caso contrario se apaga.
Una ltima prueba. Cuando grabas la memoria FLASH con un programa, ste se
mantiene indefinidamente aunque desconectes la alimentacin. Un programa slo se
borrar cuando grabes otro nuevo. Otro detalle. Una vez grabado un programa, la
tarjeta
Arduino
es
totalmente
Arduino
UNO
ahora
la
Quiz pienses que no has hecho una gran cosa, que para encender un led con un
pulsador no hace falta un controlador. Te equivocas. Has dado el primer paso. Si has
comprendido el concepto de lo que es un programa y sus funciones, te aseguro de que
podrs llegar a hacer cosas mucho ms complicadas e interesantes. Tiempo al tiempo.
2.- EJEMPLO_4_2: Encendido de un led v.2
Aqu tienes una nueva versin del mismo programa anterior. Controla el led
blanco de la tarjeta BASIC I/O conectado con la patilla 6, mediante el pulsador
conectado en la patilla 4 de la misma tarjeta. Observa el programa de la figura y
compralo con el del ejemplo anterior.
4-16
www.microcontroladores.com
La nica diferencia es
que
no
hemos
empleado
las
propias
pinMode(),
funciones
digitalRead()
ti.
Por
ejemplo,
si
el
pulsador
va
estar
controlador.
grbalo
en
Comprueba
el
su
correcto funcionamiento.
Tambin
puedes
comprobar
correctamente.
4-18
www.microcontroladores.com
3. El resultado de una funcin puede usarse como entrada de otra funcin sin
pasar por la variable intermedia Valor como en los otros ejemplos. Observa la
siguiente expresin:
digitalWrite(6,digitalRead(4));
de
nuevo
por
compilar
grabar
el
EJEMPLO
Memoria de
programa (FLASH)
Memoria de
datos (RAM)
EJEMPLO_4_1
EJEMPLO_4_2
EJEMPLO_4_3
4-19
www.microcontroladores.com
En amarillo se ha resaltado el
cuerpo principal del programa
contenido en la funcin loop().
Es muy similar al del ejemplo
anterior. La nica diferencia es
que la lectura del pulsador
conectado con la patilla 4 se
invierte mediante la funcin
NO, smbolo !.
Este ejemplo podra simular
una mquina cuyo motor est
siempre en marcha excepto si
se
acciona
un
pulsador
de
emergencia.
que
deseas
s.
La
alarma
debe
4-20
www.microcontroladores.com
DESCRIPCION
El led mbar se debe iluminar cuando los pulsadores 7 Y 12 estn
activados.
El led verde se ilumina si los pulsadores 12 y 8 estn activados y el
4 no lo est.
El led blanco se ilumina si el pulsador 4 est activado y el 7 no.
El led rojo se ilumina si se activa el pulsador 8 o el pulsador 12.
El led verde se ilumina si el pulsador 4 est activado, y el 7 no, y el
8 s y el 12 no.
El led rojo se enciende cuando los pulsadores 4 y 7 y 8 estn
activados, o bien lo est el pulsador 12.
4-21
www.microcontroladores.com
CASO
FUNCION
INSTRUCCIONES DE TU PROGRAMA
setup()
1
loop()
setup()
2
loop()
setup()
3
loop()
setup()
4
loop()
setup()
5
loop()
4-22
www.microcontroladores.com