Paso 8: Software
El servo es controlado por un software de 50Hz PWM. Servos de diferentes fabricantes tienen ligeramente diferentes valores PWM pulso ancho min/max. Es importante que estos se ajustan en consecuencia. El servo puede conseguir dañado si es conducido repetidamente sobre sus límites.
El piezo requiere una frecuencia en el rango de kHz. El AVRs hardware PWM se utiliza para conducir.
Uno de los canales de ADC se utiliza para leer la salida del amplificador de micrófono. Cuando se alcanza un cierto umbral, se desencadena el movimiento de la cabeza. Diferentes micrófonos tienen un impacto en la salida del amplificador. Puede ajustar el nivel de activación de software. Mina se establece para que ignora conversaciones normales, sino obtener activa cuando las cosas se excito. Es también un buen estornudo detector. :-)
La ADC se lee de una interrupción del ADC. Si este controlador de interrupción está activo mientras los fuegos de interrupción de timer PWM, puede introducir una variación leve para el PWM. Esta variación puede provocar el servo mover un poco, que produce bastante ruido al detector sonido disparador. Hay dos posibles soluciones a este problema. Una sería no utilizar una interrupción para el ADC y leerlo en un bucle de espera en su lugar. Esto puede ser un poco complicado y feo. En cambio la solución actual es simplemente desactivar el pulso PWM servo mientras que la cabeza no se mueve. Esto encenderá el motor, excepto energía y variación PWM no causará ningún problema. En general la detección de sonido sólo está activa mientras que del Android es tranquila, como cualquier código Morse emite un pitido o movimiento de la cabeza también lo desencadenan.
Uno de los ocho mensajes de código Morse se juega al azar. Wikipedia tiene un gran artículo de código Morse . El alfabeto del código Morse está codificado en un cuadro que traduce los caracteres ASCII a las correspondientes señales de Morse usando una codificación de dos bits. Los mensajes de código Morse reales pueden por consiguiente ser almacenados en fácil cadenas ASCII de eficiente lectura y espacio.
El código fuente puede ser compilado y programado en el ingenio MCU libre AVR Studio IDE. Hay alternativas de código abierto también.