Paso 4: Software - porción de Arduino
¡Vale! Ahora que todo termine con el hardware, vamos a pasar en el software.El Arduino se utiliza como una interfaz en este proyecto. Permite los servos y el sensor de infrarrojos para comunicarse fácilmente con la computadora usando comandos simples.
Aunque se trata de una operación "sencilla", hay algunas áreas críticas que necesitan ser abordadas. Uno de esos problemas que me encontré con un montón era sincronizaciones de comunicación. Básicamente por el tiempo que el microprocesador era listo para el comando de lectura, el equipo no ha completado enviarlo. Una solución simple a esto es asignar un carácter "comando listo". Elegí un punto y coma como mi terminator.
Para asegurarse de que los comandos son en un aspecto serial que detendrá el equipo de tratar de leer una temperatura mientras que el sensor de IR estaba en movimiento, es necesario un método de respuesta. Una solución que, común para las comunicaciones, se llama ACK, o reconocimiento. Supongamos que ejecutamos "p120;" (pan a 120deg), el equipo para esperar el microprocesador decir "AP120;" (ack pan 120). Una vez recibido el ACK el programa puede continuar a una temperatura o la siguiente serie de comandos.
Otra parte complicada es leer los datos de IR desde el puerto serial en el sensor. Para leer los datos tenemos que hacer algo llamado "bit-bang". Se trata de establecer una interrupción en el flanco descendente de reloj para leer el bit en la línea de datos. Cada "explosión" de datos que contiene una cabecera y algunos datos que deben ser decodificados.
Leyendo el pdf para el módulo ZyTemp (http://www.metrisinst.com/item_management/assets/files/TN9_UserManual_009.pdf ) en la página 13 se puede ver la secuencia de datos para cada una de las ráfagas de datos. En lugar de gastar tiempo en esto, decidí hacer una búsqueda rápida y encontrar que alguien ya escribió esto para arduino (hicieron un regulador de temperatura precisos de la placa). El origen está documentado en el código para referencia y crédito por las ideas.
En todo el código de Arduino, cuando compila, toma 7982 bytes de espacio.
Comandos para saber (todos los comandos deben terminar con un ';':
p < n >; #pan a < n > grados
t < n >; #tilt a < n > grados
r; objeto de #read el IR sensor
a; temp ambiente de #read el IR sensor
utilizar estos ajustar las zonas de protección (no permite un comando de la cacerola/la inclinación a trabajar si fuera de los límites - algunos servos mastiquen selfs si tratan de ir más allá de un máximo)
u < n >; #set servo superior límite (protección del) valor por defecto es 145 grados
l < n >; # set inferior servo límite (protección del) valor por defecto es 35 grados