Schritt 4: Arduino Code
Sie benötigen einige Code ScareOS ausgeführt. Der Code steuert die Komponenten und Griffe Wach/Schlaf, Klänge auslösen und die Augen auf die LED-Matrix angezeigt. Den vollständigen Code finden Sie auf https://github.com/mp911de/scare-os-halloween-iot
Der Code befindet sich in Angst-os/Angst-os.ino. Sie benötigen zwei zusätzliche Bibliotheken:
Die Website Adafruit hat ein schönes Tutorial, wie Arduino Bibliotheken zu installieren. So öffnen Sie die Skizze, kompilieren Sie und laden Sie sie auf Ihrem Arduino. Sie können den Code, um verschiedene Pins verwenden oder Anpassen des Entfernung/Zeitpunkts übernehmen:
#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
Gewindeschneiden mit Arduino
Arduino Code läuft nur Single-Threading, was bedeutet, dass Ihre Arduino kann nur eine Sache auf einmal zu tun. Moduls Soundauslöser beispielsweise besetzen nicht die Arduino, sobald ein Sound wiedergegeben wird. So spielen Klänge im Hintergrund innerhalb dieser Terminologie.
Warum erzähle ich Ihnen das?
Anzeigen und animieren von Grafiken, wie es mit den Augen Matrix geschieht erfordert die Arduino Code auszuführen, eine Weile schlafen, dann führen Sie Code wieder und so weiter. Eine Animationszyklus dauert zwischen 0,5 sec und 10sec. In dieser Zeit beschäftigt sich die Arduino mit der Animation. Wenn jemand wirklich schnell durch den Bereich Sensor geht, würde wir nicht bemerken, weil wir animieren und nicht Messabstand besetzt sind.
Aber das stimmt nicht ganz. Die meisten der Zeit, "schläft der Arduino" was bedeutet, dass wir diese Zeit nutzen könnte, um verschiedene Dinge - Dinge wie einen Sound auslösen oder Messabstand tun." Der Code wird geschrieben, um diese Verzögerungen zu nutzen. Sie finden viele Anrufe an eine bgProcessing()-Methode. Diese Methode wird mit einem Delay-Parameter aufgerufen. Wenn die Verzögerung ist lang genug, um den Abstand (Messen der Abstand Zeit braucht und Klang, auch auslösen), wird der Abstand gemessen und die solide Verarbeitung wird es aufgerufen. Es ist nicht gerade ein Taskplaner wie ein Windows oder MacOS verwenden, Multi-threading auf einer CPU (Core) zu emulieren, aber es Zwischenblätter Aufgaben in ähnlicher Weise.
Einige Worte zur Abstandsmessung
Der reichende Sensor nutzt die Physik der Schallgeschwindigkeit , um die Entfernung zu bestimmen. Ein Ultraschallton ausgelöst und das Mikrofon nimmt das Echo. Die Geschwindigkeit des Schalls in trockener Luft ist etwa einen Kilometer in 2,914 sec. Da der Ton muss einen Gegenstand zu treffen, der es zurück prallt, wird der Weg zweimal überquert. Das bedeutet, dass die Dauer, den Abstand zu messen ist
DISTANCE * Speed of Sound * 2
Manchmal, berichtet der reichende Sensor ein Echo nach einer Shorer oder längere Zeit. Das Ergebnis davon sind Entfernungen von bis zu 100cm flackern. Diese sind Ausreißer und verfälschen das Ergebnis (die Annahme der Distanz). Der Code, daher führt eine Reihe von Maßnahmen, sortiert die Ergebnisse und nimmt einige mittlere Ergebnis. Es funktioniert ziemlich gut und die Umsetzung ist ganz einfach (einfacher als die Berechnung einer Quantil).