Mundarija:

Arduino pianino: 3 qadam
Arduino pianino: 3 qadam

Video: Arduino pianino: 3 qadam

Video: Arduino pianino: 3 qadam
Video: Amazing arduino project 2024, Iyul
Anonim
Arduino pianino
Arduino pianino

Bu "Pianino" haqiqiy pianino oktavasini chalishga qodir. Tugmalarni bosish pianino tugmachasini bosishni bildiradi. Ovoz Piezo karnay orqali uzatiladi.

1 -qadam: materiallar

1. Arduino Uno

2. USB kabeli

3. 3 ta non paneli

4. 8 ta tugma

5. 8 100 Ohmli rezistorlar

6. "Piezo" spikeri

7. Ko'p erkak simlar (20 ga yaqin)

8. Lehimlash temir

2 -qadam: O'rnatishni yarating

O'rnatishni yarating
O'rnatishni yarating

Har birida Arduino -da 8 ta pin bor, har biriga rezistor qo'shib, ularni erga ulab (Erkak simlari yordamida) 8 tugmachani yarating.

Karnayni belgilangan Arduino piniga, boshqa tomonini esa erga ulang. Simlar karnayga lehimlanishi kerak, shunda u qulab tushmaydi. Karnayga lehimlangan ikkita sim bir -biriga tegmasligiga ishonch hosil qiling.

3 -qadam: Kodeksni tuzish

#devetine NOTE_B0 31 #belgilash NOTE_C1 33 #devetine NOTE_CS1 35 #devetine NOTE_D1 37 #devetine NOTE_DS1 39 #deinine NOTE_E1 41 #de NOTINE NOTE_F1 44 #devetine NOTE_FS1 46 #deinine NOTE_G1 49 #deineAniqlayotganday emas, 55Aniq belgilab berishga 52. NOTE_B1 62 #define NOTE_C2 65 #devetine NOTE_CS2 69 #de NOTINE NOTE_D2 73 #de NOTINE NOTE_DS2 78 #deinine NOTE_E2 82 #de NOTINE NOTE_F2 87 #de NOTINE NOTE_FS2 93 #deFINE NOTE_G2 98 #deFine NOTE_GS2 104 #define2 #define NOTE_C3 131 #devetine NOTE_CS3 139 #devetine NOTE_D3 147 #de NOTINE NOTE_DS3 156 #define NOTE_E3 165 #deFine 175 #define NOTE_FS3 185 #define NOTE_G3 196 #de NOTE NOTE_GS3 208 #3define NOTE_C4 262 #define NOTE_CS4 277 #devetine NOTE_D4 294 #de NOTINE NOTE_DS4 311 #deinine NOTE_E4 330 #define NOTE_F4 349 #devetine NOTE_FS4 370 #define NOTE_G4 392 #devetine NOTE_GS4 415 NOT4ine44444 #d efine NOTE_CS5 554 #devetine NOTE_D5 587 #deinefine NOTE_DS5 622 #devetine NOTE_E5 659 #deinefine NOTE_F5 698 #deffine NOTE_FS5 740 #devetine NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5888866define 1109 #define NOTE_D6 1175 #devetine NOTE_DS6 1245 #define NOTE_E6 1319 #devetine NOTE_F6 1397 #deinine NOTE_FS6 1480 #define NOTE_G6 1568 #de NOTINE NOTE_GS6 1661 #devetine NOTE_A6 1760 #NOTEFINE_EEEEEEEEEEEE_EE_AECE6_17 NOTE_D7 2349 #devetine NOTE_DS7 2489 #devetine NOTE_E7 2637 #devetine NOTE_F7 2794 #deinine NOTE_FS7 2960 #de NOTINE NOTE_G7 3136 #devetine NOTE_GS7 3322 #deinine NOTE_A7 3520 #efine NOTE_AS7 NOT8Engine88 4699 #define NOTE_DS8 4978

Bu "ta'riflar" spikerga qaysi chastotani qaysi eslatmani yozishini aytishi kerak

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;

Tugmalarga Arduino pinlarini belgilang. "cState, dState, eState va boshqalar;" tugma bosilganligini saqlaydigan o'zgaruvchilar. A 0 bosilmasligini, 1 bosilganligini bildiradi.

void setup () {// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: pinMode (10, OUTPUT); Serial.begin (9600); }

void loop () {// qayta ishga tushirish uchun asosiy kodingizni bu erga qo'ying: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

Tugma holati (agar u bosilsa yoki bosilmasa) "cState, dState, eState va boshqalarda" saqlanadi;

A 0 bosilmasligini, 1 bosilganligini bildiradi.

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

Agar tugma bosilsa, u servoga sertifikat chastotasini ijro etishini aytadi (eslatma). Funktsiya

{noTone (piezoPin);} ularga hech narsa ijro etish uchun tugma bosilmasligini aytadi. Shuning uchun, tugma bosilganda, u belgilangan yozuvni ijro etadi.

Tavsiya: