Stap 2: Piëzo - luidspreker component
Dit onderdeel kunnen we produceren onze kerstliedjes:).
Hoe het draad?
-Zoals u in het gegevensblad van de piëzo-luidspreker zien zult, het vereist 8mA, dus voor dit geval we een weerstand van 100Ohms (bruin-zwart-bruin gebruiken) ter vermindering van de stroom die via deze component stroomt.
-We gaan met de 8-pin van de Arduino te sturen de opgegeven frequentie dat ons toelaten zal om tonen te produceren.
-Volg het schema om verbinding maken met elke pin van de piëzo-luidspreker correct.
Code
Hier zal ik uitleggen welke delen van de code zal ons toelaten om deze tonen produceren.
Eerst importeren we het bestand "pitches.h". Het definieert de frequentie toegewezen met een naam die vertegenwoordigen onze notities.
BV NOTE_D3 = 147
#include "pitches.h"
Deze constanten vertegenwoordigen het aantal merkt op dat onze nummers hebben. Aangezien we twee nummers hebben, heeft men 24 notities en anderzijds hebben 14
#define SONG1_SIZE 24
#define SONG2_SIZE 14
Deze array is gewoon een array van frequentie die werd gegeven door het bestand pitches.h
noten in de melodie 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
};
noten in de melodie 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
};
De duur van elke noot is opgegeven in de volgende arrays voor elk nummer (1 -> 1 sec, 4 -> golvende... enz)
Opmerking de duur van de melodie 1:4 = kwartnoot, 8 = achtste noot, enz.:
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};
/ / Opmerking duur van melodie 2:4 = kwartnoot, 8 = achtste noot, etc.:
int noteDurations2 [] {} =
2, 2.5, 8, 1.5, 4, 2, 2, 1.5,
4 1.8, 4, 1.8, 4, 1};
Binnenkant van de methode van de loop, vinden we een lus-voor. Dit gaat door elke noot van onze melody1 of melody2
voor (int thisNote = 0; thisNote < songSizeS; thisNote ++) {}
.....
// voor het berekenen van de duur van de opmerking, neem één seconde
gedeeld door het type opmerking.
bijvoorbeeld kwartnoot = 1000 / 4, achtste noot = 1000/8, enz.
Iknt noteDuration = 1000/noteDurationS [thisNote];
Tone-functie zal produceren de Toon en stuur het via pin 8 met de duurToon (pin, frequentie, duur)
Toon (8, melodyS[thisNote],noteDuration);
....
/ / om te onderscheiden van de notities, stel een minimuminterval tussen hen.
de nota's duur zullen handel door de tempo-variabele die variabele is afhankelijk van de potentiometer (stap 5)
int pauseBetweenNotes = noteDuration * tempo;
delay(pauseBetweenNotes);
/ / stop het afspelen van de Toon:
noTone(8);
.....
}