Arduino röda mattan ingången
Detta projekt kan du skapa en storslagen entré. Det upptäcker dig gå i och spelar en låt som är ingången. Gå in i rummet med din favorit starwars låt som spelas för dig. Du måste också installera tonen biblioteket finns på:
http://Rogue-Code.googlecode.com/files/Arduino-Library-Tone.zip
För hjälp med att installera bibliotek gå till:
http://code.Google.com/p/Rogue-Code/wiki/InstallingArduinoLibraries
Komponenter som behövs:
1 x högtalare
1 x Arduino
1 x bröd styrelse
1 x IR-mottagare
1 x 470 ohms motstånd
1 x 220 eller 100 ohms motstånd
Sladdar
Komponenter kan hittas på http://egrobotics.com/store/
Detta projekt använder och Arduino ombord och IR-tillägg Kit
www.EGRobotics.com
Koden:
Alla låtar är bortkommenterad innan du överför välja den låt du vill ha genom att ta bort
den "/ /" framför den. Hitta fler toner på http://code.google.com/p/roguecode/wiki/ToneLibraryDocumentation
#include
Tone tone1;
#define OCTAVE_OFFSET 0
int noterar [] = {0,
NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4,
NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5,
NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5,
NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6,
NOTE_GS6, NOTE_A6, NOTE_AS6, NOTE_B6,
NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7, NOTE_G7,
NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7
};
char * sång = "den
Simpsons:d=4,o=5,b=160:c.6,E6,f#6,8A6,g.6,E6,C6,8a,8F#,8F#,8F#,2g,8p,8p,8F#,8F#,8F#,8g,a#.,8c6,8
C6, 8c 6, c6 ";
char * låten =
"Indiana: d = 4, o = 5, b = 250:e, 8 p, 8f, 8 g, 8 p, 1 c 6, 8 s., d, 8 p, 8e, 1f, p., g, 8 p, 8a, 8b, 8 p, 1f6, p, a, 8 p, 8 b, 2 c 6, 2 d 6, 2e
6,e,8p,8F,8g,8p,1c6,p,D6,8p,8e6,1f.6,g,8p,8g,e.6,8p,D6,8p,8g,e.6,8p,D6,8p,8g,f.6,8p,E6,8p,8d6,2c6 ";
char * låten =
"TakeOnMe:d = 4, o = 4, b = 160:8f #5, 8f #5, 8f #5, 8 d 5, 8 p, 8b, 8 p, 8e5, 8 p, 8e5, 8 p, 8e5, 8 g #5, 8 g #5, 8a5, 8b5, 8a
5, 8a5, 8a5, 8e5, 8p, 8d 5, 8p, 8f #5, 8p, 8f #5, 8p, 8f #5, 8e5, 8e5, 8f #5, 8e5, 8f #5, 8f #5, 8f #5, 8d 5, 8p, 8b, 8p, 8e5, 8
Persson, 8e5, 8p, 8e5, 8g #5, 8g #5, 8a5, 8b5, 8a5, 8a5, 8a5, 8e5, 8p, 8d 5, 8p, 8f #5, 8p, 8f #5, 8p, 8f #5, 8e5, 8e5 ";
char * låten =
"Entertainer:d=4,o=5,b=140:8d,8d#,8e,c6,8e,c6,8e,2c.6,8c6,8d6,8d#6,8e6,8c6,8d6,e6,8b,d6,2c6,p,8
d,8D#,8e,C6,8e,C6,8e,2C.6,8p,8a,8g,8F#,8a,8c6,E6,8d6,8c6,8a,2d6 ";
char * låten =
"Muppets:d = 4, o = 5, b = 250:c6, c6, a, b, 8a, b, g, p, c6, c6, en, 8b, 8a, 8 p, g., p, e, e, g, f, 8e, f, 8 c 6, 8 c, 8 d, e, 8e, 8e, 8 p, 8
e, g, 2 p, c6, c6, a, b, 8a, b, g, p, c6, c6, a, 8 b, a, g., p, e, e, g, f, 8e, f, 8 c 6, 8 c, 8 d, e, 8e, d, 8 d, c ";
char * låten =
"Xfiles:d = 4, o = 5, b = 125:e, b, a, b, d6, 2b, 1 p, e, b, a, b, e6, 2b, 1 p, g6, f #6, e6, d6, e6, 2b., 1 p, g6, f #6, e6, d6, f #6,2
b., 1 p, e, b, a, b, d6, 2b, 1 p, e, b, a, b, e6, 2b, 1 p, e6, 2b. ";
char * låten =
"Looney: d = 4, o = 5, b = 140:32 p, c6, 8f6, 8e6, 8 d 6, 8 c 6, a., 8 c 6, 8f6, 8e6, 8 d 6, 8 d #6,e.6,8e6,8e6,8c6,8d6,8c6,
8e6, 8 c 6, 8 d 6, 8a, 8 c 6, 8 g, 8a #, 8a, 8f ";
char * låten =
"20thCenFox:d = 16, o = 5, b = 140:b, 8 p, b, b, 2b, p, c6, 32 p, b, 32 p, c6, 32 p, b, 32 p, c6, 32 p, b, 8 p, b, b, b, 32 p, b, 32
p, b, 32p, b, 32p, b, 32p, b, 32p, b, 32p, g #, 32p, a, 32p, b, 8p, b, b, 2b, 4p, 8e, 8 g #, 8 b, 1 c# 6, 8f #, 8a, 8 c# 6, 1e6, 8a, 8c
#6, 8e6, 1e6, 8b, 8 g #, 8a, 2b ";
char * låten =
"Bond: d = 4, o = 5, b = 80:32 p, 16 c# 6, 32d #6, 32d #6, 16 d #6, 8 d #6, 16 c# 6, 16 c# 6, 16 c# 6, 16 c# 6, 32e6, 32e6, 16
E6, 8e6, 16d #6, 16d #6, 16d #6, 16 c# 6, 32d #6, 32d #6, 16d #6, 8d #6, 16 c# 6, 16 c# 6, 16 c# 6, 16 c# 6, 32e6, 32e6, 1
6e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16F#6,g#.6 ";
char * låten =
"MASH:d = 8, o = 5, b = 140:4a, 4 g, f #, g, p, f #, p, g, p, f #, p, 2e., p, f #, e, 4f #, e, f #, p, e, p, 4 d., p, f #, 4e, d, e, p, d, p, e, p, d
, p, 2 c#., p, d, c#, 4d, c#, d, p, e, p, 4f #, p, a, p, 4b, en, b, p, a, p, b, p, 2a, 4p, b, a, 4b, a, b, p, 2a., 4f #, a,b,p,d6,p,4e.6, d
6, b, p, a, p, 2b ";
char * låten =
"StarWars:d = 4, o = 5, b = 45:32 p, 32f #, 32f #, 32f #, 8b., 8f #.6, 32e6, 32d #6, 32 c# 6,8b.6,16f #.6, 32e6, 32d #6,3
2C#6,8b.6,16F#.6,32e6,32d#6,32e6,8c#.6,32f#,32f#,32f#,8b.,8F#.6,32e6,32d#6,32c#6,8b.6,16F#.6,3
2e6,32d#6,32c#6,8b.6,16F#.6,32e6,32d#6,32e6,8c#6 ";
char * låten =
"GoodBad:d = 4, o = 5, b = 56:32 p, 32a #, 32d #6, 32a #, 32d #6, 8a #., 16f #., 16 g #., d #, 32a #, 32d #6, 32a #, 32d #6,
8a #., 16f #., 16 g #., c# 6, 32a #, 32d #6, 32a #, 32d #6, 8a #., 16f #., 32f. 32d #., c#, 32a #, 32d #6, 32a #, 32d #6, 8a #.,
16 g #., d #";
char * låten =
"TopGun:d = 4, o = 4, b = 31:32 p, 16 c#, 16 g #, 16 g #, 32f #, 32f, 32f #, 32f, 16 d #, 16 d #, 32 c#, 32d #, 16f, 32d #, 32f, 16f #, 32f, 32 c#, 16f, d #, 16 c#, 16 g #, 16 g #, 32f #, 32f, 32f #, 32f, 16 d #, 16 d #, 32 c#, 32d #, 16f, 32d #, 32f, 16f #, 3
2F, 32 c#, g #";
char * sång = "ATeam:d = 8, o = 5, b = 125:4 d #6, a #, 2d #6, 16 p, g #, 4a #, 4 d #., p, 16 g, 16a #, d #6, a #, f6, 2d #6, 16 p, c#.6, 16 c 6, 16a #
, g #., 2a #";
char * låten =
"Flinstones:d = 4, o = 5, b = 40:32 p, 16f6, 16a #, 16a #6, 32 g 6, 16f6, 16a #., 16f6, 32d #6, 32 d 6, 32 d 6, 32d #6, 32f
6, 16a #, 16c 6, d6, 16f6, 16a #., 16a #6, 32g 6, 16f6, 16a #., 32f6, 32f6, 32d #6, 32d 6, 32d 6, 32d #6, 32f6, 16a #, 16
C6,a#,16a6,16d.6,16a#6,32a6,32a6,32g6,32f#6,32a6,8g6,16g6,16c.6,32a6,32a6,32g6,32g6,32f6,32e
6, 32g 6, 8f6, 16f6, 16a #., 16a #6, 32g 6, 16f6, 16a #., 16f6, 32d #6, 32d 6, 32d 6, 32d #6, 32f6, 16a #, 16c.6,32d6, 3
2D#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#6,16c7,8a#.6 ";
char * låten =
"Fara: d = 4, o = 6, b = 125:c, f, c, f5, c, f, 2 c, c, f, c, f, a., 8 g, 8f, 8e, 8 d, 8 c#, c, f, c, f5, c, f, 2 c, f., 8 d, c, en #5, a5, g5, f5,
p,d#,g#,d#,g#5,d#,g#,2D#,d#,g#,d#,g#,c.7,8a#,8g#,8g,8F,8e,d#,g#,d#,g#5,d#,g#,2D#,g#.,8F,d#,c#,c,p,
# 5, p, g #.5, d #, g #";
char * låten =
"Gadget: d = 16, o = 5, b = 50:32d #, 32f, 32f #, 32 g #, #, f #, a, f, g #, f #, 32d #, 32f, 32f #, 32 g #, #, d #6, 4 d 6, 32d #, 3
2F, 32f # 32 g #, #, f #, a, f, g #, f #, 8 d #";
char * låten =
"Smurfs:d = 32, o = 5, b = 200:4 c# 6, 16 p, 4f #6, p, 16 c# 6, p, 8 d #6, p, 8b, p, 4 g #, 16 p, 4 c# 6, p, 16a #, p, 8f #, p, 8a #, p,
4 g #, 4p, g #, p, en #, p, b, p, c6, p, 4 c# 6, 16p, 4f #6, p, 16 c# 6, p, 8d #6, p, 8b, p, 4 g #, 16p, 4 c# 6, p, 16a #, p, 8b, p, 8f, p, 4f
#";
char * låten =
"MahnaMahna:d = 16, o = 6, b = 125:c#, c., b5, 8a #.5, 8f. 4 g #, #, g., 4 d #, 8 p, c#, c., b5, 8a #.5, 8f., g #., 8a #. 4 g, 8
Persson, c#, c., b5, 8a #.5, 8f. 4 g #, f, g., 8 d #., f, g., 8 d #., f, 8g, 8 d #., f, 8g, d #, 8c, en #5, 8 d #., 8 d #., 4 d #, 8 d #. ";
char * låten =
"LeisureSuit:d=16,o=6,b=56:f.5,f#.5,g.5,g#5,32a#5,f5,g#.5,a#.5,32f5,g#5,32a#5,g#5,8c#.,a#5,32c#,
A5, en #.5, c#., 32a5, en #5, 32 c#, d #, 8e, c#., f. f., f., f., f, 32e, d #, 8d, en #.5, e, 32f, e, 32f, c#, d #., c# ";
char * låten =
"MissionImp:d = 16, o = 6, b = 95:32d, 32d #, 32d, 32d #, 32d, 32d #, 32d, 32d #, 32d, 32d, 32d # 32e, 32f, 32f #, 32
g, g, 8p, g, 8p, a #, p, c7, p, g, 8p, g, 8p, f, p, f #, p, g, 8p, g, 8p, a #, p, c7, p, g, 8p, g, 8p, f, p, f #, p, en #, g, 2d, 32p #, g, 2 c#, 3
2 p, a #, g, 2 c, en #5, 8 c, 2 p, 32 p, en #5, g5, 2f #, 32 p, en #5, g5, 2f, 32 p, en #5, g5, 2e, d #, 8 d ";
#define IRsensorPin 6
#define IRledPin 5
#define D13ledPin 13
void IR38Write() {
för (int jag = 0; jag < = 384; i ++) {
digitalWrite (IRledPin, hög);
delayMicroseconds(13);
digitalWrite (IRledPin, låg);
delayMicroseconds(13);
}
}
void setup(void)
{
Serial.BEGIN(9600);
tone1.BEGIN(3);
pinMode (IRledPin, OUTPUT);
digitalWrite (IRledPin, låg);
pinMode (D13ledPin, OUTPUT); digitalWrite (D13ledPin, låg);
}
#define isdigit(n) (n > = "0" & & n < = '9')
void play_rtttl(char *p)
{
byte default_dur = 4;
byte default_oct = 6;
int bpm = 63.
int num;
lång wholenote;
lång varaktighet;
byte Obs;
byte skala.
medan (* p! = ':') p ++; Ignorera namn
p ++; hoppa över ":'
få standardvaraktighet
om (* p == hade ")
{
p ++; p ++; hoppa över "d ="
NUM = 0;
While(isdigit(*p))
{
NUM = (num * 10) + (* p ++ - '0');
}
om (num > 0) default_dur = num;
p ++; hoppa över kommatecken
}
Serial.Print ("ddur:"); Serial.println (default_dur, 10);
få standard octave
om (* p == ' o ')
{
p ++; p ++; hoppa över "o ="
NUM = * p ++ - '0';
om (num > = 3 & & num < = 7) default_oct = num;
p ++; hoppa över kommatecken
}
Serial.Print ("doct:"); Serial.println (default_oct, 10);
få BPM
om (* p == "b")
{
p ++; p ++; hoppa över "b ="
NUM = 0;
While(isdigit(*p))
{num = (num * 10) + (* p ++ - '0');
}
BPM = num;
p ++; hoppa över kolon
}
Serial.Print ("bpm:"); Serial.println (bpm, 10);
BPM uttrycker oftast antalet kvartal sedlar per minut
wholenote = (60 * 1000L / bpm) * 4; Detta är dags för hela Obs (i millisekunder)
Serial.Print ("wn:"); Serial.println (wholenote, 10);
nu börja Obs loop
While(*p)
{
först får notera varaktighet, om den är tillgänglig
NUM = 0;
While(isdigit(*p))
{
NUM = (num * 10) + (* p ++ - '0');
}
IF(NUM) längd = wholenote / num;
annat varaktighet = wholenote / default_dur; Vi kommer att behöva kontrollera om vi har en prickad not efter
nu får meddelandet
Obs = 0;
Switch(*p)
{
fallet "c":
Obs = 1;
bryta;
fall skulle ":
Obs = 3;
bryta;
fallet "e":
Obs = 5;
bryta;
fallet "f":
Obs = 6;
bryta;
fallet "g":
Obs = 8.
bryta;
fallet "a":
Obs = 10;
bryta;
fallet "b":
Obs = 12. bryta;
fallet "p":
standard:
Obs = 0;
}
p ++;
nu får valfri '#' skarp
om (* p == '#')
{
Obs ++;
p ++;
}
nu får valfri '. "prickad not
om (* p == ".")
{
Längd + = Varaktighet/2.
p ++;
}
IF(isdigit(*p))
{
skala = * p - '0';
p ++;
}
annat
{
skala = default_oct;
}
skala += OCTAVE_OFFSET;
om (* p == ",")
p ++; hoppa över kommatecken för nästa not (eller vi kan vara i slutet)
nu spela anteckningen
IF(Note)
{
Serial.Print ("spela:");
Serial.Print (skala, 10). Serial.Print(' ');
Serial.Print (Obs, 10); Serial.Print ("(");
Serial.Print (anteckningar [(scale-4) * 12 + anmärkning], 10);
Serial.Print(")");
Serial.println (längd, 10);
tone1.Play (anteckningar [(scale-4) * 12 + Anm]);
Delay(duration);
tone1.stop();
}
annat
{Serial.print ("pausa:");
Serial.println (längd, 10);
Delay(duration);
}
}
}
void loop(void)
{
IR38Write();
om (digitalRead(IRsensorPin)==HIGH) {
digitalWrite (D13ledPin, hög);
play_rtttl(Song);
Delay(1000);
}
annat {
digitalWrite (D13ledPin, låg);
}
Delay(100);
}
Video:
Gå till för mer kul projekt!