Jul hälsning krans Arduino och MP3 (3 / 4 steg)
Steg 3: Jul krans Arduino kod
MP3-filer
Plats dina MP3 filer på ditt SD-kort på MP3 skölden, se till att du har en som heter: merry02.mp3 för hälsningen när rörelse detekteras. Du kan kalla det vad du vill men uppdatera din kod att matcha.
Kontrollera också att du har minst 20 MP3-filer och att du uppdatera matrisen är inställd att matcha namn och namnkonventioner (mer info om detta nedan).
Koden
Ladda ner ZIP eller Text filen bifogas och kopiera till din Arduino IDE.
Här är några anmärkningsvärda objekt du vill ändra:
Ändra din digitala ingångsstift match som en du anslutit din OUT linje från PIR-sensorn, Observera följande "intputPin" är satt till 2.
/*
* PIR sensor testare
*/
int ledPin = 13. Välj den PIN-kod för LED
int inputPin = 2; Välj ingångsstift (för PIR sensor) < br >
Ändra din spårnamn att matcha MP3-filer du har på ditt SD-kort på MP3 skölden. Observera att det finns en gräns för den fil namnlängden, definierad i MP3 shield instruktioner. Mine är alla döpta track00 # .mp3
denna matris är initierat en gång, slumpmässigt utvalda i slingan
Istället för att använda en random belastning av MP3s från filsystemet, sprang jag in i problem efter loopa igenom filsystemet ungefär 10 gånger styrelsen skulle låsa upp
Jag tror det var ett problem att öppna filen systemet om och om igen att frågan för slumpmässiga objekt
för det andra, jag har filer på systemet som jag inte vill spela
char * 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"};
Sammanställa och verifiera den arbeten. Sensorn väntar i 15 sekunder att "kalibrera" (jag fick det från kodexemplen Parallax. Sedan när rörelse detekteras I den slumpmässiga utdatafilen till seriell bufferten och spela upp filen, det håller looping om varje sekund och sedan om det finns ingen rörlighet för minst femton loops(seconds) musiken slutar spela och jag återställa Mp3 kortet (musicPlayer.softReset();) - anledningen till att jag gör det är det verkade när jag skulle börja ett nytt spår senare med ny rörelse jag skulle få en blip från gamla banan. Med Återställ får jag alltid är en ren start på nästa MP3 spelade. Jag antar att jag borde säga något till Adafruit och avgöra om det är en bugg eller om jag gör det korrekt som jag är med resten.
om ((millis() - detectTime) > = 15000) {
Serial.println ("ingen rörelse i 15 sekunder");
musicPlayer.stopPlaying();
musicPlayer.softReset();
Delay(200);
digitalWrite(ledPin,LOW);
Val = 0; Vi börjar, förutsatt att ingen rörelse upptäcks
detectTime = 0;
}