สารบัญ:

เปียโน Arduino: 3 ขั้นตอน
เปียโน Arduino: 3 ขั้นตอน

วีดีโอ: เปียโน Arduino: 3 ขั้นตอน

วีดีโอ: เปียโน Arduino: 3 ขั้นตอน
วีดีโอ: ARDUINO #6 การใช้งานเบื้องต้น เเบบละเอียด บอร์ดวงจร ARDUINO UNO R3 HOW TO USE. IOREF AREF. POWER 2024, พฤศจิกายน
Anonim
เปียโน Arduino
เปียโน Arduino

"เปียโน" นี้สามารถเล่นอ็อกเทฟของเปียโนจริงได้ การกดปุ่มจะแสดงถึงการกดปุ่มบนเปียโน เสียงจะถูกส่งผ่านลำโพง Piezo

ขั้นตอนที่ 1: วัสดุ

1. Arduino Uno

2. สาย USB

3. 3 เขียงหั่นขนม

4. 8 ปุ่มกด

5. 8 ตัวต้านทาน 100 โอห์ม

6. ลำโพง "Piezo"

7. ตัวผู้จำนวนมาก (ประมาณ 20 เส้น)

8. หัวแร้ง

ขั้นตอนที่ 2: สร้าง Setup

สร้างการติดตั้ง
สร้างการติดตั้ง

สร้างปุ่ม 8 ปุ่มโดยแต่ละปุ่มจะเข้าสู่ 8 พินที่แตกต่างกันใน Arduino เพิ่มตัวต้านทานให้กับแต่ละปุ่ม และเชื่อมต่อกับกราวด์ (โดยใช้สายตัวผู้)

เชื่อมต่อลำโพงกับพิน Arduino ที่กำหนด และอีกด้านหนึ่งกับกราวด์ คุณจะต้องบัดกรีสายไฟเข้ากับลำโพงเพื่อไม่ให้หลุดออก ตรวจสอบให้แน่ใจว่าสายไฟสองเส้นที่บัดกรีกับลำโพงไม่สัมผัสกัน

ขั้นตอนที่ 3: การสร้างรหัส

#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 NOTE_A1 55 #define NOTE_AS1 58 # 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 NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_A2 117 กำหนด #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 220 #define NOTE_ NOTE3B กำหนด 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_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 B66 #NS บันทึกย่อ 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 NOTE_AS5 932 #define NOTE_ NOTE_C5 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 1865 #define NOTE_B6 1976 #define NOTE_Cs 17C กำหนด 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_B7 3951 #define NOTE_D NOTE_C8 4186 4699 #define NOTE_DS8 4978

"#defines" เหล่านี้ใช้เพื่อบอกผู้พูดว่าความถี่ใดทำให้โน้ตตัวใด

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;

กำหนดพิน Arduino ให้กับปุ่ม "cState, dState, eState เป็นต้น" เป็นตัวแปรที่บันทึกว่ามีการกดปุ่มหรือไม่ 0 หมายถึงไม่ได้กด 1 หมายถึงถูกกด

การตั้งค่าเป็นโมฆะ () { // ใส่รหัสการตั้งค่าของคุณที่นี่เพื่อเรียกใช้ครั้งเดียว: pinMode (10, OUTPUT); Serial.begin(9600); }

void loop() { // ใส่รหัสหลักของคุณที่นี่ เพื่อเรียกใช้ซ้ำ: cState = digitalRead(C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState= digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

สถานะของปุ่ม (หากกดหรือไม่) จะถูกบันทึกไว้ใน "cState, dState, eState ฯลฯ"

0 หมายถึงไม่ได้กด 1 หมายถึงถูกกด

if(cState ==1){ โทน (piezoPin, 131); }อื่น{noTone(piezoPin);} if(dState ==1){ โทน(piezoPin, 147); }อื่น{noTone(piezoPin);} if(eState ==1){ โทน(piezoPin, 165); }อื่น{noTone(piezoPin);} if(fState ==1){ โทน(piezoPin, 175); }อื่น{noTone(piezoPin);} if(gState ==1){ โทน(piezoPin, 196); }อื่น{noTone(piezoPin);} if(aState ==1){ โทน(piezoPin, 220); }อื่น{noTone(piezoPin);} if(bState ==1){ โทน(piezoPin, 247); }อื่น{noTone(piezoPin);} if(c2State ==1){ โทน(piezoPin, 262); }อื่น{noTone(piezoPin);} }

หากกดปุ่ม จะเป็นการบอกให้เซอร์โวเล่นความถี่ที่แน่นอน (หมายเหตุ) ฟังก์ชั่น

{noTone(piezoPin);} บอกพวกเขาว่าถ้าไม่ได้กดปุ่มเพื่อเล่นอะไรเลย ดังนั้นทุกครั้งที่กดปุ่ม มันจะเล่นโน้ตที่กำหนด

แนะนำ: