Sie sind auf Seite 1von 22

UNIDAD 4: LOS PRIMEROS PROGRAMAS

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

EJEMPLO_4_1: Encendido de un led v.1


o Compilacin y grabacin
o Comprobacin
4-1

www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

EJEMPLO_4_2: Encendido de un led v.2


o Conclusiones

EJEMPLO_4_3: Encendido de un led v.3


o Conclusiones

EJEMPLO_4_4: Encendido invertido de un led

EJEMPLO_4_5: Control desde dos pulsadores

EJEMPLO_4_6: Trabajo personal

MATERIALES NECESARIOS

Ordenador porttil o de sobremesa.

Entorno de trabajo ARduino IDE que se incluye en el material complementario y


que se supone instalado y configurado.

Tarjeta controladora Arduino UNO.

Tarjeta de experimentacin Arduino BASIC I/O.

Cable USB.

Todos los componentes y accesorios empleados en el rea de prcticas de este


curso, los puedes adquirir en forma de kit y al mejor precio en Ingeniera de
Microsistemas Programados S.L. (www.microcontroladores.com).

4-2
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

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.

Reciben el nombre de Comentarios de cabecera. Puedes poner todos los


comentarios que quieras y donde quieras, pero siempre deben ir encerrados entre los
caracteres /* y */. Fjate bien en la imagen de arriba.

4-3
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

Tambin puede poner comentarios ms sencillos, de una sola


lnea o rengln. En este caso basta con que vayan precedidos de los
caracteres //. Los vers muy a menudo.
Recuerda y no seas perezoso. Acostmbrate a comentar tus programas. Quiz
en un futuro necesites de ellos para recordar lo qu hacas, cmo y por qu.

4-4
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

4.1.2 Zona de declaracin de variables y funciones


Esta segunda zona te recomiendo que la uses para hacer la declaracin de
variables y funciones. Todava no sabes lo qu son, pero ya las estudiars ms
adelante. Imagina a una variable como una especie de caja o receptculo a la que le
asignas un nombre y quiz tambin le des un valor. Se guarda en la memoria RAM del
controlador y la podrs usar posteriormente tantas veces como la necesites.
Una funcin a su vez est formada por un conjunto de otras sentencias,
instrucciones o funciones. A ese conjunto le asignas un nombre y lo usas tambin
tantas veces como necesites.

En el ejemplo de la figura se han creado tres variables: Valor, Pulsador y


Led_Blanco. En la primera se va a guardar el valor que resulta de leer una entrada
digital. A la segunda, la variable Pulsador, se le asigna el valor 4. Corresponde con el
nmero de la patilla de entrada donde est conectado el pulsador cuyo estado vamos a
leer. A la variable Led_Blanco le hemos asignado el valor 6. Corresponde con la
patilla de salida donde se ha conectado un led, el led blanco de la tarjeta de
experimentacin BASIC I/O.
En general tanto las variables como las funciones han de declararse ANTES de
ser utilizadas posteriormente por el programa.
4.1.3 Zona para tareas de configuracin
Normalmente todo programa escrito en el lenguaje Arduino, empieza
ejecutando unas cuantas instrucciones o funciones de configuracin. Con ellas se
establece, entre otras cosas, qu patillas deben actuar como entradas y quines como
salidas.
En el ejemplo de la figura la patilla de la variable Pulsador, a la que
anteriormente se le asign el valor 4, se le configura como entrada (INPUT).

4-5
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

La patilla correspondiente a la variable Led_Blanco, es decir la patilla 6, se le


configura como salida (OUTPUT).
Normalmente las sentencias o funciones de configuracin slo se ejecutan una
vez, cada vez que reinicias el sistema (RESET) o conectas la alimentacin.
4.1.4 Zona para el cuerpo principal del programa
Aqu es donde debes escribir todas las instrucciones, sentencias o funciones
que forman parte de tu programa. En el ejemplo que nos ocupa nicamente hay dos
funciones, pero piensa que un programa puede estar compuesto de cientos o miles.

La primera funcin, Valor=digitalRead(Pulsador);, lee el estado digital del


