Tartalomjegyzék:

Az Arduino zongora: 3 lépés
Az Arduino zongora: 3 lépés

Videó: Az Arduino zongora: 3 lépés

Videó: Az Arduino zongora: 3 lépés
Videó: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, November
Anonim
Az Arduino zongora
Az Arduino zongora

Ez a "zongora" képes egy igazi zongora oktávját játszani. A gombok megnyomása a zongora gombjának megnyomását jelenti. A hangot egy piezo hangszórón keresztül továbbítják.

1. lépés: Anyagok

1. Arduino Uno

2. USB vezeték

3. 3 kenyeretábla

4. 8 Nyomógombok

5. 8 100 Ohm ellenállás

6. "Piezo" hangszóró

7. Sok férfi vezeték (kb. 20)

8. Forrasztópáka

2. lépés: Készítse el a telepítést

Készítse el a telepítést
Készítse el a telepítést

Építsen 8 gombot úgy, hogy mindegyik 8 különböző csapba kerüljön az Arduino -ban, mindegyikhez adjon ellenállást, és csatlakoztassa a földhöz (a férfi vezetékek segítségével).

Csatlakoztassa a hangszórót a kijelölt Arduino tűhöz, a másik oldalát pedig a földhöz. A vezetékeket a hangszóróhoz kell forrasztani, hogy ne essen le. Ügyeljen arra, hogy a hangszóróhoz forrasztott két vezeték ne érjen egymáshoz.

3. lépés: A kód felépítése

#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 NOT NOT NOTE_B1 62 #define NOT NOTE_C2 65 #define NOT NOT #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 NOT NOT NOTE_C4 262 #define NOT NOTE_CS4 277 #define NOT NOT #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 NOTINE 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOT NOT határozza meg a 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_FINADEE_E_77 4699 #define NOTE_DS8 4978

Ezek a "#defines" megmondják a beszélőnek, hogy melyik frekvencia milyen hangot ad

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 cállapot = 0; int d állapot = 0; int eállapot = 0; int fállapot = 0; int gállapot = 0; int aállapot = 0; int bállapot = 0; int c2állapot = 0;

Jelölje ki az Arduino csapokat a gombokhoz. "cState, dState, eState, stb;" olyan változók, amelyek mentik a gomb megnyomását. A 0 azt jelenti, hogy nincs megnyomva, az 1 azt jelenti, hogy le van nyomva.

void setup () {// tegye ide a beállítási kódot, hogy egyszer fusson: pinMode (10, OUTPUT); Sorozat.kezdet (9600); }

void loop () {// tegye ide a fő kódot az ismételt futtatáshoz: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fállapot = digitalRead (F); gállapot = digitalRead (G); aállapot = digitalRead (A); bÁllapot = digitalRead (B); c2állapot = digitalRead (C2);

A gomb állapota (ha le van nyomva vagy sem) a "cState, dState, eState, etc;"

A 0 azt jelenti, hogy nincs megnyomva, az 1 azt jelenti, hogy le van nyomva.

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);}}

Ha megnyom egy gombot, azt mondja a szervónak, hogy játssza le a bizonyos frekvenciát (megjegyzés). A funkció

{noTone (piezoPin);} közli velük, hogy ha nem nyomja meg a gombot, semmi sem játszható le. Ezért amikor megnyomja a gombot, a kijelölt hangot játssza le.

Ajánlott: