huborarduino.com

La web de Hubor para la simulación de Arduino con Proteus

Banner Guia Programacion Arduino Con Proteus

[Proteus versión 8.1]

En esta lección encenderemos un led situado en una de las salidas de nuestra tarjeta Arduino y aprovecharemos para introducirnos en algunos de los conceptos generales de la programación de los equipos Arduino.

Para llevar a cabo esta lección utilizaremos un proyecto de Proteus basado en la tarjeta de desarrollo "Arduino328" con el shield "Led Bar". En la sección simulación encontrará toda la informacion necesaria para crear el proyecto con esta tarjeta y este shield y los conceptos básicos de la simulación de Arduino utilizando Proteus.

Por supuesto, si usted dispone de la tarjeta de desarrollo de hardware y las herramientas de programación también podrá utilizarlos para seguir esta lección. Nosotros hemos optado por utilizar el simulador en todas nuestras lecciones por la comodidad que esto supone.

El esquema electrónico de nuestro equipo, con la placa base y el shield, se recoge en la imagen siguiente. Recuerde que los terminales del mismo nombre están eléctricamente unidos. Así, que el terminal 1 de la barra de led está eléctricamente enlazado con el pin 17 del microprocesador ATMEGA328P, porque ambos están unidos a un terminal del mismo nombre, IO11.

Lec01 001

Al crear el proyecto, Proteus genera automáticamente para nosotros la estructura básica de nuestro código fuente. Sólo utilizaremos un fichero llamado Main.ino donde se albergará toda la lógica de nuestro primer proyecto.

Lec01 002

Por defecto, el editor nos presenta de color verde los comentarios. Los comentarios son ignorados por el programa y no ocupan espacio en la memoria.

El comentario puede ocupar una sola línea o un bloque formado por varias líneas. Para escribir un comentario de una línea utilizamos los caracteres // seguidos del texto que deseamos. Una línea de comentario puede empezar en una columna distinta de la primera, pero siempre termina en la siguiente línea de código. Por ejemplo, en nuestro código las líneas de comentario situadas en las líneas de código 9 y 13 no empiezan al principio. El compilador ejecutará el código de la línea hasta encontrar los caracteres // e ignorará todo lo que siga a partir de ahí considerándolo un comentario.

Para escribir un bloque de comentarios que ocupe más de una línea, insertamos el texto del comentario entre el código de inicio /* y el código de fin */.  En nuestro ejempo, las líneas de código 1 a 6 son un bloque de comentarios.

Los comentarios ayudan a escribir información que facilita la interpretación de lo que realiza cada parte de nuestro programa facilitando la depuración del mismo cuando ha transcurrido un tiempo o cuando lo lee una persona diferente a quien los escribió.

Además de los comentarios, el código contiene dos funciones. Una llamada setup y otra loop. Una función es un bloque de código que contiene una serie de sentencias o instrucciones, que tiene un nombre que la identifica de forma inequívoca y que se ejecuta cada vez que alguien utiliza una llamada a dicha función desde el programa. El formato de una función es el siguiente:

<valor devuelto> <nombre de la función>()

{

sentencias

}

En nuestro ejemplo, las funciones setup() y loop() no devuelven ningún dato. Por esta razón el <valor devuelto> es "void". Void es una palabra clave que indica que nuestra función no devuelve nada. Además, como dentro de las llaves, lo único que hay son comentarios, tal y como están no ejecutarían ninguna acción.

Todos los programas escritos para Arduino deben tener al menos dos funciones, las que acabamos de ver, llamadas setup() y loop(). Como es lógico, programas más complejos pueden contener muchas más funciones.

La función setup() contendrá la parte de código encargada de la configuración de nuestro equipo. En ella debemos poner la declaración de las variables que utilizaremos en nuestro programa (más adelante ahondaremos en el concepto de variable), la configuración de los diversos pines del microprocesador, la configuración de las comunicaciones, etc. Siempre es la primera función que se ejecuta al arrancar nuestro equipo.

