สร้าง MIDI Controller ด้วย Arduino (ตอนแรก)

เมื่อวันก่อนผมมีโอากาสได้พูดในงาน Bar Camp Bangkhen 4 ในหัวข้อที่ว่า สร้าง  MIDI Controller ด้วย  Arduino Leonardo ผมอธิบายตั้งแต่ว่า Arduino นั้นคืออะไร จนกระทั่งสร้าง MIDI Controller แบบง่าย ๆ ที่ส่งโน๊ตตัว C-1 ทุกครั้งที่ผมกดปุ่ม (หรือที่จริงต้องเรียกว่า เหยียบปุ่ม) ครับ

ในวันนั้นผมเตรียมตัวไปไม่ค่อยดีนัก การนำเสนอก็ค่อนข้างเละเทะ คนฟังก็มีนั่งหลับด้วย (เห็นนะเอ้อ) ก็เลยอยากถือโอกาสมาแก้ตัวในบล็อกของตัวเองสักหน่อย

ภาพของ  Arduino Leonardo จากเว็บไซต์ของ Arduino  ครับ

Arduino เป็นบอร์ด HW Prototype ที่ประกอบไปด้วย Microcontroller  ที่อินเตอร์เฟซเข้ากับ PC ได้ (ผ่านทาง USB โดยบน PC จะเห็นเป็น Serial Port ตัวหนึ่ง) และมี I/O ทั้ง Analog และ Digital ทำให้สามารถเชื่อมต่อเข้ากับอุปกรณ์ต่าง ๆ ได้หลายประเภท ที่ผมเคยเห็นก็มีตั้งแต่แค่ต่อกับไฟ LED แบบง่าย ๆ จนถึงทำเป็นหุ่นยนต์ที่วิ่งไปบนพื้นได้เองโดยไม่ชนกำแพงครับ

ผมนำความสามารถด้านการรับอินพุตแบบอนาล็อก และ I/O แบบดิจิตอลเข้ามาใช้ในการทำ MIDI Controller  ครับ ซึ่งหลักการทำงานก็ไม่มีอะไรซับซ้อนเลย ผมต่อ Analog Input เข้าอุปกรณ์ที่ใช้ควบคุม อย่างพวกสวิทช์หรือตัวต้านทานปรับค่าได้ (VR) จากนั้นอ่านค่าที่ได้จาก Input พวกนี้ แล้วสร้าง MIDI Message ขึ้นมาก่อนส่งออกไปทาง Digital I/O หรือผ่านทาง Serial/USB Port เข้า PC เท่านั้นเอง

ตัว Analog Input บน Arduino เนี่ยจะรับค่าสัญญาณไฟฟ้าโดยดูที่ความต่างศักย์ไฟฟ้า แล้วจะถูกแปลงให้เป็นค่าตัวเลขผ่านทาง Analog-to-Digital Converter แบบ 10 บิท ถ้า input มีศักย์ไฟฟ้า 5โวลต์ Arduino จะมองค่า input เป็นค่า 1023 และถ้ามีศักย์ไฟฟ้า 0โวลต์ก็จะมีค่า input เป็น 0 ครับ อะไรทำนองนี้ ดังนั้นถ้าเรามีอุปกรณ์ที่สามารถจ่ายไฟตั้งแต่ 0-5 โวลต์เข้าไปที่ขา Analog Input ของ Arduino ได้ก็จะสามารถป้อนค่าที่แตกต่างกันเข้าไปในตัว Arduino ได้แล้วครับ

สำหรับ MIDI Controller ที่สามารถสร้างขึ้นมาได้จาก Arduino นั้นก็ทำได้หลายประเภทมากครับ ที่จริงคือมันขึ้นอยู่กับว่าเรา Design ยังไง อย่างเราอาจจะพ่วง VR เข้าไประหว่างตัวจ่ายไฟ 5V กับ analog input สักตัวแล้วอ่านค่า ก็จะได้เป็นตัวปรับพารามิเตอร์มาแล้วหนึ่งตัว หรือถ้าเราต่อสวิทช์เข้าไปแทนก็อาจจะใช้เป็นตัวเล่นโน็ตเลยก็ยังได้

หรือแม้กระทั่งถ้าเราต่อ piezo เข้าไปที่ตัว input แล้วเอาแผ่น piezo ไปแปะไว้บนแป้นยาง ก็สามารถใช้เป็นกลองไฟฟ้าเลยก็ยังได้ (แต่ต้องปรับแรงศักย์ไฟฟ้าดี ๆ เพราะว่า piezo สามารถสร้างศักย์ไฟฟ้าได้ถึง 20โวลต์สบาย ๆ ครับ อันนี้ลองหาวิธีกันเองดูนะ ไม่งั้นบอร์ดพังนะเอ้อ)

ที่จริงผมได้แผ่น touchscreen panel แบบ resistive มาแผ่นนึง ไอ้ที่เขาเอาไว้ทำจอทัชสกรีนน่ะครับ แต่อันนี้ไม่มีตัวจอนะ ถ้าเอามาต่อก็สามารถทำอุปกรณ์เท่ห์ ๆ หน้าตาคล้าย ๆ Kaoss PAD ได้ด้วยล่ะครับ แต่อันนี้เดี๋ยวค่อยลองนะ

พูดง่าย ๆ ว่า controller  ทุกแบบที่มีในตลาดเนี่ย เราสามารถใช้ Arduino ทำได้หมดเลยครับ เจ๋งไหมล่ะ ?

คราวหน้าจะมาพูดถึงการพ่วง input เข้าไปหาตัว arduino และการอ่านค่าจาก input นั้นนะครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.