pulsador conectado en la patilla 4 y que anteriormente se configur como entrada. El
estado de ese pulsador se guarda en la memoria RAM, en la variable Valor.
La segunda funcin, digitalWrite(Led_Blanco,Valor);, escribe sobre la patilla
6 (Led_Blanco), el contenido de la variable Valor, el que se ley en la funcin
previa. Recuerda que esa patilla, la 6, previamente se haba configurado como salida.
Todas las funciones que forman el cuerpo principal del programa se ejecutan de
forma repetida, de la primera a la ltima, e indefinidamente, a la mxima
velocidad que pueda ofrecer el controlador.
Importante: Observa que al declarar las variables, as como todas las funciones de
configuracin y del programa principal, finalizan SIEMPRE con ;

4-6
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

4.1.5 Zona de mensajes


En esta ltima zona, el entorno IDE de trabado de Arduino te ir mostrando
diferentes mensajes: si ests guardando un programa, o compilndolo, o grabndolo
sobre la memoria del controlador. Tambin te informa si ha habido errores de
compilacin, tipo de error y en dnde se ha producido.

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

Arduino: La tecnologa al alcance de todos

4.2.1 Funcin: setup()


Esta funcin y todas las funciones contenidas en ella, se ejecutan al reiniciar el
sistema. Esto ocurre cada vez que pulsas el botn RESET o bien conectas la
alimentacin.
Dentro de esta funcin se suelen colocar las funciones para la configuracin de
las patillas de entrada o de salida, inicio de ciertas variables, libreras, etc En
general, dentro de la funcin setup() puedes colocar las sentencias o funciones que
quieras, siempre que estn encerradas entre las llaves { }. Incluso puedes poner
una funcin setup() vaca, sin funciones entre sus llaves, pero debes de ponerla
obligatoriamente.
Lo importante que debes recordar es que todas las funciones que contiene la
funcin setup() slo se ejecutan una nica vez, en el reinicio.
Sintaxis:
void setup()
{
.......
.......
}
Ejemplo:
void setup()
{
pinMode(Pulsador, INPUT);
pinMode(Led_Blanco, OUTPUT);
}

//La patilla del pulsador se configura como entrada


//La patilla del led se configura como salida

4.2.2 Funcin: loop()


Aqu, dentro de esta funcin y cerradas entre las llaves { }, es donde vas a
colocar todas tus instrucciones y funciones. Se dice que contiene el cuerpo principal
del programa.

4-8
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

Sintaxis:
void loop()
{
.......
.......
}
Ejemplo:
void loop()
{
Valor=digitalRead(Pulsador);
digitalWrite(Led_Blanco,Valor);
}

//Lee el estado del pulsador


//Lo saca por el led

Un programa puede estar compuesto por decenas, cientos o miles de funciones


que se incluirn dentro de la funcin loop() principal. En el ejemplo anterior slo dos.
Incluso puede darse el caso de que la funcin loop() est vaca, sin funciones
encerradas entre sus llaves({ }). Es igual, es obligatorio que la pongas siempre.
Todas las funciones incluidas entre las llaves de la funcin loop() se ejecutan
una tras otra, desde la primera hasta la ltima, de forma secuencial e indefinida,
hasta que desconectes el sistema.
4.2.3 Funcin: pinMode()
Configura cualquiera de las patillas digitales
del controlador Arduino para que acte como
entrada o como salida. Normalmente se suele poner
al principio de un programa, incluida en la funcin
setup().
Sintaxis:
pinMode(patilla,modo);
patilla:

Expresa el nmero de patilla que vamos a configurar. En el caso de


Arduino UNO puede ser entre la 0 y la 13.
4-9

www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

modo:

Establece si se comporta como entrada (INPUT) o salida (OUTPUT).

Ejemplos:
int Pulsador=4;
int Led_Blanco=6;
pinMode(Led_Blanco,OUTPUT);
pinMode(9,OUTPUT);
pinMode(Pulsador,INPUT);
pinMode(12,INPUT);

//La patilla 6 es salida


//La patilla 9 es salida
//La patilla 4 es entrada
//La patilla 12 es entrada

Por defecto, cada vez que se reinicia el sistema, todas las patillas digitales
quedan configuradas como entradas.

4.2.4 Funcin: digitalRead()


