Progetto 8 Musicista
1. Descrizione
In questo progetto, utilizzeremo un altoparlante con amplificatore di potenza per riprodurre musica. Questo altoparlante non solo può suonare semplici canzoni, ma anche eseguire ciò che desideri. Pertanto, puoi programmare altri codici interessanti nel progetto per ottenere risultati di apprendimento splendidi.
2. Principio di funzionamento

Il segnale elettrico viene immesso dal pin 1 di RP1 (regola l’intensità del segnale, che corrisponde anche al volume del suono).
Dopo l’accoppiamento in C4 e il passaggio attraverso R5, il segnale raggiunge il pin IN- del 8002B, dove viene amplificato operazionalmente e inviato all’altoparlante BEE1.
Tabella di confronto delle frequenze in C
Nota |
Frequenza(Hz) |
Nota |
Frequenza(Hz) |
Nota |
Frequenza(Hz) |
|---|---|---|---|---|---|
Bemolle 1 Do |
262 |
Naturale 1 Do |
523 |
Diesis 1 Do |
1047 |
Bemolle 2 Re |
294 |
Naturale 2 Re |
587 |
Diesis 2 Re |
1175 |
Bemolle 3 Mi |
330 |
Naturale 3 Mi |
659 |
Diesis 3 Mi |
1319 |
Bemolle 4 Fa |
349 |
Naturale 4 Fa |
698 |
Diesis 4 Fa |
1397 |
Bemolle 5 Sol |
392 |
Naturale 5 Sol |
784 |
Diesis 5 Sol |
1568 |
Bemolle 6 La |
440 |
Naturale 6 La |
880 |
Diesis 6 La |
1760 |
Bemolle 7 Si |
494 |
Naturale 7 Si |
988 |
Diesis 7 Si |
1967 |
3. Schema di collegamento

4. Codice di prova
/*
keyestudio ESP32 Inventor Learning Kit
Project 8.1 Music Performer
http://www.keyestudio.com
*/
int beeppin = 5; //Define the speaker pin to IO5
void setup()
{
pinMode(beeppin, OUTPUT);//Define the IO5 port to output mode
}
void loop()
{
tone(beeppin, 262);//Flat DO plays 500ms
delay(500);
tone(beeppin, 294);//Flat Re plays 500ms
delay(500);
tone(beeppin, 330);//Flat Mi plays 500ms
delay(500);
tone(beeppin, 349);//Flat Fa plays 500ms
delay(500);
tone(beeppin, 392);//Flat So plays 500ms
delay(500);
tone(beeppin, 440);//Flat La plays 500ms
delay(500);
tone(beeppin, 494);//Flat Si plays 500ms
delay(500);
noTone(beeppin);//Stop for 1s
delay(1000);
}
5. Risultato del test
Dopo aver caricato il codice e acceso l’alimentazione, l’amplificatore riproduce ciclicamente toni musicali con frequenze corrispondenti: DO, Re, Mi, Fa, Sol, La, Si.
Regolazione del volume dell’amplificatore di potenza:
Accanto all’altoparlante c’è un potenziometro. Possiamo regolare il volume dell’altoparlante ruotandolo. (Nota: Si prega di usare una forza adeguata per regolarlo, per non danneggiare il potenziometro)

6. Espansione della conoscenza
Suoniamo una canzone di compleanno. I collegamenti rimangono invariati.
Notazione musicale numerica:

Diagramma di confronto tra Bemolle, Naturale e Diesis

/*
keyestudio ESP32 Inventor Learning Kit
Project 8.2 Music Performer
http://www.keyestudio.com
*/
int beeppin = 5; //Define the speaker pin to IO5
// do、re、mi、fa、so、la、si
int doremi[] = {262, 294, 330, 370, 392, 440, 494, //Falt 0-6
523, 587, 659, 698, 784, 880, 988, //Natural 7-13
1047,1175,1319,1397,1568,1760,1967}; //Sharp 14-20
int happybirthday[] = {5,5,6,5,8,7,5,5,6,5,9,8,5,5,12,10,8,7,6,11,11,10,8,9,8}; //Find the number in arrey doremi[] according to the numbered musical notation
int meter[] = {1,1,2,2,2,4, 1,1,2,2,2,4, 1,1,2,2,2,2,2, 1,1,2,2,2,4}; // Beats
void setup()
{
pinMode(beeppin, OUTPUT); //Set IO5 pin to output mode
}
void loop()
{
for( int i = 0 ; i <= 24 ;i++)
{ //i<=24, because there are only 24 tones in this song
//Use tone()function to generate a waveform in "frequency"
tone(beeppin, doremi[happybirthday[i] - 1]);
delay(meter[i] * 200); //Wait for 1000ms
noTone(beeppin);//Stop singing
}
}