Stap 7: Code walkthrough!
De code hier is zeer eenvoudig gehouden. U kunt gemakkelijk maken het ingewikkelder door het toevoegen van meerdere scheten, ze time-out, willekeurig gedraaid, enz.
De code hier gepresenteerd is grotendeels gebaseerd op deze twee voorbeelden:
http://www.seeedstudio.com/wiki/Grove_-_PIR_Motion...
en http://www.seeedstudio.com/wiki/Grove_-_PIR_Motion...
/* Automatic farts * sound generator that plays random fart noises when motion is detected * For use with the Mediatek Linkit One and a Grove PIR motion sensor * You will also need something like a speaker to play the far noise on */#include <LAudio.h>#define MOTION_SENSOR 2 //Use pin 2 to receive the signal from the module void setup() { LAudio.begin(); Serial.begin(115200); LAudio.setVolume(6); pinMode(MOTION_SENSOR, INPUT); LAudio.playFile(storageFlash,(char*)"19.mp3"); }void loop() { if(isPeopleDetected()){//if it detects the moving people? Serial.println("person detected!"); LAudio.playFile(storageFlash,(char*)"19.mp3"); delay(2000); } }boolean isPeopleDetected() { int sensorValue = digitalRead(MOTION_SENSOR); if(sensorValue == LOW)//if the sensor value is HIGH? { return true;//yes,return true } else { return false;//no,return false }
In de setup-functie de audio code wordt gestart, een hoeveelheid "6" is geselecteerd (6 het hoogste is), de pinMode voor de bewegingssensor is ingesteld als input (wat betekent wat die pin is aangesloten zal ingesteld op hoog of laag). Dan het mp3-bestand speelt.
In de lus wordt sectie die de "isPeopleDetected"-functie wordt opgeroepen om te zien of er beweging is gedetecteerd en als het het bestand heeft gespeeld.
isPeopleDetected heeft haar logica ingesteld zodat een "Laag" pin lezen betekent dat er beweging. De werken voor de sensor IR afstand onderbreken maar niet voor de PIR sensor voor de detector van de motie. Daarvoor moet u wijzigen van de laag naar een hoog.