La función loop() contiene la parte de código que se ejecutará de forma cíclica durante todo el tiempo que esté nuestro equipo en funcionamiento. El nombre loop en inglés significa bucle y expresa exactamente este concepto, sentencias que se ejecutan en bucle repetidamente una y otra vez. Aquí escribiremos el código que se encargará de leer el estado de las entradas, ejecutar la lógica de funcionamiento y escribir el estado de las salidas en función de los resultados calculados.

Vamos a empezar a escribir la primera línea de código de nuestro programa. Nuestro objetivo será encender el led 8 de la barra de leds. Para ello debemos configurar el pin llamado PD4 (el número 6) del microprocesador como salida. El led 8 y el pin PD4 están unidos por el conector llamado IO4.

Algunos de los pines del microprocesador ATMEGA328P pueden funcionar como entradas o como salidas. Para definir el uso que daremos a un determinado pin utilizaremos la función pinMode(). La sintaxis de esta función es la siguiente:

pinMode( <número de pin>,<modo de funcionamiento>)

Donde <modo de funcionamiento> puede tener dos valores, INPUT cuando queremos que funcione como entrada y OUTPUT cuando queremos que realice las funciones de salida. El párametro <número de pin> puede  tomar los valores de 0 a 13. El 0 se utiliza para el pin PD0 y el 13 para el pin PB5.

La terminología utilizada en el microprocesador para nombrar los pines puede resultar un poco confusa la primera vez que uno se acerca a un microprocesador. Agrupa los pines en conjuntos (puertos) de 8 pines. Por ejemplo, los pines 2 al 13 forman el puerto D. El primer pin del puerto D recibe el nombre de PD0 (el pin físico con el número 2) y así sucesivamente hasta llegar al PD7 (el pin número 13). Para simplificar el uso, los conectores a cada uno de los pines se han rotulado siguiendo otra convención. Los 13 pines digitales llevan los nombres IO0 a IO13. Los 6 pines analógicos llevan los nombres AD0 a AD5. Así es más fácil su identificación.

Modifiquemos nuestro programa para indicar que el pin IO4 funcionará como salida.

Lec01 003

Observe que hemos terminado la sentencia con un punto y coma. Para separar cada uno de los comandos que componen nuestro programa utilizamos el indicador punto y coma.

Ahora vamos a escribir el código para activar la salida IO4 y encender el segmento 8 de nuestra barra de leds. Para activar o desactivar una salida utilizamos la función digitalWrite(). Su formato es el siguiente:

digitalWrite( <número de pin> , <estado del pin>)

Donde <estado del pin> puede tener dos valores, HIGH cuando queremos activar la salida y LOW cuando la queremos desactivar.

Ya podemos modificar nuestro programa para activar la salida IO4.

Lec01 004

Note que hemos terminado la sentencia con un punto y coma y que la hemos escrito dentro de la función loop().

Para compilar nuestro programa, utilizaremos la opción "Construir proyecto" del menú "Construir" o el atajo de teclado "F7". 

Lec01 005

Si todo ha ido bien, recibiremos un mensaje diciendo "compilado ok" en la ventana "Salida VSM Studio". Si no sucede esto, repase con cuidado toda el código y vigile especialmente el uso de mayúsculas y minúsculas y los signos de puntuación.

Lec01 006

Volvamos a la pestaña "Esquema electrónico" y ejecutemos la simulación. Podremos observar que el led 8 de la barra de leds se enciende.

Lec01 007

Ya hemos terminado nuestro primer proyecto y hemos logrado encender un led de nuestra barra de leds.

Practique ahora usted escribiendo el programa para encender el resto de las barras de nuestro dispositivo de leds.

En esta primera lección no hemos entrado a fondo en el funcionamiento eléctrico de las salidas. Más adelante tendremos tiempo de profundizar en ello. En la sección de hardware podrá encontrar varios esquemas electrónicos con diferentes configuraciones de salidas del microprocesador.

 

 

Comparte este artículo en redes sociales

Submit to FacebookSubmit to Google PlusSubmit to TwitterSubmit to LinkedIn


Esta página es propiedad de Hubor.

2014.

¡Atención! Este sitio usa cookies y tecnologías similares. Si no cambia la configuración de su navegador, usted acepta su uso. Ampliar información