Paso 4: Programar el Arduino
Primero programar el Arduino Uno con la StandardFirmata ejemplo croquis proporcionado por Adafruit.
He adjuntado los archivos que he creado para este proyecto. No se olvide de añadir el House.h, House.cpp y pitches.h como fichas en el bosquejo de Main_Code. El bosquejo debe cargarse en el Arduino Micro.
He creado la casa de la biblioteca, que consiste en House.h y House.cpp.
El archivo de encabezado crea la clase definiendo el constructor, las funciones a utilizar en el archivo Main_Code.ino, y las variables que se utilizan en el archivo de House.cpp.
El archivo CPP define lo que hace cada función cuando se le llama en el archivo Main_Code.ino. Primero en este archivo, verá la duración de la melodía y nota de arreglos de discos, estos son utilizados por la función playtune(). Copié esta función de garagelab.com, las definiciones de las notas están en pitches.h. El constructor asigna los pines del dispositivo y establece el pin de salida como una salida y la entrada de pin como una entrada. Las funciones openDoor() y closeDoor() controlan el servo conectado a la puerta. La playTune() y silent() control de la salida de altavoz.
En el Main_Code.ino, primero definí los pasadores de puerta, timbre y las interrupciones. Las interrupciones se basan en un cambio en el voltaje en los pines de entrada. Este voltaje cambia cuando se cambia la salida del pin en la aplicación de Adafruit. La función de puerta mantiene pista del estado anterior de la tensión de entrada de pin de puerta tan si la puerta estaba cerrada anteriormente, cambiando el voltaje se abrirá la puerta y viceversa. El zumbador también realiza un seguimiento de la tensión de entrada de pin de timbre Si el zumbador estaba apagado, tocará el tono y si previamente estaba tocando el timbre, el timbre será silenciado. Nota: La función playTune() se llama cuando el indicador prevBuzzer se establece en 1 y se comprueba en el bucle principal. Necesita estar en el bucle principal por lo que los retrasos en la playTune() será en efecto. Retrasos no se ejecutan en una interrupción. Las declaraciones de Serial.println() se incluyen para propósitos de depuración.