Stap 3: Kerst krans Arduino Code
MP3-bestanden
Plaats uw MP3-bestanden op uw SD-kaart op de MP3-schild, zorg ervoor dat u een genoemd: merry02.mp3 voor de begroeting wanneer beweging wordt gedetecteerd. U kunt het noemen wat je wilt, maar uw code overeenkomt met bijwerken.
Zorg er ook voor hebt u ten minste 20 MP3's en dat u de array is ingesteld op overeenkomen met de namen en naamgeving (meer info hierover hieronder).
Code
Download het ZIP- of tekst bestand is gekoppeld en kopieert naar uw Arduino IDE.
Hier zijn sommige belangrijke items die u wilt wijzigen:
Wijzigen uw digitale invoer pin-wedstrijd welke u verbonden uw OUT-lijn te merken van de PIR-sensor, dat de volgende "intputPin" is ingesteld op 2.
/* * PIR sensor tester */ int ledPin = 13; // choose the pin for the LEDint inputPin = 2; // choose the input pin (for PIR sensor) <br>
Wijzig uw namen van de nummers aan de MP3-bestanden hebt u op uw SD-kaart op de MP3-schild. Merk op dat er een limiet aan de lengte van het bestand namen, gedefinieerd in de MP3-schild-instructies. Mijne heten alle track00 # .mp3
//this array is initialized once, randomly selected in the loop//Instead of using a random load of MP3s from the file system, I ran into problems after looping through the filesystem about 10 times the board would lock up//I believe there was a problem opening the file system over and over again to query for random files//secondly, I have files on the system that I dont want to playchar* myFiles[]={"track001.mp3", "track002.mp3", "track003.mp3","track004.mp3", "track005.mp3","track006.mp3","track007.mp3","track008.mp3","track009.mp3","track010.mp3","track011.mp3","track012.mp3","track013.mp3","track014.mp3","track015.mp3","track016.mp3","track017.mp3","track018.mp3","track019.mp3","track020.mp3"};
Compileer en werken te valideren. De sensor wacht 15 seconden om te "kalibreren" (ik heb die van de Parallax codevoorbeelden. Vervolgens wanneer beweging wordt gedetecteerd ik output van de willekeurig bestand aan de seriële buffer en het bestand afspelen, op houdt strik over elke seconde en dan als er geen verkeer voor ten minste vijftien loops(seconds) bestaat de muziek stopt met afspelen en reset ik de Mp3-kaart (musicPlayer.softReset();) - de reden dat ik dat wil doen leek wanneer ik met een nieuwe track beginnen zou met nieuwe beweging zou ik later een blip krijg uit het oude spoor. Met de reset die ik krijg altijd een schone start op de volgende MP3 gespeeld. Ik denk dat ik moet nog iets zeggen tegen Adafruit en bepalen als het een bug is of dat ik doe het goed als ik met de rest ben.
if ( (millis() - detectTime) >= 15000){
Serial.println("No motion for 15 seconds"); musicPlayer.stopPlaying(); musicPlayer.softReset(); delay(200); digitalWrite(ledPin,LOW); val = 0; // we start, assuming no motion detected detectTime = 0; }