Mündəricat:

Arduino Piano: 3 addım
Arduino Piano: 3 addım

Video: Arduino Piano: 3 addım

Video: Arduino Piano: 3 addım
Video: Военная Разведка. Первый Удар (2011) Военный боевик Full HD. 5-8 серии 2024, Noyabr
Anonim
Arduino Piano
Arduino Piano

Bu "Piano" əsl pianonun oktavasını çalmağı bacarır. Düymələrə basmaq, pianoda bir düyməni basmağı təmsil edəcək. Səs Piezo dinamikindən ötürüləcək.

Addım 1: Materiallar

1. Arduino Uno

2. USB tel

3. 3 çörək taxtası

4. 8 düymələr

5. 8 100 Ohm rezistorlar

6. "Piezo" Dinamik

7. Bir çox kişi telləri (təxminən 20)

8. Havya

Addım 2: Quraşdırmanı qurun

Quraşdırmanı qurun
Quraşdırmanı qurun

Arduino'da hər biri 8 fərqli sancağa girən, hər birinə bir rezistor əlavə edən və onları yerə bağlayan (Kişi tellərindən istifadə edərək) 8 düymə yaradın.

Dinamiki təyin edilmiş Arduino pininə, digər tərəfini isə yerə bağlayın. Yıxılmaması üçün telləri dinamikə lehimləməli olacaqsınız. Dinamikə lehimlənmiş iki telin bir -birinə toxunmadığından əmin olun.

Addım 3: Kodun qurulması

#define NOTE_B0 31 #müəyyən NOTE_C1 33 #define NOTE_CS1 35 #deffine NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #deefine NOTE_GS1 52 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #deffine NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #de notine NOTE_GS2 104 #define Not2, 9 #define NOTE_C3 131 #deffine 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 #deine NOTE_GS3 208 #3fine NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #deffine NOTE_FS4 370 #define NOTE_G4 392 #de notine NOTE_GS4 415 #4444444 #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 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #deffine NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #deineFine NOTE_GS6 1661 #define NOTE_A6 1760 #NOTeineCheinine6 NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #deffine NOTE_F7 2794 #deineFine NOTE_FS7 2960 #deffine NOTE_G7 3136 #deffine NOTE_GS7 3322 #define NOTE_A7 3520 #Define NOTE_AS7 NOT8Define 378de 4699 #define NOTE_DS8 4978

Bu "#təriflər" natiqə hansı tezliyin hansı qeyd etdiyini söyləməlidir

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;

Düymələrə Arduino pinlərini təyin edin. "cState, dState, eState və s." düymənin basılı olub -olmamasını saxlayan dəyişənlərdir. A 0 basılmadığını, 1 basıldığını bildirir.

void setup () {// bir dəfə işə salmaq üçün quraşdırma kodunuzu bura qoyun: pinMode (10, ÇIXIŞ); Serial.begin (9600); }

void loop () {// əsas kodunuzu bura qoyun, təkrar işləsin: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

Düymənin vəziyyəti (basılsa və ya edilməsə) "cState, dState, eState və s."

A 0 basılmadığını, 1 isə basıldığını bildirir.

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

Bir düyməyə basılırsa, servoya sertifikatın tezliyini çalmasını bildirir (qeyd). Funksiya

{noTone (piezoPin);} onlara heç bir şey oynamaq üçün düyməyə basılmadığını bildirir. Buna görə də düyməyə hər dəfə basıldıqda təyin olunmuş notu oxuyacaq.

Tövsiyə: