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
#define NTD0 -1                     // Basse  1#   2#   3#   4#   5#   6#   7# 
2
#define NTD1 294                   // A    221  248  278  294  330  371  416 
3
#define NTD2 330                   // B    248  278  294  330  371  416  467
4
#define NTD3 350                   // C    131  147  165  175  196  221  248
5
#define NTD4 393                   // D    147  165  175  196  221  248  278
6
#define NTD5 441                   // E    165  175  196  221  248  278  312
7
#define NTD6 495                   // F    175  196  221  234  262  294  330
8
#define NTD7 556                   // G    196  221  234  262  294  330  371
9
                                   
10
#define NTDL1 147                  // Alto  1    2    3    4    5    6    7
11
#define NTDL2 165                  // A    441  495  556  589  661  742  833
12
#define NTDL3 175                  // B    495  556  624  661  742  833  935
13
#define NTDL4 196                  // C    262  294  330  350  393  441  495
14
#define NTDL5 221                  // D    294  330  350  393  441  495  556
15
#define NTDL6 248                  // E    330  350  393  441  495  556  624
16
#define NTDL7 278                  // F    350  393  441  495  556  624  661  
17
                                   // G    393  441  495  556  624  661  742
18
#define NTDH1 589
19
#define NTDH2 661                  // Aigu  1#   2#   3#   4#   5#   6#   7#  
20
#define NTDH3 700                  //    A       882  990  1112 1178 1322 1484 1665   
21
#define NTDH4 786                  //    B       990  1112 1178 1322 1484 1665 1869 
22
#define NTDH5 882                  //    C       525  589  661  700  786  882  990
23
#define NTDH6 990                  //    D       589  661  700  786  882  990  1112
24
#define NTDH7 112                  //    E       661  700  786  882  990  1112 1248
25
				                           //    F       700  786  882  935  1049 1178 1322
26
#define WHOLE 1                    //    G       786  882  990  1049 1178 1322 1484
27
#define HALF 0.5
28
#define QUARTER 0.25
29
#define EIGHTH 0.25
30
#define SIXTEENTH 0.625
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 :

Question 1 : Réalisez le montage, téléversez le code et constatez le résultat.

Question 2 : Accélérez la vitesse à laquelle est jouée la mélodie et modifiez quelques notes et constatez le fonctionnement.