Inledning: Halo Theme Music Box (1 / 7 steg)
Steg 1: Den kod som I´ve används för detta projekt.
Här är alla min kod som I´ve använde för detta projekt.
Den har flera kommentarer som ger ytterligare förklaring om vad den del av koden faktiskt.
Bara kopiera och ladda in denna kod i din arduino UNO.
#define DEBUG //uncomment detta att aktivera felsökning i
Monitor
#include / / bibliotek för sköld
#include / / bibliotek för sd-kort på sköld
#include / / bibliotek för sd-kort på sköld
#include / / bibliotek för att kontrollera sköld
#include / / specialbibliotek för styrning servo
skapa och namnge biblioteksobjektet
SFEMP3Shield MP3player;
SdFat sd;
SdFile fil.
VarSpeedServo servo;
Definiera stift och sådant
int sensorPin = A0; Ljussensorn är ansluten till Analog0
int sensorValue; variabel för att lagra värdet kommer från sensorn
int servoPin = 5; PIN-kod styr servo
int Led1 = 3; LED 1
int Led2 = 4; Led 2
int randomnr; Slumptal för att välja en låt från arrayen låten vi använder senare
booleska firstSong = 1; Detta är så det första spåret på sd-kortet kommer alltid att spela först när starter upp upp arduino
void setup() / / kör en gång, när skissen startar
{
Serial.BEGIN(115200); initiera serieporten
pinMode (A0, indata); ställer in analoga pin A0 vara indata
pinMode (Led1, OUTPUT); uppsättningar pin 3 till vara en utgång
pinMode (Led2, OUTPUT); uppsättningar stift 4 vara en utgång
om (! sd.begin (SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt();
starta upp MP3 Player sköld
MP3player.BEGIN();
}
void loop() / / kör om och om igen
{
sensorValue = analogRead(sensorPin); läsa värdet från ljussensorn
Delay(250); Vänta en kort stund
#ifdef DEBUG
Serial.Print ("ljus Sensor värde:"); Skicka detta värde till datorn
Serial.println(sensorValue);
Serial.Print ("booleskt värde första låten:"); Skicka detta värde till datorn
Serial.println(firstSong); Skicka detta värde till datorn
Serial.Print ("upptäckt:");
Serial.println(isLightDetected(sensorValue));
#endif
IF(isLightDetected(sensorValue)) //Light upptäckta funktion är sant
{
IF(!servo.Attached()) {/ / vi fick kolla om servo är ansluten, så det inte kommer bifoga det varje gång det loopar. Detta görs så att vi kan stoppa servo spinning också när det inte finns tillräckligt med ljus
servo.attach(servoPin);
}
digitalWrite (Led1, hög); vänder på ledde ansluten till stift 3
digitalWrite (Led2, hög); vänder på ledde ansluten till stift 4
Delay(500); Vänta en halv sekund för att aktivera servo...
servo.writeMicroseconds(1535);
IF(firstSong == 1) / / Check om låten inte har spelat innan, så startar upp!
{
char firstsong [] = "track001.mp3";
MP3player.playMP3(firstsong);
Delay(250);
firstSong = 0;
#ifdef DEBUG
Serial.Print ("booleskt värde efter sången:"); Skicka detta värde till datorn
Serial.println(firstSong); Skicka detta värde till datorn
#endif
}
randomnr = random(0,5); slumptal genereras för att välja en låt från array
Låt matrisen för musiken vara valt slumpmässiga
char * trackArray [] = {
"track001.mp3",
"track002.mp3",
"track003.mp3",
"track004.mp3",
"track005.mp3"
};
MP3player.playMP3(trackArray[randomnr]); Spela låten!
sensorValue = analogRead(sensorPin); Läsa värdet från sensor för att se om den fortfarande har tillräckligt med ljus
#ifdef DEBUG
Serial.Print ("ljussensor värde efter Loop:"); Skicka detta värde till datorn
Serial.println(sensorValue);
#endif
}
annat //No upptäckt
{
#ifdef DEBUG
Serial.println ("inte tillräckligt med ljus upptäcks stänga allt"); //
#endif
Stoppa allt!
MP3player.stopTrack();
digitalWrite (Led1, låg); Vänden av lysdioder
digitalWrite (Led2, låg); Vänden av lysdioder
servo.detach();
}
}
Funktion för att hjälpa oss att testa sensor förutsättningar
booleska isLightDetected (int sensorValue) {
om (sensorValue > 50) {
return true;
}
annat {
returnera false;
}
}