Montage et pilotage d'un buzzer passif
Le programme ci-dessous permet de contrôler un buzzer passif pour lui faire jouer une mélodie :
1
// Basse 1# 2# 3# 4# 5# 6# 7#
2
// A 221 248 278 294 330 371 416
3
// B 248 278 294 330 371 416 467
4
// C 131 147 165 175 196 221 248
5
// D 147 165 175 196 221 248 278
6
// E 165 175 196 221 248 278 312
7
// F 175 196 221 234 262 294 330
8
// G 196 221 234 262 294 330 371
9
10
// Alto 1 2 3 4 5 6 7
11
// A 441 495 556 589 661 742 833
12
// B 495 556 624 661 742 833 935
13
// C 262 294 330 350 393 441 495
14
// D 294 330 350 393 441 495 556
15
// E 330 350 393 441 495 556 624
16
// F 350 393 441 495 556 624 661
17
// G 393 441 495 556 624 661 74218
19
// Aigu 1# 2# 3# 4# 5# 6# 7#
20
// A 882 990 1112 1178 1322 1484 1665
21
// B 990 1112 1178 1322 1484 1665 1869
22
// C 525 589 661 700 786 882 990
23
// D 589 661 700 786 882 990 1112
24
// E 661 700 786 882 990 1112 1248
25
// F 700 786 882 935 1049 1178 132226
// G 786 882 990 1049 1178 1322 1484
27
28
29
30
31
int tune[]=
32
{33
NTD3,NTD3,NTD4,NTD5,
34
NTD5,NTD4,NTD3,NTD2,
35
NTD1,NTD1,NTD2,NTD3,
36
NTD3,NTD2,NTD2,
37
NTD3,NTD3,NTD4,NTD5,
38
NTD5,NTD4,NTD3,NTD2,
39
NTD1,NTD1,NTD2,NTD3,
40
NTD2,NTD1,NTD1,
41
NTD2,NTD2,NTD3,NTD1,
42
NTD2,NTD3,NTD4,NTD3,NTD1,
43
NTD2,NTD3,NTD4,NTD3,NTD2,
44
NTD1,NTD2,NTDL5,NTD0,
45
NTD3,NTD3,NTD4,NTD5,
46
NTD5,NTD4,NTD3,NTD4,NTD2,
47
NTD1,NTD1,NTD2,NTD3,
48
NTD2,NTD1,NTD1
49
};
50
float durt[]= // Durée de chaque note
51
{52
1,1,1,1,
53
1,1,1,1,
54
1,1,1,1,
55
1+0.5,0.5,1+1,
56
1,1,1,1,
57
1,1,1,1,
58
1,1,1,1,
59
1+0.5,0.5,1+1,
60
1,1,1,1,
61
1,0.5,0.5,1,1,
62
1,0.5,0.5,1,1,
63
1,1,1,1,
64
1,1,1,1,
65
1,1,1,0.5,0.5,
66
1,1,1,1,
67
1+0.5,0.5,1+1,
68
};
69
int length;
70
int tonepin=6; // Connecteur du buzzer
71
int ledp=3;
72
void setup()
73
{74
pinMode(tonepin,OUTPUT);
75
pinMode(ledp,OUTPUT);
76
length=sizeof(tune)/sizeof(tune[0]); // Calcule le nombre total de notes
77
}
78
void loop()
79
{ 80
for(int x=0;x<length;x++)
81
{82
tone(tonepin,tune[x]); // Active le buzzer
83
digitalWrite(ledp, HIGH);
84
delay(400*durt[x]);
85
digitalWrite(ledp, LOW);
86
delay(100*durt[x]);
87
noTone(tonepin); // Eteint le buzzer
88
}
89
delay(2000);
90
}
Le montage à réaliser est le suivant :