Christmas Song spelare (2 / 6 steg)
Steg 2: Piezo - högtalare komponent
Denna komponent gör det möjligt att producera våra julsånger:).
Hur tråd det?
-Som du ser i databladet för Piezo speaker, det kräver 8mA, så i detta fall, kommer vi att använda ett motstånd av 100Ohms (brun-svart-brun) för att minska den ström som flyter genom denna komponent.
-Vi kommer att använda stift 8 av Arduino för att skicka den angivna frekvensen som gör det möjligt att producera toner.
-Följ schematiskt för att ansluta varje stift Piezo speaker.
Koden
Här kommer jag att förklara vilka delar av koden gör det möjligt att producera dessa toner.
Vi importera filen "pitches.h". Den definierar frekvensen mappas till ett namn som representerar våra anteckningar.
T.ex. NOTE_D3 = 147
#include "pitches.h"
Detta till konstanter representerar antalet noterar att våra låtar. Eftersom vi har två låtar, har en 24 anteckningar och den andra har 14
#define SONG1_SIZE 24
#define SONG2_SIZE 14
Denna samling är bara en matris för frekvens som gavs av filen pitches.h
anteckningar i melodin 1:
int melody1 [] = {
NOTE_D3, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_D3,
NOTE_D3, NOTE_D3, NOTE_D3, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_E3, 0,
NOTE_E3, NOTE_C4, NOTE_B3, NOTE_A3, NOTE_FS3, 0,
NOTE_D4, NOTE_D4, NOTE_C4, NOTE_A3, NOTE_B3
};
anteckningar i melodin 2:
int melody2 [] = {NOTE_F4, NOTE_E4, NOTE_D4, NOTE_C3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_F3,
NOTE_C4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_E4, NOTE_F4
};
Varaktigheten för varje not anges i de följande matriserna för varje låt (1 -> 1 SEK, 4 > åttondel... etc)
Observera varaktigheter melodi 1:4 = fjärdedelsnot, 8 = åttondelen noterar, etc.:
int noteDurations1 [] = {
4, 4, 4, 4, 2.5,
8, 8, 4, 4, 4, 4, 2.5, 2,
4, 4, 4, 4, 2.5, 2,
4, 4, 4, 4, 1};
/ / Obs varaktigheter melodi 2:4 = fjärdedelsnot, 8 = åttondelen noterar, etc.:
int noteDurations2 [] = {
2, 2,5, 8, 1,5, 4, 2, 2, 1.5,
4, 1,8, 4, 1,8, 4, 1};
I den loop() metoden, vi hittar en loop-för. Detta kommer att gå igenom varje del av vår melody1 eller melody2
för (int thisNote = 0; thisNote < songSizeS; thisNote ++) {
.....
// för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
Jagnt noteDuration = 1000/noteDurationS [thisNote];
testton-funktionen kommer att producera tonen och skicka det tråg stift 8 med dess varaktighettonar (pin, frekvens, varaktighet)
tonen (8, melodyS[thisNote],noteDuration);
....
/ / för att skilja anteckningarna, som en minsta tid mellan dem.
tonens längd kommer att Händel av variabeln tempo som varierar beroende på potentiometern (steg 5)
int pauseBetweenNotes = noteDuration * tempo;
Delay(pauseBetweenNotes);
/ / sluta tonen:
noTone(8);
.....
}