Paso 5: Hacer la charla ATtiny a usted
En el caso de Arduino, puede tener una conexión serial a la computadora y el monitor de valores usando al Monitor serie. Lamentablemente nuestro ATtiny no tiene tal capacidad incorporada porque le falta un chip FTDI para la comunicación serial. PERO no tenemos que estar triste por eso: podemos implementar software de comunicación serial en el ATtiny y "abusar" de nuestro Arduino como promotor de la serie. Esto significa que podemos tener el ATtiny nos habla a través de Arduino (y al revés if necesitamos).
Afortunadamente, no tenemos que implementar esto en nosotros mismos desde Martin Thomas y Colin Gittins hizo una buena biblioteca y ponerla en github: avr-softuart. Usaremos esto para crear un pequeño programa para nuestra ATtiny que transmite algunos valores de la prueba via serial expedición a nuestro ordenador con nuestro Arduino. Puede utilizar esto más adelante en su propio programa para algunos básico "depuración".
Una palabra de ADVERTENCIA: "softuart" implementa las capacidades de la UART en software que significa que es mucho más lenta que la UART implementada en hardware. También significa que el ATtiny tiene que hacer algún trabajo pesado durante la manipulación de la comunicación serial. Por lo tanto les recomiendo usar "softuart" sólo mientras depura tu proyecto.
Vamos a empezar con nuestro programa para el ATtiny. Primero necesitamos descargar el avr-softuart fuentes desde el repositorio de github. Necesitaremos la siguiente incluye:
--
#include < avr/io.h >
#include < avr/interrupt.h >
#include < util/delay.h >
#include "softuart.h"
--
En el fie softuart.h se debe establecer la SOFTUART_TXBIT en la línea 18 para el pin correcto (en nuestro ejemplo nos establece en PB1). En el bucle principal, comenzamos la comunicación serial con las siguientes instrucciones:
--
softuart_init();
softuart_turn_rx_off(); no recibir datos en serie
SEI(); Esto permite interupts, que son necesarios para softuart
--
El resto es bastante fácil. Por ejemplo, si desea transmitir un carácter se puede llamar softuart_putchar('c'); que transmite el carácter 'c'. También puede transmitir cadenas y, si incluye stdio.h, también puede enviar números de formato de printf. Puede tener un vistazo a los ejemplos en main.c de repositorio de github del softuart.
Sin embargo, te recomiendo mantenerlo como simple, pequeño y rápido posible. Esto significa que usted no debe incluir stdio.h y utilizar printf() ya que tarda hasta unos 1,5 kB de la memoria flash. Por lo tanto, debe implementar una función que envía enteros como cadenas de caracteres. Yo lo he hecho en el segundo ejemplo para este tutorial y puede obtener el código completo en el repositorio de github. El programa escribe sólo números enteros entre -128 y 127 fuera de serie. Puede descargar, compilar y cargar el código en el ATtiny.
Ahora que tenemos nuestro programa de "hablar" sobre el ATtiny, debemos preparar el Arduino para recibir estos datos seriales y reenviarlo via USB a nuestro ordenador por lo que podemos leer la salida en un monitor de la serie. El código es muy simple y debe descargar también desde el repositorio de github. Sólo recibe datos entrantes en serie con software serial de ciertos pin (10) con una velocidad en baudios 2400 (lento software de serie!) y la transmite a nuestro ordenador vía el hardware de serie con una velocidad en baudios de 115200 (USB rápido!). Añadir este código a tu Arduino y puede continuar con el esquema de cableado muy simple arriba para juntar todo.
Al conectar tu Arduino a su puerto USB, el ATtiny iniciará enviando los datos en serie a la Arduino, que enviará a nuestro equipo. Ahora puede usar al Monitor de serie en el IDE de Arduino o programas como pantalla o minicom para leer la salida. Esto le permite ver lo que está pasando en el ATtiny con solo 1 eje y un Arduino.
Espero que este tutorial le ayudará a crear programas de ATtiny inteligentes que utilizan sólo una fracción del espacio y la energía necesitadas por un Arduino. Puede echar un vistazo en el siguiente proyecto para obtener un ejemplo acerca de cómo leer datos de sensor análogo de un acelerómetro para detectar cuando un dispositivo ha sido sacudido: attiny soundcube