เมื่อวันก่อนผมมีโอากาสได้พูดในงาน 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 นั้นนะครับ
โปรแกรมเมอร์ C++ และผู้นิยมดนตรี