FamilyMart dörrklocka (2 / 2 steg)
Steg 2: Final Arduino koden och installera maskinvaran
Den final koden kombinera båda koderna för att utlösa ljudet varje gång rörelsesensorn upptäcker rörelser är:
#include
#define PIR_MOTION_SENSOR 8 //Use stift 2 att ta emot signalen från modulen
#define LED 13 / / denna LED tänds när sensorn känner av rörelse
SoftwareSerial mp3 (2, 3); ändra detta till kontakten som du använder.
booleska someoneThere = false;
booleska someoneWasThere = false;
void setup() {
MP3.BEGIN(9600);
Serial.BEGIN(9600);
Delay(100);
om (== true SetPlayMode(0x00))
Serial.println (inställd 0x00 av uppspelning, Single Loop läge.");
annat
Serial.println ("Playmode uppsättning fel");
PauseOnOffCurrentMusic();
randomSeed(analogRead(0));
pinMode (PIR_MOTION_SENSOR, indata);
pinMode (LED, OUTPUT);
SetVolume(0x1F);
}
void loop()
{
om (isPeopleDetected()) {//if den upptäcker de rörliga människorna?
digitalWrite (LED, hög);
någon där stämmer nu
someoneThere = sant;
int num = random (1, 12);
Serial.println(NUM);
SetMusicPlay (00, (uint8_t) num).
Delay(2500); denna försening är för MP3-filen
} annat {
someoneThere = false;
someoneWasThere = false;
Serial.println ("no one");
digitalWrite (LED, låg);
PauseOnOffCurrentMusic();
}
om (someoneThere == true & & someoneThere! = someoneWasThere) {
Serial.println ("någon är det!");
someoneWasThere = sant;
}
}
Ställa in indexet musik att spela, indexet avgörs av inmatningssekvensen
för musiken;
hbyte: den höga byten i index.
lbyte: den låga byten i index.
booleska SetMusicPlay (uint8_t hbyte, uint8_t lbyte)
{
MP3.write(0x7E);
MP3.write(0x04);
MP3.write(0xA0);
MP3.write(hbyte);
MP3.write(lbyte);
MP3.write(0x7E);
Delay(10);
samtidigt (mp3.available())
{
om (0xA0 == mp3.read())
return true;
annat
returnera false;
}
}
Paus på/av aktuell musik
Boolean PauseOnOffCurrentMusic(void)
{
MP3.write(0x7E);
MP3.write(0x02);
MP3.write(0xA3);
MP3.write(0x7E);
Delay(10);
samtidigt (mp3.available())
{
om (0xA3 == mp3.read())
return true;
annat
returnera false;
}
}
Volymen, spänna är 0x00 till 0x1F
booleska SetVolume (uint8_t volym)
{
MP3.write(0x7E);
MP3.write(0x03);
MP3.write(0xA7);
MP3.write(Volume);
MP3.write(0x7E);
Delay(10);
samtidigt (mp3.available())
{
om (0xA7 == mp3.read())
return true;
annat
returnera false;
}
}
booleska SetPlayMode (uint8_t playmode)
{
om (((playmode == 0x00) | (playmode == 0x01) | (playmode == 0x02) | (PlayMode == 0x03)) == false)
{
Serial.println ("PlayMode Parameter fel!");
returnera false;
}
MP3.write(0x7E);
MP3.write(0x03);
MP3.write(0xA9);
MP3.write(PlayMode);
MP3.write(0x7E);
Delay(10);
samtidigt (mp3.available())
{
om (0xA9 == mp3.read())
return true;
annat
returnera false;
}
}
/***************************************************************
* Funktion: Upptäcka om någon rör sig i det är att upptäcka utbud *
* Avkastning:-boolean, sant är någon detected.* /
Boolean isPeopleDetected()
{
int sensorValue = digitalRead(PIR_MOTION_SENSOR);
om (sensorValue == hög) //if sensor värdet är hög?
{
return true; //yes,return true
}
annat
{
return false; //no,return falskt
}
}