Paso 4: Código de Arduino
Necesita algo de código para ejecutar ScareOS. El código controla los componentes y maneja wake/sleep, activación de sonidos y los ojos se muestra en la matriz de LED. Usted puede encontrar el código completo en https://github.com/mp911de/scare-os-halloween-iot
El código se encuentra en susto-os/susto-os.ino. Necesita dos bibliotecas adicionales:
El sitio de Adafruit tiene un bonito tutorial Cómo instalar las bibliotecas de Arduino. Así que abrir el bosquejo, compilarlo y subirlo a tu Arduino. Puede adoptar el código para utilizar pernos diferentes o ajustar el distancia/tiempo:
#define PIN_SONIC_TRIGGER 3#define PIN_SONIC_ECHO 2#define PIN_SND_TRIGGER_WAKE 9 #define PIN_SND_TRIGGER_REGULAR 8 #define PIN_SND_TRIGGER_NEAR 7 #define PIN_SND_TRIGGER_SLEEPING 6 #define PIN_SND_ACTIVE 5// ms #define SOUND_INTERVAL_MS 20000 #define WAKE_DURATION_MS 180000#define ACTIVATION_DISTANCE_CM 280 #define NEAR_DISTANCE_CM 100
Roscado con Arduino
Código de Arduino sólo ejecuta subprocesos, lo que significa que su Arduino puede hacer sólo una cosa a la vez. El módulo de activación de sonido, por ejemplo, no ocupa el Arduino una vez que reproduce un sonido. Tan sonidos juegan en el fondo dentro de esta terminología.
¿Por qué estoy yo diciendo?
Visualización y animación de gráficos, como se hace con los ojos de la matriz, requieren el Arduino ejecutar código, dormir un rato, luego ejecutar código otra vez y así sucesivamente. Un ciclo de animación tiene una duración entre 0,5 segundos y 10 segundos. En este tiempo, el Arduino se ocupa con la animación. Si alguien camina por el sensor de rango muy rápido, no vemos, porque estamos ocupados con la animación y no con medición de distancia.
Pero eso no es totalmente cierto. Mayoría de las veces, el Arduino "duerme" lo que significa que podríamos usar ese tiempo para hacer cosas diferentes, cosas como provocando un sonido o medir la distancia. El código está escrito para utilizar estos retrasos. Encontrarás un montón de llamadas a un método de bgProcessing(). Este método se llama con un parámetro de retraso. Si el retraso es suficiente para medir la distancia (medición de que la distancia necesita tiempo y activación de sonido, también), se mide la distancia y el procesamiento de sonido se invoca allí. No es exactamente un programador de tareas como Windows o MacOS utilice para emular multi-threading en un CPU (core), pero intercala tareas de una manera similar.
Algunas palabras sobre la medición de distancia
El sensor que utiliza la física de la velocidad del sonido para determinar la distancia. Se activa un sonido ultrasónico y el micrófono registra el eco. La velocidad del sonido en aire seco es aproximadamente un kilómetro en 2,914 segundos. Puesto que el sonido necesita golpear un objeto que rebota hacia atrás, el camino se cruza dos veces. Esto significa, que la duración para medir la distancia
DISTANCE * Speed of Sound * 2
A veces, el sensor que informa un eco después de un tiempo más largo o shorer. El resultado de son parpadeo distancias de hasta 100cm. Estos son afloramientos y falsean el resultado (la asunción de distancia). El código, por lo tanto, realiza una serie de medidas, ordena los resultados y toma algún resultado medio. Funciona bastante bien y la aplicación es bastante sencilla (más fácil que calcular un cuantil).