Stap 6: Controle-eenheid
De controle-eenheid bestaat uit een Arduino en twee gestapelde schilden als volgt;
- Arduino Uno R3 (niet-kloon). http://proto-pic.co.uk/Arduino-Uno/
- Dit wordt gebruikt om te controleren en te synchroniseren van effecten
- Adafruit Waveshield v1.1. https://www.adafruit.com/products/94
- Hierdoor kan audio afspelen met PWM van de Uno waarop de Adafruit Golf bibliotheek, WaveHC.h en WaveUtil.h. Details hier; https://Learn.adafruit.com/adafruit-Wave-Shield-audio-Shield-for-Arduino
- Adafruit Proto Shield v0.5. https://www.adafruit.com/products/51
- Dit biedt 1W voor audio-amplificatie.
Zoals ik vermeld op de eerste pagina, maar hier zal herhalen. Wanneer het systeem inactief in is er zwakke staat de ultra heldere groene Leds pulse 'men', dit wordt bereikt door gecontroleerde modulatie van het PWM-signaal gevoed aan de bestuurder transistor die T2 met pin 6 op de Arduino via een 10K Ohm weerstand verbonden. De verzamelaar van T2 zinkt de huidige belasting van de 5 groene LED's aangesloten parallel.
Tijdens de opsporing van de motie, wordt het signaal van de PIR doorgegeven aan de analoge pin A0. Dit werd gedaan omdat ik wilde proberen een paar PIR sensoren en de respectieve data sheets lezen ik verbaasd was te horen dat sommige uitgangen van het apparaat niet noodzakelijkerwijs swing het volledige aanbod trein. Bijgevolg om op te slaan mijn dat toe te voegen elke verdere signaal conditioning elektronica bedraad ik de output van de PIR op een analoge ingang aan de enquete potentieel een niveau, indien nodig. Als het gebeurt, was de PIR ik geregeld voor een goedkope aankoop op Ebay die betrouwbaar did naar de job en gebruikt een open collector uitgang met lokale pull up. In dit geval A0 is geconfigureerd als een digitale ingang en werkt prima.
Software in de Uno is geschreven om te zoeken naar meer dan één trigger (het is eigenlijk gebruikersvariabele) in een bepaalde periode om valse triggering vindt niet plaats. Ik vond 2 trekkers 'DETECTION_COUNTS_MAX' in een periode van 10 seconden 'DETECTION_WINDOW_TIMER_VALUE_MS' genoeg om te stoppen met het vervelende van de buren was (als u dicht bij de erker in de video u mij woest zwaaien ziet om het ding verrekening kijkt). Een zaak gebaseerd statusmachine wordt gebruikt voor het vangen van de rand van dit evenement.
Zodra een geldig bewegingsdetectie is het programma draait de groene Leds vol op (anders interrupts zou moeten lopen als een gelijktijdige proces en ik vermoed de Adafruit Wave-bibliotheek moet onbelemmerde toegang tot interrupts dat te controleren van de correcte generatie), de code eenvoudiger te maken.
De kwade ogen worden geactiveerd en de audio wordt gespeeld. De Audio-pad wordt overgeschakeld uitgang via een relais tijdens de inactieve toestand zoals ik vond tijdens het lawaai van de ontwikkeling van de groene Leds PWM was koppelen aan de audio en veroorzaakt een merkbaar 'brom'.
De audio track is een verzameling van kleinere tracks aan elkaar geregen en achter elkaar gespeeld. Leven gemakkelijker (enkel een eenvoudige sequentiële krijgen van de flash card) te maken ik creatief genaamd de nummers 1th1.wav, 2sc1.wav, 3fs1.wav, 4cd1.wav, 5el1.wav en 6ew1.wav en hen in één keer om de geheugen kaart dat zij werden geplaatst in de juiste volgorde hebt gekopieerd.
Als u wilt synchroniseren het veranderen van de schedel Leds van blauw naar rood (dit gebeurt op het punt in het nummer waar gelach optreedt en net na de krakende deur 'Welkom' wordt gesproken), check ik om te zien wanneer de track '4cd1.wav' is voltooid en energie van het Relais voor wissel tegenover voor rode Leds.
Zodra de audio track volledig voltooid is wordt alles weer en wordt het systeem valt terug naar de zwakke controle staat.
Code voor de controle-eenheid is gekoppeld hieronder samen met de audiobestanden die ik gebruikte.