เจ้า **3 Note Piano Box** ตัวนี้จะให้เราเล่นโน้ตธรรมดา (F, G, A) 3 ตัว และโน้ตชาร์ป (F#, G#, A#) อีก 3 ตัวได้
ทั้งโน้ตธรรมดาและโน้ตชาร์ป ถูกควบคุมด้วยปุ่มกด 3 ปุ่มที่อยู่ด้านบนเหมือนกันเลย เริ่มต้นมันจะเล่นโน้ตธรรมดา ถ้าอยากได้เสียงชาร์ป ก็แค่เอามือมาบังตัวต้านทานแสง (Photoresistor) ที่อยู่ด้านหน้าของกล่องเปียโนซะ!
เจ้า 3 Note Piano Box ตัวนี้แหละที่จะพาน้องๆ เข้าสู่โลกของ Polyphony และ State Machine แบบอินเทอร์แอคทีฟ ถ้าโปรเจคก่อนหน้านี้ที่ใช้บัซเซอร์เล่นเพลงอัตโนมัติคือการดูหนัง งั้นโปรเจคนี้คือการได้เป็นผู้กำกับหนังเองเลย!
การอ่านอินพุตจากหลายปุ่มพร้อมกัน
ความท้าทายอยู่ที่เราต้องคอยเช็คหลายปุ่มตลอดเวลาโดยที่โค้ดไม่ติดแหง็ก
- การเซ็ตอัพ: ต่อปุ่มกด 3 ตัวเข้ากับพินดิจิตอล
2, 3, 4ของ Arduino ใช้ประโยชน์จาก Pull-up resistor ภายใน (pinMode(2, INPUT_PULLUP)) จะได้ไม่ต้องมายุ่งกับตัวต้านทาน 10k ภายนอกให้วุ่นวาย — ต่อปุ่มเข้ากับ Ground ตรงๆ เลย - ลูปหลัก: Arduino จะตรวจสอบทั้งสามปุ่มอย่างรวดเร็ว (เป็นล้านครั้งต่อวินาที)
- การสั่งให้เกิดความถี่:
if (digitalRead(button1) == LOW) { tone(buzzerPin, 261); }(เล่น Middle C ความถี่ 261 Hz)... (button2)-> เล่น E (329 Hz)... (button3)-> เล่น G (392 Hz)
- ความเงียบ: ข้อนี้สำคัญมาก! ต้องมีคำสั่ง
else { noTone(buzzerPin); }อยู่ท้ายสุดด้วย ไม่งั้นพอปล่อยปุ่ม บัซเซอร์จะร้อง Middle C จนวันสิ้นโลกเลย!
อุปกรณ์ที่ต้องใช้
- Arduino Uno/Nano: หัวใจหลักของซินธิไซเซอร์
- ปุ่มกดแบบ Tactile 3 ตัว
- Piezo Buzzer แบบ Active หรือ Passive
- กล่องเล็กๆ: (Optional) เอาไว้ติดปุ่มและซ่อนสายระโยงระยาง ให้ดูเป็น "Piano Box" ที่เนี๊ยบ
โปรเจคนี้คือบันไดขั้นสำคัญที่จะพาน้องไปสร้างซินธิไซเซอร์ 8 คีย์เต็มอ็อกเทฟ และต่อยอดไปใช้ไลบรารีสร้างเสียงอย่าง Mozzi ได้เลย สู้งานนะน้อง!
วิธีประกอบ:
1: พิมพ์ 3D กล่องจากไฟล์ .stl ให้เรียบร้อย วางเบรดบอร์ดอันแรกไว้บนกล่อง ส่วนอันที่สองวางไว้บนพื้นราบ (เช่น โต๊ะ) ไปก่อน
2: ต่อสายจากตัวต้านทานแสง (Photoresistor) และบัซเซอร์จาก Arduino Uno (หรือ Arduino MEGA ก็ได้) ไปยังเบรดบอร์ดอันที่ไม่ได้อยู่บนกล่อง
3: เสียบสายจากเบรดบอร์ดบนกล่องเข้ากับ Arduino แต่ยังอย่าเพิ่งต่อเข้ากับเบรดบอร์ด
____
4: ใช้เทปหรือกาวติดเบรดบอร์ดอันที่สองและ Arduino Uno เข้าไปในกล่อง (ดูรูปประกอบด้านล่าง)
5: ดึงตัวต้านทานแสงออกมาทางด้านหน้าของกล่อง
6: สุดท้าย ดึงสายจากเบรดบอร์ดบนกล่องออกมาทางรูด้านบน แล้วต่อเข้ากับตำแหน่งที่ถูกต้องบนเบรดบอร์ดให้เรียบร้อย งานนี้จัดไปวัยรุ่น!


