Ce projet permet de créer une entrée remarquée. Il détecte vous marcher dans et joue une chanson d’entrée. Marcher dans la pièce avec votre chanson préférée de starwars se joue pour vous. Vous devrez également installer la bibliothèque de ton trouvée à :
http://Rogue-code.googlecode.com/files/Arduino-Library-Tone.zip
D’aide pour installer les bibliothèques, aller à :
http://code.google.com/p/Rogue-code/wiki/InstallingArduinoLibraries
Composants nécessaires :
1 x haut-parleur
1 x Arduino
1 x pain Conseil
1 x récepteur IR
1 x 470 Ohm résistance
1 x 220 ou résistance de 100 ohms
Fils
Composants peuvent être trouvés à http://egrobotics.com/store/
Ce projet et carte Arduino et IR Add-on Kit
www.EGRobotics.com
Le Code :
Toutes les chansons sont commentés dehors avant de télécharger choisir la chanson que vous souhaitez en supprimant
le "/ /" devant lui. Trouver plus de tons à http://code.google.com/p/roguecode/wiki/ToneLibraryDocumentation
#include
Ton tone1 ;
#define OCTAVE_OFFSET 0
note d’int [] = {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 * chanson = "The
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 * chanson =
"Indiana: d = 4, o = 5, b = 250:e, 8p, 8f, 8 g, 8p, 1C 6, p. 8, d, 8p, 8e, 1f, p., g, p 8, 8 a, 8 b, 8p, 1f6, p, a, 8 b, 2 c 6, 2 d 6, 8p, 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 * chanson =
« TakeOnMe:d = 4, o = 4, b = 160:8f #5, 8f #5, 8f #5, 8d, 5, 8 p. 8 b, 8, 8e5, 8p, 8e5, 8p, 8e5, 8 g #5, 8 g #5, 8 a 5, 8b5, 8 a
5, 8 a 5, 8 a 5, 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, 8 b, 8p 8e5, 8
p, 8e5, 8p, 8e5, 8g #5, 8g #5, 8 a 5, 8b5, 8 a 5, 8 a 5, 8 a 5, 8e5, 8p, 8D 5, 8p, 8f #5, 8p, 8f #5, 8p, 8f #5, 8e5, 8e5 ";
char * chanson =
"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 * chanson =
« Muppets:d = 4, o = 5, b = 250:c6, c6, a, b, 8 a, b, g, p, c6, c6, a, 8 b, 8 a, 8 p, g., p, e, e, g, f, 8e, f, 8c 6, 8c, 8d, e, 8e, 8F, 8p, 8
e, g, 2p, c6, c6, a, b, 8 a, b, g, p, c6, c6, a, 8 b, a, g., p, e, e, g, f, 8e, f, 8c 6, 8c, 8d, e, 8e, d, 8d, c ";
char * chanson =
« Xfiles:d = 4, o = 5, b = 125:e, b, a, b, d6, 2 b., 1 p, e, b, a, b, e6, 2 b, 1 p, g6, f #6, e6, d6, e6, 2 b, 1 p, g6, f #6, e6, d6, f #6,2
b., 1 p, e, b, a, b, d6, 2 b., 1 p, e, b, a, b, e6, 2 b., 1 p, e6, 2 b. ";
char * chanson =
"Looney: d = 4, o = 5, b = 140:32 p, c6, 8f6, 8e6, 8D 6, 8c 6, a., 8c 6, 8f6, 8e6, 8J 6, 8D #6,e.6,8e6,8e6,8c6,8d6,8c6,
8e6, 8c 6, 8D 6, 8 a, 8c, 6, 8 g, 8 a #, 8 a, 8f ";
char * chanson =
« 20thCenFox:d = 16, o = 5, b = 140:b, 8 p, b, b, 2 b, p, c6, 32P, b, 32P, c6, 32P, b, 32P, c6, 32P, b, 8p, 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, 2 b, 4P, 8F, 8 g #, 8 b, 1c n ° 6, 8f #, 8 a, 8C n ° 6, 1e6, 8 a, 8c
#6, 8e6, 1e6, 8 b, 8 g #, 8 a, 2 b ";
char * chanson =
"Bond: d = 4, o = 5, b = 80:32 p, 16 ch. #6, 32d #6, 32d #6, 16D #6, 8D #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 * chanson =
« 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, 4 b, a, b, p, a, p, b, p, 2 a., 4p, a, b, a, 4 b, a, b, p, 2 a., a, 4f #, a,b,p,d6,p,4e.6, d
6, b, p, a, p, 2 b ";
char * chanson =
« StarWars:d = 4, o = 5, b = 45: 32 p 32f #, 32f #, 32f #, 8 b., 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 * chanson =
« GoodBad:d = 4, o = 5, b = 56:32 p, 32 a #, 32d #6, 32 a #, 32d #6, 8 a #., 16f #., 16 g #., d #, # 32 a, 32d #6, 32 a #, 32d #6,
8 a #., 16f #., 16 g #., c# 6, 32 a #, 32d #6, 32 a #, 32d #6, 8 a #., 16f #., 32f., 32d #., c#, 32 a #, 32d #6, 32 a #, 32d #6, # 8 a.,
16 g #., d #";
char * chanson =
« 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 * chanson = "ATeam:d = 8, o = 5, b = 125:4 d #6, un #, 2d #6, 16p, g #, # 4 a, 4 d #., p, g 16, 16 a #, d #6, un #, f6, 2d #6, 16p, c#.6, 16 c 6, 16 a #
, g #., 2 a #";
char * chanson =
« Flinstones:d = 4, o = 5, b = 40: 32 p, 16f6, # 16 a, 16 a #6, 32 g 6, 16f6, 16 a #., 16f6, 32d #6, 32 d 6, 32 d 6, 32d #6, 32f
6, # 16 a, 16C 6, d6, 16f6, 16 a #., 16 a #6, 32g 6, 16f6, 16 a #., 32f6, 32f6, 32d #6, 32d 6, 32d 6, 32d #6, 32f6, 16 a #, 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, 16 a #., 16 a #6, 32g 6, 16f6, 16 a #., 16f6, 32d #6, 32d 6, 32d 6, 32d #6, 32f6, 16 a #, 16c.6,32d6, 3
2D#6,32f6,16a#,16C.6,32d6,32d#6,32f6,16A#6,16c7,8A#.6 ";
char * chanson =
« Jeopardy: d = 4, o = 6, b = 125:c, f, c, f5, c, f, c 2, c, f, c, f, a., 8 g, 8f, 8e, 8d, 8 c#, c, f, c, f5, c, f, c 2, f., 8d, c, #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 * chanson =
« Gadget: d = 16, o = 5, b = 50:32d #, 32f, 32f #, 32 g #, un #, f #, a, f, g #, f #, # 32d, 32f, 32f #, 32 g #, un #, d #6, 4D 6, 32d #, 3
2F, 32f # 32 g #, #, f #, a, f, g #, f #, 8D #";
char * chanson =
« Smurfs:d = 32, o = 5, b = 200:4 c# 6, 16p, 4f #6, p. 16 c# 6, 8D #6, p, 8 b, p, 4 g #, 16p, 4C #6, p, 16 a #, p, 8f #, p, 8 a #, p,
4 g #, 4P, g #, p, a #, p, b, p. c6, 4C #6, 16p, 4f #6, p, 16 c# 6, p, 8D #6, p, 8 b, p, 4 g #, 16p, 4C #6, p, 16 a #, p, 8 b, p, 8f, p, 4f
#";
char * chanson =
« MahnaMahna:d = 16, o = 6, b = 8 a, b5, c., 125:c# #.5, 8f., 4 g #, un #, g., d #, 8 4P, c#, c, b5, 8 a #.5, 8f., g #., 8 a #., 4 g, 8
p, c#, c, b5, 8 a #.5, 8f., 4 g #, f, g., 8D #., f, g., 8D #., f, g 8, 8D #., f, 8g, d #, 8c, #5, 8D #., 8D #., 4 d #, 8D #. ";
char * chanson =
"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, un.5 #, c#., 32a5, #5, 32 c#, d #, 8e, c#., f., f., f., f., f, 32e, d #, 8d, un.5 #, e, 32f, e, 32f, c#, d #., c# ";
char * chanson =
« 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, a #, g, 2d, 32P, un #, g, c 2 #, 3
2p, un #, g, 2 c, 5 #, 8 c, 2 p, 32P, un n ° 5, g5, 2f #, 32P, un n ° 5, g5, 2f, 32P, un #5, g5, 2e, d #, 8j ";
#define IRsensorPin 6
#define IRledPin 5
#define D13ledPin 13
void IR38Write() {}
pour (int i = 0; i < = 384; i ++) {}
digitalWrite (IRledPin, élevé) ;
delayMicroseconds(13) ;
digitalWrite (IRledPin, basse) ;
delayMicroseconds(13) ;
}
}
Sub setup(void)
{
Serial.Begin(9600) ;
tone1.Begin(3) ;
pinMode (IRledPin, sortie) ;
digitalWrite (IRledPin, basse) ;
pinMode (D13ledPin, sortie) ; digitalWrite (D13ledPin, basse) ;
}
#define isdigit(n) (n > = « 0 » & & n < = « 9 »)
Sub play_rtttl(char *p)
{
default_dur octets = 4 ;
default_oct octets = 6 ;
int bpm = 63 ;
int num ;
wholenote long ;
longue durée ;
note de l’octet ;
échelle d’octets ;
tandis que (* p! = ':') p ++ ; ignorer le nom
p ++ ; sauter ':'
obtenir la durée par défaut
Si (* p == a ')
{
p ++ ; p ++ ; sauter "d ="
num = 0 ;
while(IsDigit(*p))
{
num = (num * 10) + (* p ++ - « 0 ») ;
}
Si default_dur (num > 0) = num ;
p ++ ; Passez par des virgules
}
Serial.Print ("ddur:") ; Serial.println (default_dur, 10) ;
obtenir l’octave par défaut
Si (* p == ' o ')
{
p ++ ; p ++ ; sauter "o ="
num = * p ++ - « 0 » ;
Si (num > = 3 & & num < = 7) default_oct = num ;
p ++ ; Passez par des virgules
}
Serial.Print ("doct:") ; Serial.println (default_oct, 10) ;
obtenir les BPM
Si (* p == « b »)
{
p ++ ; p ++ ; sauter "b ="
num = 0 ;
while(IsDigit(*p))
{num = (num * 10) + (* p ++ - « 0 ») ;
}
BPM = num ;
p ++ ; sauter du côlon
}
Serial.Print ("bpm:") ; Serial.println (bpm, 10) ;
BPM exprime généralement le nombre de noires par minute
WholeNote = (60 * 1000L / bpm) * 4 ; C’est le moment pour la note entière (en millisecondes)
Serial.Print (« wn: ") ; Serial.println (wholenote, 10) ;
maintenant commencer à boucle Remarque
while(*p)
{
tout d’abord, obtenir durée de note, si disponible
num = 0 ;
while(IsDigit(*p))
{
num = (num * 10) + (* p ++ - « 0 ») ;
}
if(num) durée = wholenote / num ;
d’autre durée = wholenote / default_dur ; Nous devons vérifier si nous sommes une note pointée après
maintenant obtenir la note
Note = 0 ;
Switch(*p)
{
case « c » :
Note = 1 ;
rupture ;
affaire aurait ":
Note = 3 ;
rupture ;
Case « e » :
Note = 5 ;
rupture ;
case « f » :
Remarque = 6 ;
rupture ;
case « g » :
Remarque = 8 ;
rupture ;
case « a » :
Remarque = 10 ;
rupture ;
case « b » :
Remarque = 12 ; rupture ;
case « p » :
par défaut :
Note = 0 ;
}
p ++ ;
maintenant, obtenez facultatif « # » sharp
Si (* p == « # »)
{
Remarque ++ ;
p ++ ;
}
maintenant, obtenez facultatif '.' note pointée
Si (* p == '.')
{
+= Durée Durée/2 ;
p ++ ;
}
if(IsDigit(*p))
{
Scale = * p - « 0 » ;
p ++ ;
}
d’autre
{
Scale = default_oct ;
}
échelle += OCTAVE_OFFSET ;
Si (* p == «, »)
p ++ ; Passez par des virgules pour la note suivante (ou que nous soyons à la fin)
Jouez maintenant la note
if(note)
{
Serial.Print ("lecture:") ;
Serial.Print (échelle, 10) ; Serial.Print(' ') ;
Serial.Print (note, 10) ; Serial.Print ("(") ;
Serial.Print (notes [(scale-4) * 12 + note], 10) ;
Serial.Print(")") ;
Serial.println (durée, 10) ;
tone1.Play (notes [(scale-4) * 12 + note]) ;
Delay(Duration) ;
tone1.Stop() ;
}
d’autre
{Serial.print ("faire une pause:") ;
Serial.println (durée, 10) ;
Delay(Duration) ;
}
}
}
Sub loop(void)
{
IR38Write() ;
Si (digitalRead(IRsensorPin)==HIGH) {}
digitalWrite (D13ledPin, élevé) ;
play_rtttl(Song) ;
Delay(1000) ;
}
else {}
digitalWrite (D13ledPin, basse) ;
}
Delay(100) ;
}
La vidéo :
Aller à pour plus de plaisir projets !