INSTITUTO POLITÉCNICO NACIONAL
CENTRO INTERDISCIPLINARIO DE INVESTIGACIÓN PARA EL DESARROLLO INTEGRAL REGIONAL UNIDAD OAXACA
MAESTRIA EN CIENCIAS EN CONSERVACIÓN Y APROVECHAMIENTO DE RECURSOS NATURALES
ASIGNATURA DISEÑO DE INSTRUMENTACIÓN CON MICROCONTROLADORES
TÍTULO DE TRABAJO
PRÁCTICA 2 (SEMÁFORO)
CATEDRÁTICOS
DR. JOSÉ RODOLFO MARTÍNEZ Y CÁRDENAS M.I. JOSÉ NAVARRO ANTONIO
ALUMNO:
REYES TORRES URIEL
HORARIO DE CLASE
MIE: 10:00-12:00, VIE: 9:00-11:00
SANTA CRUZ XOXOCOTLAN, OAXACA.
25 DE AGOSTO DE 2017
RESUMEN Al haber realizado la primer práctica con el arduino y conocer las bases fundamentales tanto del programa como de los circuitos electrónicos, se ve necesario continuar con el entendimiento y dominio de las funciones de una variable, su forma de declararla y sobre todo llamarla dentro del programa. Con este ejercicio se pretende entender el objetivo principal de la utilizacion de variables dentro del sketch asi como las ventajas que nos ofrece a la hora de conectar diferentes led´s.
INTRODUCCIÓN Una variable es un elemento de nuestro sketch que actúa como un pequeño “cajoncito” (identificado por un nombre elegido por nosotros) que guarda un
determinado contenido. Ese contenido (lo que se llama el valor de la variable) se podrá modificar en cualquier momento de la ejecución del sketch: de ahí el nombre de “variable”. La importancia de las variables es inmensa, ya que todos los
sketches hacen uso de ellas para alojar los valores que necesitan para funcionar. El valor de una variable puede haberse obtenido de diversas maneras: puede haber sido asignado literalmente, pero también puede ser el dato obtenido por un sensor, o el resultado de un cálculo, etc. Provenga de donde provenga inicialmente, ese valor podrá ser siempre cambiado en cualquier instante posterior de la ejecución del sketch, si así lo deseamos.
Declaración e inicialización de una variable Antes de poder empezar a utilizar cualquier variable en nuestro sketch; no obstante, primero deberemos crearla. Al hecho de crear una variable se le suele llamar “declarar una variable”. En el lenguaje Arduino, cuando se declara una
variable es imprescindible además especificar su tipo. El tipo de una variable lo elegiremos según el tipo de datos (números enteros, números decimales, cadena de caracteres, etc.) que queramos almacenar en esa variable. Es decir: cada variable puede guardar solamente valores de un determinado tipo, por lo que
deberemos decidir en su declaración qué tipo de variable es la que nos interesa más según el tipo de datos que preveamos almacenar. Asignar un valor a una variable que sea de un tipo diferente al previsto para esta provoca un error del sketch. Uno podría preguntarse por qué es conveniente usar variables inicializadas en vez de escribir su valor directamente allí donde sea necesario. La razón principal es porque trabajar con variables nos facilita mucho la comprensión y el mantenimiento de nuestros programas: si ese valor aparece escrito en multitud de líneas diferentes de nuestro código y ha de ser cambiado, utilizando una variable inicializada con ese valor tan solo deberíamos cambiar la inicialización de la variable y automáticamente todas las veces donde apareciera esa variable dentro de nuestro código tendría este nuevo valor; si escribiéramos directamente ese valor en cada línea, tendríamos que irlo modificando línea por línea, con la consecuente pérdida de tiempo y la posibilidad de cometer errores. Por otro lado, a la hora de declarar las variables, se recomienda dar a nuestras variables nombres descriptivos para hacer el código de nuestro sketch más legible. Por ejemplo, nombres como “sensorDistancia” o “botonEncendido”
ayudarán a entender mejor lo que esas variables representan. Para nombrar una variable se puede utilizar cualquier palabra que queramos, siempre que esta no sea ya una palabra reservada del lenguaje Arduino (como el nombre de una instrucción, etc.) y que no empiece por un dígito. TIPOS POSIBLES DE UNA VARIABLE
Los tipos de variables que el lenguaje Arduino admite son: El tipo “boolean”: las variables de este tipo solo pueden tener dos valores: cierto
o falso. Se utilizan para almacenar un estado de entre esos dos posibles, y así hacer que el sketch reaccione según detecte en ellas uno u otro. Por ejemplo, las variables booleanas se pueden usar para comprobar si se han recibido datos de un sensor (cierto) o no (falso), para comprobar si algún actuador está disponible
(cierto) o no (falso), para comprobar si el valor de otra variable diferente cumple una determinada condición como por ejemplo la de ser mayor que un número concreto (cierto) o no (falso). El valor guardado en una variable booleana ocupa siempre un byte de memoria. El tipo “char”: el valor que puede tener una variable de este tipo es siempre un
solo carácter (una letra, un dígito, un signo de puntuación...). Si lo que queremos es almacenar una cadena de caracteres (es decir, una palabra o una frase) el tipo “char” no nos sirve, deberemos usar otro tipo explicado posteriormente. El tipo “byte”: el valor que puede tener una variable de este tipo es siempre un
número entero entre 0 y 255. Al igual que las variables de tipo “char”, las de tipo “byte” utilizan un byte (8 bits) para almacenar su valor y, por tanto, tienen el mismo
número de combinaciones numéricas posibles diferentes (256), pero a diferencia de aquellas, los va lores de una variable “byte” no pueden ser negativos. El tipo “int” : el valor que puede tener una variable de este tipo es un número
entero entre -32768 (-215) y 32767 (215-1), gracias a que utilizan 2 bytes (16 bits) de memoria para almacenarse. Esto es así para todas las placas Arduino excepto para la Due: en este modelo de placa el tipo “int” utiliza 4 bytes, y por tanto, su
valor puede estar dentro de un rango mayor, concretamente entre -2,147,483,648 (-231) y 2,147,483,647 (231 -1) . El tipo “word”: las variables de tipo “word” en la placa Arduino Due ocupan 4
bytes para almacenar su valor. Por tanto, tienen el mismo número de combinaciones numéricas posibles diferentes que las variables “int”, pero a
diferencia de estas, los valores de una variable “word” no pueden ser negativos. En las placas basadas en microcontroladores de tipo AVR ocurre lo mismo: las variables de tipo “int” y “word” ocupan el mismo espacio de memoria (aunque en
este caso, no obstante, solamente son 2 bytes) pero los valores de las segundas no pueden ser negativos. Es fácil ver que el valor que puede tener una variable
“word” en todas las placas excepto la Arduino Due es un número entero entre 0 y
65535 (216-1). El tipo “short”: el valor que puede tener una variable de este tipo para todos los
modelos de placa (ya sean basadas en microcontroladores de tipo AVR –la mayoría – o de tipo ARM –la Due –) es un número entero entre -32768 (-215) y 32767 (215-1), gracias a que utilizan 2 bytes (16 bits) de memoria para almacenarse. En este sentido, los tipos “short” e “int” para placas de la familia AVR son equivalentes, pero para la placa Arduino Due el tipo “short” es el único que
utiliza 16 bits. El tipo “long”: el valor que puede tener una variable de este tipo para todos los
modelos de placa (ya sean basadas en microcontroladores de tipo AVR o de tipo ARM) es un número entero entre -2.147.483.648 y 2.147.483.647 gracias a que utilizan 4 bytes (32 bits) de memoria para almacenarse. En este sentido, los tipos “long” e “int” para placas de la familia ARM son equivalentes. El tipo “unsigned long”: el valor que puede tener una variable de este tipo para
todos los modelos de placa (ya sean basadas en microcontroladores de tipo AVR o ARM) es un número entero entre 0 y 4.294.967.295 (232-1). Al igual que las variables de tipo “long”, las de tipo “unsigned long” utilizan 4 bytes (32 bits) para
almacenar su valor, y por tanto, tienen el mismo número de combinaciones numéricas posibles diferentes (232), pero a diferencia de aquellas, los valores de una variable “unsigned long” no pueden ser negativos (tal como ya indica su propio nombre). En este sentido, los tipos “unsigned long” y “word” para placas de
la familia ARM son equivalentes.
OBJETIVO Manejar las distintas variables que se manejan dentro del programa además de reconocer como se conecta más de un LED y su respectiva resistencia para hacer funcionar cada uno de estos LEDS conforme lo indiquemos.
EQUIPO Y HERRAMIENTAS Para realizar la práctica número dos se necesitaran las siguientes herramientas.
Placa Arduino uno
Cable USB impresora
Protoboard
3 LED´S (verde, amarillo, rojo)
Cables para el montaje del circuito
3 Resistencias 330 Ω
PROCEDIMIENTO
En el menú desplegable Herramientas/placa se selecciona la tarjeta Arduino que se está utilizando (en este caso es la Arduino general uno)
Herramientas/Puerto se debe seleccionar bajo que puerto USB se va a conectar el Arduino con la computadora.
Se realiza el código:
Inicialmente se inicia indicando el nombre del programa a desarrollar, para insertar comentarios se emplea el símbolo //, podemos colocar el título de la
práctica “SEMAFORO”. También se puede utilizar como comentarios dentro del programa.
Se declaran las variables de tipo entero para cada led conectado con su pin, int rojo=2, int amarillo=4, int verde=7
Se define si la variable declarada son de tipo entrada o de salida, para eso se utiliza el comando void setup (), se abre corchete ({) para saber qué es lo que contiene ese comando y al finalizar el comando se cierra corchete (}). Internamente del corchete se declarara que las variables LED son de salida, esto se realiza a través del comando pinMode, este a su vez necesita como argumento la variable y el tipo de señal de la misma, es decir pinMode(verde, OUTPUT) se realiza lo mismo para los otros dos pines; en la que OUTPUT nos indica que la señal saldrá del pin 2, 4 y 7 permitiendo encender los LED´S.
Luego de definir las variables, se procede a realizar la estructura del código a través del comando void loop (), de igual manera se abre corchete ({) y se cierra luego de terminar su cumplimiento (}). Internamente del corchete se establecen las instrucciones que ejecutará Arduino continuamente. Para que el LED se pueda encender se utilizara el comando digitalWrite, la cual envía una señal digital al pin que anteriormente se indicó. Se envía una HIGH para encender el pin verde. El código debe quedar tal como digitalWrite(verde, HIGH). Luego se emplea el comando delay (2000 milisegundos); la cual nos permite retrasar el tiempo que se le indique hasta
la ejecución de la siguiente instrucción. El tiempo de retardo de la función delay es en milisegundos. Para que el LED pueda apagarse se utilizará el mismo comando digitalWrite pero indicándole esta vez una señal baja
LOW,
finalmente
el
comando
se
determinara
como digitalWrite(verde, LOW) y luego se empleara nuevamente el comando delay con 500 milisegundos. Se realiza este proceso para el led amarillo y rojo.
Al terminar el desarrollo del programa, se debe compilar ProgramaVerificar, esto para verificar si existen errores dentro del código. Luego si no existen errores se puede cargar el código en la tarjeta Arduino para que esta lo ejecute.
CONEXIÓN DE LED Y PROTOBOARD
La importancia de las conexiones dentro del Protoboard son muy importantes, primero conectamos los led´s dentro de cualquiera de los orificios del Protoboard tomando en cuenta y sin olvidar cual es el ánodo y cual el cátodo, se conectaron los cables en la misma línea del ánodo y cátodo, el otro extremo del cable del ánodo se conectó en las entradas 2,4 y 7 del Arduino y el extremo del cable del cátodo en cualquier pin GND. El diagrama queda como se muestra:
RESULTADOS Al verificar el código escrito dentro del IDE, se da la orde n para que este programe las acciones que ejecutará el Arduino, como se pudo ver dentro del sketch los diversos comandos manejados nos dan una idea más precisa de su funcionalidad, por ejemplo, el tiempo de encendido y apagado de cada led.
CONCLUSIONES Al realizar la presente práctica se pudo conocer aún más la programación del Arduino así como su plataforma y la conexión de los elementos electrónicos, es importante tener cuidado al realizar el sketch que tengamos en mente para poder realizar cualquier actividad con el Arduino. Se entendieron conceptos básicos de programación, cuando declaramos que pin se va a utilizar, de que tipo, las variables que se pueden utilizar, en este caso son las de tipo entero, como se conecta el Arduino directamente con un circuito electrónico entre algunas otras. En conclusión, la plataforma Arduino puede ser utilizada de distintas formas, desde prender y apagar un led como en la práctica anterior, así como el controlar la secuencia de diferentes LED’s conectados en el
protoboard.
REFERENCIAS BIBLIOGRÁFICAS Torrente, Artero. Oscar, Arduino, curso práctico de formación. Pitágoras 1139, Col. Del Valle, México, D.F. Alfaomega Grupo Editor. 2013. Monk, Simon. Programming Arduino, Getting Started with Sketches , United States of America, McGrawHill..2012.