Lee y devuelve el estado lgico binario (1 o 0, HIGH o LOW) de
cualquiera de las patillas del controlador Arduino.
Sintaxis:
digitalRead(patilla);
patilla:

Expresa el nmero de patilla que vamos a


leer. En el caso de Arduino UNO puede ser
entre la 0 y la 13.

Ejemplos:
int Pulsador=4;
Valor=digitalRead(Pulsador);
X=digitalRead(8);

//Lee el estado de la patilla 4 y lo guarda en Valor


//Lee el estado de la patilla 8 y lo guarda en X

4.2.5 Funcin: digitalWrite()


Escribe o saca por una patilla de salida un valor binario (1 o 0, HIGH o
LOW).

4-10
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

Sintaxis:
digitalWrite(patilla,valor);
patilla:

Expresa el nmero de patilla por la que


vamos a sacar el valor. En el caso de Arduino
UNO puede ser entre la 0 y la 13.

Valor:

Indica el valor a sacar (1 o 0, HIGH o


LOW).

Ejemplos:
int Led_Blanco=6;
digitalWrite(Led_Blanco,Valor);
digitalWrite(11,LOW);
digitalWrite(7,1);

//Saca el contenido de Valor (1 o 0) por la patilla 6


//Saca nivel 0 por la patilla 11 de salida
//Saca nivel 1 por la patilla 7 de salida

4.3 OPERADORES LGICOS


Llegados a este punto no puedo evitar hablarte de ciertos
operadores, concretamente tres, capaces de relacionar
entre s a diferentes funciones, operaciones, expresiones,
etc Se llaman operadores lgicos y se emplean mucho en
los sistemas digitales. Espero explicrtelos de la forma ms
sencilla posible, sin entrar en tecnicismos.

4.3.1 Operador NO (NOT)


Expresa una negacin (NO o NOT) y se simboliza mediante el signo de
admiracin !. Lo entenders mejor con un ejemplo. Mira esta funcin que ya te
resultar conocida:
Valor=digitalRead(Pulsador);

La variable Valor ser de nivel 1 si al leer Pulsador ste se encuentra


tambin a nivel 1. En caso contrario Valor ser de nivel 0. Ahora bien, fjate en la
siguiente funcin:
4-11
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

Valor= ! digitalRead(Pulsador);

La variable Valor ser de nivel 1 si al leer Pulsador ste NO se encuentra a


nivel 1, es decir est a nivel 0. En caso contrario, si el pulsador se encuentra a nivel
1, la variable Valor ser de nivel 0. Mira el ejemplo y responde.
Valor= ! digitalRead(12);

Valor es de nivel 1 o verdadero si: __________________________________


Valor es de nivel 0 o falso si: ______________________________________
4.3.2 Operador Y (AND)
Esta operacin genera un nivel 1, tambin llamado verdadero, si TODOS los
elementos que relacionas estn tambin a nivel 1 o son verdaderos. Se representa
mediante los signos &&. Mira el ejemplo:
Valor=digitalRead(4) && digitalRead(12);

La variable Valor ser de nivel 1, verdadero, si al leer las entradas 4 Y 12


ambas estn tambin a nivel 1. Si cualquiera de las entradas est a nivel 0, el
resultado en la variable Valor tambin ser de nivel 0 o falso. Mira el ejemplo
siguiente y responde.
Valor=digitalRead(4) && digitalRead(8) && digitalRead(12);

Valor es de nivel 1 o verdadero si: __________________________________


Valor es de nivel 0 o falso si: ______________________________________
4.3.3 Operador O (OR)
Esta

operacin

genera

un

nivel

1,

tambin

llamado

verdadero,

si

CUALQUIERA de los elementos que relacionas estn tambin a nivel 1 o son


verdaderos. Se representa mediante los signos ||. Mira el ejemplo:
Valor=digitalRead(4) || digitalRead(12);

4-12
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

La variable Valor ser de nivel 1, verdadero, si las entradas 4 O 12 O


ambas estn a nivel 1. Si todas las entradas est a nivel 0, el resultado en la
variable Valor tambin ser de nivel 0 o falso. Mira el ejemplo siguiente y
responde.
Valor=digitalRead(4) || digitalRead(8) || digitalRead(12);

Valor es de nivel 1 o verdadero si: __________________________________


