Talaan ng mga Nilalaman:

Ang Arduino Piano: 3 Hakbang
Ang Arduino Piano: 3 Hakbang

Video: Ang Arduino Piano: 3 Hakbang

Video: Ang Arduino Piano: 3 Hakbang
Video: 3 Magnificent Electronic Projects Made with 433 Mhz Transmitter Module 2024, Nobyembre
Anonim
Ang Arduino Piano
Ang Arduino Piano

Ang "Piano" na ito ay nakakapagpatugtog ng isang oktaba ng isang totoong piano. Ang pagpindot ng mga pindutan ay kumakatawan sa pagpindot ng isang susi sa piano. Ang tunog ay maipapasa sa pamamagitan ng isang Piezo speaker.

Hakbang 1: Mga Kagamitan

1. Arduino Uno

2. USB wire

3. 3 mga breadboard

4. 8 Mga Pushbutton

5. 8 100 Ohm resistors

6. Tagapagsalita na "Piezo"

7. Maraming Mga Lalaki na Wires (Mga 20)

8. Bakal na Bakal

Hakbang 2: Buuin ang Pag-setup

Buuin ang Pag-setup
Buuin ang Pag-setup

Bumuo ng 8 mga pindutan sa bawat pagpunta sa 8 magkakaibang mga pin sa Arduino, pagdaragdag ng isang risistor sa bawat isa, at ikonekta ang mga ito sa lupa (gamit ang mga Male wires).

Ikonekta ang nagsasalita sa itinalagang Arduino pin, at sa kabilang panig sa lupa. Kailangan mong i-solder ang mga wire sa speaker upang hindi ito malagas. Siguraduhin na ang dalawang wires na na-solder sa nagsasalita ay hindi magkadikit.

Hakbang 3: Pagbubuo ng Code

#define TANDAAN_B0 31 # tukuyin ang 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 NOTA #Teace #Teace #Teace #Teace #Teace #Teace #Teace #Teace #Teace #Teace #TeaceTeace NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NoteEGG 98 #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_GS3Et2 #define #define #define #define #define NOTE_C4 262 #define 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_GS4Define_Define_Define_Define_Ef142f52f52f2f2f2f2f1f2fw5fpwpwpw58w58w58w58w1fw58w1f1fw1fw1fw8w1fw8w1fw8w1fw8w1fw8w1fw1w1fw1w1fw1w1fw1w1fw1w1fw1w1fw1w1fw1w1f1w1w1fw1w1fw51w1fwwfw1fexw1fw1fexf> #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 #Adefine_A51Ef2_105Ef2_105Ef2_105Erf_E51EdEine_A52Ef2102Ef2_E52Ef2102Ef2_1052EW2E10210EF2102EF2102EF2102EF2102EF2102EF2102EF2102EF2102EF2102EF2102EF2102EF2102EF2102_E210_E210_E210_E210_EF2102EF210_E2_E210_E210_E2102_E210_E210_E2102_E52 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 #Teine #Acreine_Teace # 212Creine tukuyin NOTE_D7 2349 # tukuyin NOTE_DS7 2489 # tukuyin NOTE_E7 2637 # tukuyin NOTE_F7 2794 # tukuyin NOTE_FS7 2960 # tukuyin NOTE_G7 3136 # tukuyin NOTE_GS7 3322 # tukuyin NOTE_A7 3520 # tukuyin NOTE_AS7 3729 # tukuyin NOTE_B7 3951 # tukuyin NOTE_C8 4186 # tukuyin NOTE_CS8 4435 # tukuyin NOTE_D8 4699 # tukuyin TANDAAN_DS8 4978

Ang "#defines" na ito ay sasabihin sa tagapagsalita kung aling dalas ang gumagawa ng aling tala

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;

Italaga ang mga pin ng Arduino sa mga pindutan. "cState, dState, eState, atbp;" ay mga variable na makatipid kung pinindot ang pindutan. Ang isang 0 ay nangangahulugang hindi ito pinindot, ang isang 1 ay nangangahulugang pinindot ito.

void setup () {// ilagay ang iyong setup code dito, upang patakbuhin nang isang beses: pinMode (10, OUTPUT); Serial.begin (9600); }

void loop () {// ilagay ang iyong pangunahing code dito, upang tumakbo nang paulit-ulit: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

Ang estado ng pindutan (kung pinindot o hindi) ay nai-save sa "cState, dState, eState, atbp;"

Ang isang 0 ay nangangahulugang hindi ito pinindot, ang isang 1 ay nangangahulugang pinindot ito.

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

Kung ang isang pindutan ay pinindot, sasabihin nito sa servo na i-play ang dalas ng certiain (tala). Ang pagpapaandar

Sinasabi sa kanila ng {noTone (piezoPin);} na kung ang pindutan ay hindi pinindot upang maglaro ng wala. Samakatuwid tuwing ang pindutan ay pinindot, ito ay i-play ang itinalagang tala.

Inirerekumendang: