„Arduino“fortepijonas: 3 žingsniai
„Arduino“fortepijonas: 3 žingsniai
Anonim
Arduino fortepijonas
Arduino fortepijonas

Šis „fortepijonas“gali groti tikro fortepijono oktava. Mygtuko paspaudimas reiškia klavišo klavišo paspaudimą. Garsas bus perduodamas per pjezo garsiakalbį.

1 žingsnis: medžiagos

1. Arduino Uno

2. USB laidas

3. 3 duonos lentos

4. 8 Mygtukai

5. 8 100 omų rezistoriai

6. „Pjezo“garsiakalbis

7. Daugelis vyrų laidų (apie 20)

8. Lituoklis

2 veiksmas: sukurkite sąranką

Sukurkite sąranką
Sukurkite sąranką

Sukurkite 8 mygtukus, kurių kiekvienas yra į 8 skirtingus „Arduino“kaiščius, pridedant prie kiekvieno rezistorių ir prijungiant juos prie žemės (naudojant „Male“laidus).

Prijunkite garsiakalbį prie tam skirto „Arduino“kaiščio, o kitą - prie žemės. Turėsite lituoti laidus prie garsiakalbio, kad jis nenukristų. Įsitikinkite, kad du prie garsiakalbio prilituoti laidai neliečia vienas kito.

3 žingsnis: kodo kūrimas

#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTA NOTE_B1 62 #apibrėžti NOTE_C2 65 #apibrėžti NOTE_CS2 69 #apibrėžti NOTE_D2 73 #nustatyti #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 247 NOTE_C4 262 #define NOT NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_4454 #d efine NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define #define 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 187 #186 #6 apibrėžti NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_BE 4699

Šie „#defines“turi pasakyti garsiakalbiui, koks dažnis daro kokią natą

const int C = 2; const int D = 3; const int E = 4; const int F = 5; const int G = 6; const int A = 7; const int B = 8; const int C2 = 9; const int piezoPin = 10; int cState = 0; int dState = 0; int eState = 0; int fState = 0; int gState = 0; int aState = 0; int bState = 0; int c2State = 0;

Prie mygtukų pažymėkite „Arduino“kaiščius. "cState, dState, eState ir tt;" yra kintamieji, kurie išsaugo, ar paspaudžiamas mygtukas. A 0 reiškia, kad jis nespaustas, o 1 reiškia, kad jis yra paspaustas.

void setup () {// įdėkite čia savo sąrankos kodą, kad paleistumėte vieną kartą: pinMode (10, OUTPUT); Serial.begin (9600); }

void loop () {// čia įdėkite savo pagrindinį kodą, kad jis būtų paleistas pakartotinai: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aStatus = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

Mygtuko būsena (jei jis paspaustas ar ne) išsaugomas „cState, dState, eState ir tt“;

A 0 reiškia, kad jis nespaustas, o 1 reiškia, kad jis yra paspaustas.

if (cState == 1) {tone (piezoPin, 131); } else {noTone (piezoPin);} if (dState == 1) {tone (piezoPin, 147); } else {noTone (piezoPin);} if (eState == 1) {tone (piezoPin, 165); } else {noTone (piezoPin);} if (fState == 1) {tone (piezoPin, 175); } else {noTone (piezoPin);} if (gState == 1) {tone (piezoPin, 196); } else {noTone (piezoPin);} if (aState == 1) {tone (piezoPin, 220); } else {noTone (piezoPin);} if (bState == 1) {tone (piezoPin, 247); } else {noTone (piezoPin);} if (c2State == 1) {tone (piezoPin, 262); } else {noTone (piezoPin);}}

Jei paspaudžiamas mygtukas, jis nurodo servo paleisti tikrąjį dažnį (pastaba). Funkcija

{noTone (piezoPin);} jiems sako, kad jei mygtukas nepaspaudžiamas, nieko negalima paleisti. Todėl, kai tik paspaudžiamas mygtukas, jis gros jam skirtą natą.