Valor es de nivel 0 o falso si: ______________________________________
4.3.4 Combinando operadores
Por supuesto que tambin es posible combinar diferentes operadores lgicos en
una misma funcin. Debes emplear los parntesis para establecer el orden en que se
deben evaluar y calcular. Mira el ejemplo:
Valor= ! digitalRead(4) && digitalRead(7);

La variable Valor ser de nivel 1 o verdadera si la entrada 4 NO est a 1 Y


la entrada 7 si lo est. Mira el ejemplo siguiente y responde.
Valor= (digitalRead(8) && ! digitalRead(12)) || digitalRead(4));

Valor es de nivel 1 o verdadero si: __________________________________


Valor es de nivel 0 o falso si: ______________________________________

4-13
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

4-14
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

AREA DE PRCTICAS: Ejemplos de programacin


1.- EJEMPLO_4_1: Encendido de un led v.1
Este es el mismo ejemplo que el que has estudiado en el rea de teora, por lo
que no te voy a aburrir repitiendo su funcionamiento. Simplemente recordarte que
consiste en leer el estado del pulsador conectado en la patilla 4, y reflejar su valor en
el led blanco de la tarjeta de experimentacin BASIC I/O, conectado en la patilla 6
del controlador.
1.1 Compilacin y Grabacin
Como se muestra en la figura, basta
con pulsar el botn marcado con 1. En un
proceso bastante rpido y totalmente
automtico, el entorno IDE de Arduino se
encargar

de

compilar

tu

programa

traducindolo a cdigo mquina o cdigo


binario. Para ti no tiene importancia el
cmo lo hace.
Si el programa est bien escrito y no
tiene errores, vers unos mensajes como
los que se muestran en la ventana marcada
con 2. Ya los conoces. Indican el tamao
que ocupar el programa dentro de la
memoria FLASH del controlador, as como
la cantidad de memoria RAM consumida
por las variables que has empleado. Adems, si tu programa est correctamente
escrito, inmediatamente se grabar sobre la memoria FLASH del controlador.
En esa misma ventana tambin te aparecern, en caso de que los hubiera, los
diferentes tipos de errores y en qu lugar del programa se han producido. Una vez que
los corrijas vuelves a compilar el programa.
Enhorabuena, ya has grabado tu primer programa !!

4-15
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

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

independiente y autnoma respecto al PC.


Todo esto lo puedes comprobar de forma
muy sencilla. Retira el cable USB de la
tarjeta

Arduino

UNO

ahora

la

alimentas con un alimentador de red o


una pila como se muestra en la figura.
Vers que el funcionamiento sigue siendo
el mismo.

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

Arduino: La tecnologa al alcance de todos

La nica diferencia es
que

no

hemos

empleado

variables para definir en qu


patillas estn conectados el
pulsador y el led blanco.
En

las

propias

pinMode(),

funciones

digitalRead()

digitalWrite() se han indicado


directamente las patillas a la
que hacen referencia (4 y 6).
Se dice que en este caso el
nmero de las patillas se
expresan como constantes, y
no como variables.
Como hiciste con el ejemplo
anterior, compila y graba el
programa. Luego verifica que
funciona correctamente.
2.1 Conclusiones
El empleo de variables o constantes para definir
una patilla del controlador depende fundamentalmente
de

ti.

Por

ejemplo,

si

el

pulsador

va

estar

permanentemente conectado en la patilla 4, emplea este


nmero como constante, como lo acabamos de hacer en
este ejemplo. Ahorrars en memoria RAM.
Ahora bien, si ese pulsador (o cualquier otro
perifrico) puede estar sujeto a posibles cambios en su conexin con las patillas del
controlador, mejor defines esa conexin como una variable, por ejemplo: int
Pulsador=4;. De esta forma si en un futuro la conexin del pulsador pasa a ser, por
ejemplo, con la patilla 12, slo tendrs que cambiar la declaracin de la variable: int
Pulsador=12;. No tendrs que modificar las funciones del programa que hacen uso de
ese pulsador.
4-17
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

3.- EJEMPLO_4_3: Encendido de un led v.3


Una nueva (y ltima) versin
del programa para controlar un
led mediante un pulsador.
En primer lugar compila el
programa

controlador.

