FamilyMart dörrklocka (1 / 2 steg)
Steg 1: Programmering och ansluta varje sensor med Arduino
Vi använder PIR rörelsesensorn för att upptäcka rörelse som produceras av någon som cross dörren, efter en boolesk funktion "isPeopleDetected()".
Sensorn är ansluten till Arduino enligt detta:
- Gul tråd ansluten till DIGITAL PIN 8 i Arduino
- Vita kabeln inte är ansluten
- Röd tråd ansluten till 5V i Arduino
- Svarta kabeln ansluten till marken i Arduino
arduino koden för att upptäcka rörelse med PIR Motion Sensor är:
/ * makrodefinitioner av PIR motion givarstaven och LED stift * /
#define PIR_MOTION_SENSOR 8 //Use stift 2 att ta emot signalen från modulen
#define LED 13 / / du kan se denna LED i Arduino styrelsen
void setup() {
pinsInit();
}
void loop() {
IF(isPeopleDetected()) //if den upptäcker de rörliga människor?
turnOnLED();
annat
turnOffLED();
}
void pinsInit() {
pinMode (PIR_MOTION_SENSOR, indata);
pinMode(LED,OUTPUT);
}
void turnOnLED() {
digitalWrite(LED,HIGH);
}
void turnOffLED() {
digitalWrite(LED,LOW);
}
/********/
/ * Funktion: upptäcka om någon rör sig i det är att upptäcka utbud * /
/ * Återgå:-boolean, sant är någon detected.* /
booleska isPeopleDetected() {
int sensorValue = digitalRead(PIR_MOTION_SENSOR);
IF(sensorValue == High) //if sensor värdet är hög? {
return true; Ja, returnera sant
} annat {
returnera false; Nej, returnera false
}
}
Vi ville spela olika versioner av FamilyMart låten slumpmässigt, så vi ändrade den grundläggande koden för MP3-spelaren, att lägga till en slumpvariabel kallas "num", det vill säga ett slumpmässigt antal enligt nummer eller låtar vi lagring i micro SD-kort som MP3-spelaren har.
MP3-spelaren är ansluten till Arduino enligt detta:
- Gul tråd ansluten till DIGITAL PIN 2 i Arduino
- Vit kabel ansluten till DIGITAL PIN 3 i Arduino
- Röd tråd ansluten till 5V i Arduino
- Svarta kabeln ansluten till marken i Arduino
Koden för MP3-spelare är:
#include
SoftwareSerial mp3 (2, 3); //modify detta till kontakten som du använder.
void setup()
{
MP3.BEGIN(9600);
Serial.BEGIN(9600);
Delay(100);
om (true ==SetPlayMode(0x03))
Serial.println ("värdet av uppspelning 0x01, Single Loop läge");
annat
Serial.println ("Playmode uppsättning fel");
PauseOnOffCurrentMusic();
randomSeed(analogRead(0));
}
void loop()
{
SetVolume(0x1F);
SetPlayMode(0x01);
Delay(1000);
int num = random(1,4);
Serial.Print(NUM);
SetMusicPlay(00,(uint8_t) num); uint8_t kommer att omvandla num i ett hexadecimalt värde
PauseOnOffCurrentMusic();
Delay(1000);
While(1);
}
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);
While(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);
While(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);
While(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);
While(MP3.available())
{
om (0xA9==mp3.read())
return true;
annat
returnera false;
}
}
Denna MP3-spelare använder hexadecimala tal, så måste du använda något liknande denna webb konverteraheltalsvärden för att kontrollera styrelsen.
Till exempel säger hänvisningen:
Det finns 32 ljudnivåer från 00 till 31. 00 är stum, och 31 för maximal volym.
för att ställa in volymen till högsta värde: 31 vi omvandla den till ett hexadecimalt som är 1F
så koden vi skriver: SetVolume(0x1F);