[Versión 8.1 de Proteus]
Empezar a simular Arduino con Proteus es fácil y rápido. Una vez abierta la aplicación, desde la pantalla de inicio, en la sección ‘Empezar a trabajar’ podemos elegir la opción ‘Nuevo Proyecto’.
Nos aparece la ventana de diálogo siguiente.
Lo primero que tenemos que hacer es seleccionar la opción ‘De la tarjeta de desarrollo’ y después seleccionaremos en los desplegables las siguientes opciones que aparecen en la imagen:
Cómo es lógico podemos escoger otra de las tarjetas de desarrollo disponibles para Arduino. En este caso vamos a escoger una basada en el micro ATmega328P.
Al dar al botón finalizar para crear el proyecto, veremos dos pestañas nuevas en nuestra área de trabajo. En la denominada ‘Esquema electrónico’ podemos ver el diseño electrónico de nuestra placa principal de Arduino y en la denominada ‘Código fuente’ un armazón muy sencillo preparado para que podamos escribir el código de nuestra aplicación.
Activaremos esta segunda pestaña y seleccionaremos la opción de menú Sistema -> Configuración de compiladores.
En la ventana emergente que aparece, seleccionaremos Arduino AVR en la columna Compilador.
Y seleccionaremos el botón ‘Descargar’. Puede ser, según la versión de Windows que estemos utilizando, que nos aparezca un mensaje de aviso sobre los permisos de administrador necesarios.
Si aceptamos, se procederá a la descarga y veremos cómo progresa el proceso de descarga.
Nos aparecerá la ventana de instalación del compilador. Lo primero que tenemos que hacer es aceptar el acuerdo de licencia general GNU. Y a continuación, seleccionar los componentes necesarios.
Seleccionaremos a continuación, el directorio donde se instalará el compilador para Arduino.
Depende de su ordenador, es posible que nos pida también instalar el dispositivo Arduino USB driver.
Al acabar el proceso nos mostrará la siguiente ventana donde debemos pulsar el botón ‘Close’ para finalizar.
Al hacerlo visualizaremos una ventana emergente que había quedado oculta en segundo plano. Debemos pulsar el botón ‘Aceptar’.
Y podemos comprobar que ya tenemos listo el compilador para utilizarlo desde Proteus.
Para salir de la ventana de diálogo de configuración de compiladores, debemos utilizar el botón ‘Aceptar’.
[Versión 8.1 de Proteus]
Los ‘shields’ son tarjetas que han sido diseñadas para realizar una tarea específica y que pueden se enchufadas sobre la tarjeta principal de Arduino de forma directa. Hay una serie pequeña de tarjetas ‘shields’ oficiales y un gran número de ellas no oficiales que se pueden encontrar en internet. Además, podemos crear nuestra propia tarjeta shield en cualquier momento.
Proteus nos facilita la utilización de los ‘shields’ utilizando la técnica nueva que se ha incorporado desde la versión 8.1 denominada ‘recortes de proyecto’.
Nos colocaremos en la pestaña del diseño electrónico y utilizaremos la opción de menú Fichero -> Importar un recorte de proyecto.
Proteus es lo suficientemente inteligente para ofrecernos los recortes de proyecto de los ‘shields’ de Arduino disponibles. Podemos observar que tenemos varios más que los oficiales.
Para nuestro ejemplo, vamos a seleccionar el Arduino LCD Shield.
Nos aparece en la ventana del diseño, la forma difuminada del shield para que podamos colocarla donde deseemos.
La colocaremos junto a nuestra placa principal.
Realmente es muy sencillo utilizar los shields con Proteus, puesto que los conectores utilizados en una y otra placa tienen el mismo nombre y por lo tanto están eléctricamente unidos.
[Versión 8.1 de Proteus]
Para conocer las posibilidades que Proteus nos brinda para la depuración de nuestros programas, volveremos a la pestaña ‘Código fuente’ y pulsaremos sobre el botón ‘Pausa’ situado en los controles de la zona inferior. En el desplegable de la zona superior seleccionaremos main.ino (el único archivo fuente disponible).
De esta manera podemos observar el código fuente que se está ejecutando.
Vamos a crear un punto de ruptura en la línea 014C. Para ello haremos una doble pulsación con el botón izquierdo del ratón con el cursor colocado sobre ese número de línea. Un punto rojo indicará que se ha generado un punto de ruptura en esa línea del programa.
Ahora vamos a poner de nuevo en marcha la simulación utilizando el botón ‘Play’ de los controles de simulación situados en la zona inferior. Aparentemente no sucede nada. Pero ahora, vamos a pulsar sobre el pulsador que aparece en la ventana emergente activa superior. Este es el botón de reset de la placa principal de arduino y provocará que el equipo vuelva a su situación de inicio y el programa se ejecute de nuevo desde el principio.
Al hacerlo, el programa pasa por la línea 014C y se detiene porque es en esa línea donde hemos definido un punto de ruptura.
Podemos observar que el display está en blanco, porque todavía no hemos llegado a la línea donde ordenamos escribir nuestras cadenas de caracteres.
Ahora podemos utilizar el botón ‘saltar hasta la línea de código (over) en la función o subrutina’. Con ello indicamos a Proteus que deseamos ejecutar una sola línea de código.
La ejecución del programa se lleva a cabo y en el código aparece señalizada la siguiente línea lista para seguir llevando a cabo la simulación.
Repitamos el mismo proceso y podremos ver que el cursor se coloca sobre la siguiente línea.
Y que el display ya muestra la primera cadena de caracteres, puesto que se ha ejecutado la primera sentencia lcd.print.
Si repetimos el proceso dos veces más, podremos ver cómo el display se rellena con las dos cadenas de caracteres.
Y que el código se ha ejecutado una línea más.
Si lo preferimos, poder ver el código en ensamblador. Para ello pulsaremos con el botón derecho sobre la ventana que contiene el código y en el menú contextual elegir la opción ‘Dissassembly’.
Obteniendo el código en ensamblador.
Podemos volver al código en ‘C’ con la misma opción de menú.
[Versión 8.1 de Proteus]
Tenemos que ir a la pestaña del código fuente e incorporar una sentencia define para que utilizar el shield en nuestro programa. Puesto que hemos utilizado el shield que nos proporciona una pantalla de cristal LCD, debemos utilizar el fichero de cabecear con las definiciones correspondientes llamado <LiquidCrystal.h>.
Ahora podemos añadir unas nuevas líneas a nuestro código para presentar un mensaje en la pantalla Lcd.
Debemos ser cuidadosos en la utilización de las mayúsculas y minúsculas porque el compilador diferencia entre unas y otras.
Podemos compilar el proyecto utilizando la tecla F7 o la opción de menú Construir -> Construir proyecto.
Si todo ha ido bien, recibiremos un mensaje de que todo se ha ejecutado de forma correcta (compilado ok).
Podemos poner en marcha ya nuestra simulación utilizando el botón ‘Play’ de los controles de simulación de la zona inferior de la pantalla.
Veremos la pantalla siguiente.
La simulación se pone en marcha. Por defecto, Proteus nos presenta la pestaña de código fuente y tres ventanas emergentes activas. Las ventanas emergentes activas son una nueva función que se incorporó a Proteus en la versión 8. Nos permiten visualizar e interactuar con una porción del esquema. Para más información, puede consultar nuestra guía ‘Primeros pasos con Proteus VSM’.
En este caso hay tres ventanas emergentes activas. En una podemos ver el pulsador y el led de la placa principal, en la segunda el display y en la tercera el conjunto de pulsadores de la placa shield.
Podemos observar que el display muestra correctamente nuestro mensaje.
También podemos ir a la pestaña del diseño para comprobar la ejecución de la simulación con el conjunto completo.
En la zona inferior se puede visualizar los mensajes que se reciben durante la simulación.
Todo ha sido muy rápido y sencillo.
[Versión 8.1 de Proteus]
Puesto que el código que escribimos en nuestra primera simulación es muy sencillo y sólo se ejecuta una vez, puede resultar un poco extraña una simulación donde no cambia nada. Vamos a añadir un poco de código dentro del bucle que se está ejecutando continuamente en nuestro programa. Para ello, detenemos la simulación con el botón ‘STOP’ de los controles de la simulación y escribimos el siguiente código:
Recuerde respetar las mayúsculas y minúsculas.
Compilemos de nuevo el programa y ejecutemos la simulación. El programa se detendrá donde tenemos creado nuestro punto de rutpura.
Pulsemos de nuevo la tecla ‘Play’ y observe cómo el display LCD va cambiando sus líneas.
En cualquier momento, podemos eliminar todos los puntos de ruptura con la opción del menú contextual.