grbalo

en

Comprueba

el
su

correcto funcionamiento.
Tambin

puedes

comprobar

que si desconectas el cable


USB y alimentas al conjunto
de tarjeta Arduino + BASIC
I/O de forma independiente y
autnoma respecto al PC, con
una pila, todo debiera seguir
funcionando

correctamente.

Entonces dnde estn las


diferencias?
3.1 Conclusiones
Si estudias con cuidado el programa vers dnde se encuentran las diferencias
entre este ejemplo y los anteriores EJEMPLO_4_1 y EJEMPLO_4_2. De ello podemos
sacar las siguientes conclusiones:
1. No se ha empleado ninguna variable, con el consiguiente ahorro de memoria
RAM. En un gran nmero de ocasiones, el empleo de variables y constantes
depende ms bien de lo que a ti te interese.
2. Las patillas que vayan a actuar como entradas digitales no necesitan ser
configuradas mediante pinMode(). Todas las patillas estn configuradas como
entrada por defecto.

4-18
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

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));

Hay una funcin dentro de otra. Siempre se ejecuta primero la funcin ms


interna: digitalRead(4). El resultado de sta se pasa a la siguiente funcin
digitalWrite(6,);.
4. Un mismo programa se puede resolver de diferentes formas. De momento te
debes ocupar de que funcione correctamente. Es lo ms importante. Con la
prctica irs consiguiendo hacer que el mismo programa consuma menos
memoria FLASH de programa y tambin menos memoria RAM de datos,
hacindolo por tanto ms EFICIENTE.
T mismo puedes hacer una sencilla comprobacin.
Empieza

de

nuevo

por

compilar

grabar

el

EJEMPLO_4_1, luego el EJEMPLO_4_2 y, finalmente, el


EJEMPLO_4_3. En cada caso anota la cantidad de
memoria de programa (FLASH) y de memoria de variables
(RAM) que consumes. Esta informacin te la da el propio
entorno IDE de Arduino, en la parte de abajo, cada vez
que se termina de grabar un programa. Completa la
siguiente tabla.

EJEMPLO

Memoria de
programa (FLASH)

Memoria de
datos (RAM)

EJEMPLO_4_1
EJEMPLO_4_2
EJEMPLO_4_3

4.- EJEMPLO_4_4: Encendido invertido de un led


Empleando el operador lgico NO, se trata de hacer un programa en el que el
led blanco, conectado con la patilla 6, se active siempre que el pulsador conectado con
la patilla 4, NO est activado. Aqu tienes el programa.

4-19
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

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.

5.- EJEMPLO_4_5: Control desde dos pulsadores


Imagina

que

deseas

controlar una alarma desde dos


pulsadores que estn alejados
entre

s.

La

alarma

debe

activarse cuando se acciona un


pulsador O el otro (O ambos).
La alarma se simula mediante el
led rojo de la tarjeta de
experimentacin BASIC I/O,
conectado en la patilla 11. Los
dos pulsadores se encuentran
conectados en las patillas 4 y
12.
Aqu tienes el programa
resuelto. Estdialo.

4-20
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

6.- EJEMPLO_4_6: Trabajo personal


Emplea el EJEMPLO_4_6 como programa
base o plantilla. Sobre l vas a hacer las
modificaciones necesarias para resolver los
diferentes casos que te voy a proponer. Espero
que emplees todo lo que hemos visto hasta el
momento, aprendas y, sobre todo, te diviertas.
Te dars cuenta de que a medida que vamos avanzando en la programacin, el
controlador es capaz de hacer mucho ms que encender un simple led, y no has hecho
ms que empezar !!
CASO
1
2
3
4
5

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.

Recuerda. Cada modificacin que hagas debes escribirla en el entorno IDE de


Arduino, garbarla en el controlador y asegurarte de que funciona segn las
especificaciones de cada caso.
Completa la siguiente tabla. En la columna setup() anotas todas las sentencias
que hayas usado en la configuracin. Lo mismo haces con la columna loop(). Escribes
todas las funciones que formen parte del programa principal.

4-21
www.microcontroladores.com

Arduino: La tecnologa al alcance de todos

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

Arduino: La tecnologa al alcance de todos

Das könnte Ihnen auch gefallen