กลับไปหน้ารวมไฟล์
arduino-based-piano-synthesizer.md

คณิตศาสตร์แห่งเสียงเพลง: เครื่องสังเคราะห์เสียงเปียโนที่ใช้ Arduino

วิทยาศาสตร์ทางกายภาพของดนตรีขึ้นอยู่กับ Hertz (Hz) ทั้งหมด โน้ต "A" บนแกรนด์เปียโนจะสั่นสะเทือน 440 ครั้งต่อวินาทีอย่างแม่นยำ โปรเจกต์ Arduino Based Piano นี้จะสอนเกี่ยวกับการทำแผนที่ array และการสร้างความถี่ เปลี่ยนแถวของ Tactile switch ที่น่าเบื่อให้กลายเป็นคีย์บอร์ดอิเล็กทรอนิกส์ที่มีเสียงกังวานสูงและปรับจูนได้อย่างสวยงาม

button_led_basic_interaction_1772681969235.png

Array ความถี่ (ฟังก์ชัน tone())

คุณไม่สามารถส่งออกคลิปเสียง MP3 ที่ซับซ้อนบน Arduino Uno แบบง่ายๆ ได้ คุณต้องสังเคราะห์รูปคลื่นด้วยกลไก

  1. คำสั่ง tone(pin, frequency) ของ Arduino ใช้ Hardware timer เพื่อส่งสัญญาณ Square wave ขนาด 5V ไปมาหลายพันครั้งต่อวินาทีอย่างรุนแรง
  2. การตั้งค่าสเกลเพลง: คุณกำหนด array ของความถี่ทางกายภาพที่แน่นอน
// C4, D4, E4, F4, G4 (Middle C Scale)
int notes[] = {261, 293, 329, 349, 392}; 
  1. กลุ่ม Tactile Push-Button จำนวน 5 ตัวเชื่อมต่อกับ Pin 2 ถึง 6 โดยใช้ Resistor แบบ INPUT_PULLUP (เพื่อป้องกันไม่ให้เกิดอาการ Floating ทางไฟฟ้า)

ลูปการเล่นพร้อมกัน

  • Arduino สแกนปุ่มทั้ง 5 อย่างรวดเร็วอย่างต่อเนื่อง
  • if (digitalRead(btn_C) == LOW) { tone(speakerPin, notes[0]); }
  • เมื่อคุณกดปุ่มแรก กรวยลำโพงจะสั่นสะเทือนทางคณิตศาสตร์ 261 ครั้งต่อวินาทีอย่างแม่นยำ—สร้างเสียง Middle C ที่สมบูรณ์แบบ!
  • หากคุณปล่อยปุ่มทั้งหมด ลูปจะเรียกใช้ noTone(speakerPin); เพื่อปิดเสียงเครื่องกำเนิด Square wave ทันที ป้องกันเสียงบี๊บที่ดังต่อเนื่องไม่หยุด

ฮาร์ดแวร์สำหรับการสร้างเสียง

  • Arduino Uno/Nano (มีความแม่นยำของ Timer ที่ยอดเยี่ยม)
  • Tactile Push Button 5 ตัว (จัดวางบน Breadboard อย่างสมบูรณ์แบบเพื่อเลียนแบบคีย์เปียโนสีขาว)
  • Mini Speaker ขนาด 8-Ohm หนึ่งตัว (หรือ Piezo Buzzer แบบธรรมดา)
  • (การอัปเกรดเสริม: เพิ่ม Potentiometer ขนาด 10K ไปยัง Analog pin ที่ว่างอยู่ โดยใช้ฟังก์ชัน <map()> เพื่อดัดเสียง (Pitch) แบบไดนามิก เปลี่ยนเปียโนธรรมดาให้เป็น EDM Synthesizer!)

ข้อมูล Frontmatter ดั้งเดิม

title: "Arduino Based Piano"
description: "Chopsticks on silicon! Map 5 tactile push buttons to mathematically perfect acoustic frequencies using the tone() function to build a fully functional miniature electric synthesizer."
category: "Audio & Sound"
difficulty: "Easy"