สารบัญ:
วีดีโอ: HX1-DM - เครื่องกลอง DIY แบบ Upcycled Arduino DUE ที่ขับเคลื่อนด้วยเครื่องดรัม (สร้างจากเครื่อง MK2): 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ข้อมูลจำเพาะ
- คอนโทรลเลอร์ / กลอง Midi ไฮบริด: Arduino DUE ขับเคลื่อน!
- 16 แผ่นตรวจจับความเร็วที่มีความหน่วงต่ำมาก 1>ms
- 8 ปุ่มที่ผู้ใช้กำหนดให้กับคำสั่ง Midi #CC ใดก็ได้
- ซีเควนเซอร์ในตัว 16ch (ไม่ต้องใช้คอมพิวเตอร์!!)
- ฟังก์ชัน MIDI เข้า/ออก/ผ่าน (สามารถใช้เป็นอินเทอร์เฟซ USB midi ได้!)
- รองรับนาฬิกา MIDI และ MTC บางส่วน (ทำงานกับการควบคุม MMC และ DAW)
นี่เป็นหนึ่งในโครงการที่ซับซ้อนที่สุดที่ฉันเคยทำ กำลังพูดถึงการลงทะเบียนกะเอาต์พุต 17 ตัว, การลงทะเบียนกะอินพุต 6 ตัว, มัลติเพล็กเซอร์ 2x 16 แชนเนลที่ทำงานบนแผงวงจร ฉันไม่รู้ว่าอะไรคืออะไรและที่ไหน บวกกับฉันไม่เคยยุ่ง พร้อม shift register / multiplexers ก่อน……
มันเริ่มต้นจากแรงกระตุ้นซื้อจาก eBay ฉันต้องการ Native Instruments Maschine จริงๆ เพราะฉันเคยชอบดรัมแพดของพวกมันเมื่อเปรียบเทียบกับในสตูดิโอ MPC ที่ฉันเป็นเจ้าของ ดังนั้นเมื่อฉันเห็นข้อผิดพลาดบน eBay ในราคา 40 ปอนด์ ฉันคิดว่า ฉันจะลองแก้ไขโดยที่สถานการณ์เลวร้ายที่สุดคือ 'ถ้าฉันไม่สามารถแก้ไขได้ ฉันมี Arduino DUE และ UNO สองสามตัวที่อยู่รอบๆ ตัว ฉันสามารถทำแฮ็คได้เสมอ'
ฉันชอบดรัมแพดพวกนั้นอยู่แล้ว!!!!
เสบียง
1 x Native Instruments Maschine MK2. ที่ผิดพลาด
1 x Arduino ครบกำหนด
17 x SN74HC595's - 8-bit output shift registers
6 x SN74HC165's - 8-bit input shift registers
2 x 74HC4067 - มัลติเพล็กเซอร์ 16 ช่อง
จอแสดงผล OLED ขนาด 2 x 3.2” 256x64
ลวดแบน (สายฟลอปปี้เก่าจะทำ)
ขั้นตอนที่ 1: การซ่อมแซม
ผู้ขายของ eBay ใจดีพอที่จะให้แนวคิดเกี่ยวกับสิ่งที่คาดหวังในคำอธิบายและได้ถอดพอร์ต USB ออกแล้ว บอร์ดได้รับแรงดันไฟเกินและไม่สามารถจ่ายไฟได้ คิวมัลติมิเตอร์…. บอร์ดดูเหมือนจะสั้น.. 'ฉันเคยซ่อมเมนบอร์ดมานับไม่ถ้วนที่มีขาสั้นมาก่อน แล้วมันจะยากแค่ไหนกัน!?!' มันกลับกลายเป็นว่าสิ่งนี้เกินแรงดัน (และอาจเป็นส่วนหนึ่งของการออกแบบบอร์ด) ได้นำออกมาเกือบทุกครั้ง ส่วนประกอบบนบอร์ดรวมทั้งซีพียูหลัก บอร์ดนี้มันแย่จริงๆ!
ฉันยังคงใช้มัลติมิเตอร์ของฉันต่อไป ค้นคว้าเกี่ยวกับส่วนประกอบต่างๆ และค้นหาว่าแต่ละอันทำอะไรและ NI ทำงานได้อย่างยอดเยี่ยมในการทำให้สิ่งต่างๆ ชัดเจนขึ้นด้วยจุดทดสอบต่างๆ รอบ ๆ มาเธอร์บอร์ด ??
ขั้นตอนที่ 2: การแฮ็ก
เมื่อรู้ว่าฉันต้องเปลี่ยนทุกอย่างที่ขวาง CPU หลัก (ซึ่งไม่จำเป็น) ฉันจึงหันไปหา eBay โชคดีที่ทุกอย่างที่จำเป็นมีราคาถูก ดังนั้นการสั่งซื้อจำนวนมากจึงเป็นเรื่องสนุก ?
17 x SN74HC595's - การลงทะเบียนการเปลี่ยนเอาต์พุต 8 บิต
รีจิสเตอร์การเปลี่ยนเอาต์พุต 17 ตัวใช้เพื่อควบคุมไฟ LED หลากสีของดรัมแพดและไฟ LED ของปุ่มทั้งหมด (136 อันเป็นที่แน่นอน !!) สิ่งเหล่านี้ใช้งานง่ายมากและพบไลบรารี่อย่างรวดเร็วโดยใช้ Arduino IDE เพื่อช่วยตัวเองในการสร้าง..ถูกล่ามโซ่ไว้ด้วยกัน
6 x SN74HC165's - การลงทะเบียนกะอินพุต 8 บิต
รีจิสเตอร์ shift อินพุตเหล่านี้ยอดเยี่ยมสำหรับอินพุตหลายตัวใน 1 แชนเนล มีทั้งหมด 48 ปุ่ม
2 x 74HC4067 - มัลติเพล็กเซอร์ 16 ช่อง
เรามีแพด 16 แผ่นและ 8 ปุ่มที่เหลือซึ่งเป็นแบบแอนะล็อกด้วย ฉันพบว่ามันง่ายกว่าที่จะใช้สิ่งเหล่านี้เนื่องจากอันบนกระดานเป็น 8channel และฉันมีปัญหาในการค้นหาตำแหน่งที่จะเชื่อมต่อดาต้าพิน.. คิวปาเก็ตตี้คิว….
จอแสดงผล OLED ขนาด 2 x 3.2” 256x64
ของมันต้องมีสักจอ!!! ฉันไม่พบข้อมูลใดๆ เกี่ยวกับหน้าจอ LCD ดั้งเดิมที่มาใน NI Maschine และฉันก็ไม่ต้องเสียเวลาพยายามอีกต่อไป ดังนั้นฉันจึงตัดสินใจสั่งซื้อบางส่วนจากจีน… ฉันใช้ไลบรารี UG8x8 เพื่อให้ใช้งานได้ หน้าจอใหม่มีขนาดเล็กกว่าเดิมเล็กน้อย ดังนั้นฉันจึงตัด 'บิตที่ไม่ดี' ออกไป
1 x Arduino ครบกำหนด
ฉันมีสิ่งนี้นอนรออยู่พักหนึ่งเพื่อรอโครงการที่คุ้มค่าเพียงพอสำหรับพลังทั้งหมดนั้น !! มีปัญหาที่ฉันพบ ดูเหมือนว่าการแก้ไขบางอย่างของบอร์ดเหล่านี้มีปัญหาการรีเซ็ต ซึ่งหมายความว่าฉันต้องกดปุ่มรีเซ็ตในบางครั้งเพื่อให้สิ่งนั้นทำงานหลังจากอัปโหลดภาพร่าง สิ่งนี้ได้รับการแก้ไขอย่างง่ายดายด้วยตัวต้านทาน 10K (มีโพสต์ในฟอรัม Arduino เกี่ยวกับสิ่งนี้)
ขั้นตอนที่ 3: รหัส
ฉันประทับใจมากที่ได้รับการสนับสนุนในชุมชน Arduino การค้นหาตัวอย่างโค้ดและไลบรารีสำหรับส่วนประกอบต่างๆ ทำได้ง่ายและตรงไปตรงมา
การเริ่มต้นใช้งาน USB midi นั้นง่ายดายและใช้เวลาเพียงไม่กี่นาที ไฟ LED ใช้เวลาพอสมควรและฉันต้องสร้างภาพร่างที่ค่อยๆ ตั้งค่าแต่ละพินให้สูงในช่วงเวลา 1 วินาทีและจดบันทึก ฉันสร้างอาร์เรย์ซึ่งเก็บหมายเลข PIN ไว้เพื่อให้ง่ายต่อการเขียนโค้ดทุกอย่าง
ฉันสร้างห้องสมุด 2 แห่งเพื่อพูดคุยกับมัลติเพล็กเซอร์ อันหนึ่งจัดการแพดแอนะล็อกและอีกอันเป็นลูกบิด อีกครั้งนี้เป็นเรื่องง่ายจริงๆ ฉันได้แนบพวกเขาไปใช้แก้ไข ฯลฯ
ฉันต้องการมีซีเควนเซอร์และความสามารถในการบันทึกโดยไม่ต้องใช้คอมพิวเตอร์ ฉันพบข้อมูลบางอย่างเกี่ยวกับวิธีการแปลง BPM เป็น ms และพบไลบรารีตัวจับเวลา Arduino DUE ที่ยอดเยี่ยม
เมื่อใช้ไลบรารีตัวจับเวลา ฉันสามารถตั้งค่าอินพุตการอ่านและสิ่งต่างๆ เป็นระยะๆ ได้:
Pads @ 1ms - ฉันพบว่าสิ่งนี้ให้ความสมดุลที่ดีที่สุดระหว่างการตอบสนอง / สิ่งประดิษฐ์ที่ตีกลับ
ปุ่ม @ 40ms - ฉันใช้ไลบรารีคิวจึงไม่มีการกดพลาด
การประมวลผลเสร็จสิ้นในลูปหลัก คุณไม่สามารถทำอะไรได้มากเกินไปเมื่อคุณถูกขัดจังหวะเนื่องจากจะล็อก Arduino
Midi stuff @BPM (เป็น ms) - สำหรับการจัดลำดับ ที่ BPM ที่ต้องการ ฟังก์ชันจะเรียกว่าการอัปเดตซึ่งบันทึก ETC ให้เล่นและเพิ่มตัวนับจังหวะ
ขั้นตอนที่ 4: บทสรุป
ไม่แน่ใจว่าฉันได้ทำอะไรไปบ้าง แต่ฉันค่อนข้างภูมิใจ แผ่นรองตอบสนองได้ดีเยี่ยม ฉันต้องเล่นซอกับจังหวะเวลาเพื่อให้ได้สมดุลที่เหมาะสมกับการตอบสนองและปัญหาการตีกลับ การจัดลำดับใช้งานได้ดีและเมื่อฉันพบการสนับสนุน DAW ฉันก็จะสามารถรวมสิ่งนี้เข้ากับเวิร์กโฟลว์ของฉันได้อย่างเต็มที่และสามารถเพิ่มสิ่งต่าง ๆ ในตัวควบคุมที่ฉันต้องการได้เสมอ! นี่เป็นโครงการที่สนุกจริงๆ ในการทำงานและเป็นแบบฝึกหัดที่ยอดเยี่ยม ในการทำความเข้าใจกับ C ทำความเข้าใจเกี่ยวกับวิศวกรรมย้อนกลับและวิธีการทำงานของมัลติเพล็กเซอร์ การลงทะเบียนกะ และการจัดลำดับ MIDI ฉันกำลังปรับปรุงโค้ดหลักต่อไป และอาจเปิดตัวในวันหนึ่งในฐานะผู้ออกแบบจังหวะโอเพนซอร์ส
เคล็ดลับ:
ฉันพบวิธีเปลี่ยนชื่อ USB ของ DUE โดยแก้ไขหนึ่งในไฟล์ส่วนหัวในโฟลเดอร์ Arduino/SAM
MIDI-OX เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการทดสอบการทำงานของ Midi
ลิงค์:
www.usb.org/sites/default/files/midi10.pdf - ข้อมูลจำเพาะ USB MIDIhttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… ข้อมูลบางอย่างเกี่ยวกับวิธีการแปลง BPM เป็น ms
travis-ci.com/SMFSW/Queue - สำหรับปุ่มอินพุต เพื่อไม่ให้พลาดทุกการกด!
github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8 lib สำหรับหน้าจอ LED/LCD
github.com/ivansedel/DueTimer/releases - Arduino DUE Timing lib
www.pjrc.com/teensy/td_libs_Encoder.html - Encoder Lib สำหรับลูกบิดขนาดใหญ่
shiftregister.simsso.de/ - ShiftIn Register lib - สร้างโดย Henrik Heine 24 กรกฎาคม 2016
forum.arduino.cc/index.php?topic=57636.0 - โค้ดเวลา MIDI
แนะนำ:
สมาร์ทโฟน Android แบบ USB (!!) เว็บแคม: 8 ขั้นตอน (พร้อมรูปภาพ)
สมาร์ทโฟน Android แบบ USB (!!) เว็บแคม: ในช่วงสองสามเดือนที่ผ่านมา เราทุกคนถูกบังคับให้สื่อสารออนไลน์มากกว่าที่จะติดต่อด้วยตนเอง ในฐานะนักเรียน การบรรยายส่วนใหญ่ของฉันกลายเป็นการประชุมของ Zoom และเช่นเดียวกันกับชั่วโมงการสอนของฉัน ในอีกไม่กี่สัปดาห์ข้างหน้า นักเรียนจำนวนมากทุกวัยจะ
การเชื่อมต่อ Gyroscope Sensor แบบ 3 แกน BMG160 กับ Arduino Nano: 5 ขั้นตอน
การเชื่อมต่อ Gyroscope Sensor แบบ 3 แกน BMG160 กับ Arduino Nano: ในโลกปัจจุบัน เยาวชนและเด็กมากกว่าครึ่งชื่นชอบการเล่นเกมและผู้ที่ชื่นชอบเกมนี้ ต่างหลงใหลในด้านเทคนิคของการเล่นเกม ทราบถึงความสำคัญของการตรวจจับการเคลื่อนไหว ในโดเมนนี้ เรายังประหลาดใจกับสิ่งเดียวกัน
เครื่องส่งสัญญาณ RC จาก Arduino แบบ 3 มิติ: 25 ขั้นตอน (พร้อมรูปภาพ)
เครื่องส่งสัญญาณ RC แบบใช้ Arduino แบบพิมพ์ 3 มิติ: โครงการนี้จะแสดงให้คุณเห็นว่าฉันออกแบบและสร้างเครื่องส่งสัญญาณ RC ที่ใช้ Arduino ได้อย่างไร เป้าหมายของฉันสำหรับโครงการนี้คือการออกแบบเครื่องส่งสัญญาณ RC แบบพิมพ์ได้ 3 มิติที่ฉันสามารถใช้ควบคุมโครงการ Arduino อื่น ๆ ได้ ฉันต้องการให้คอนโทรลเลอร์เป็น
นาฬิกา POV แบบ LED แบบอะนาล็อกพร้อม Arduino Nano: 4 ขั้นตอน
นาฬิกา LED POV สไตล์แอนะล็อกพร้อม Arduino Nano: นี่คือนาฬิกา LED POV สไตล์แอนะล็อกที่ดูดี
เพิ่ม Optical Tachometer แบบ Arduino ให้กับเราเตอร์ CNC: 34 ขั้นตอน (พร้อมรูปภาพ)
เพิ่มเครื่องวัดความเร็วรอบแบบออปติคัลบน Arduino ให้กับเราเตอร์ CNC: สร้างตัวบ่งชี้ RPM แบบออปติคัลสำหรับเราเตอร์ CNC ของคุณด้วย Arduino Nano, เซ็นเซอร์โฟโตไดโอด IR LED/IR และจอแสดงผล OLED ในราคาต่ำกว่า 30 ดอลลาร์ ฉันได้รับแรงบันดาลใจจาก Measure RPM - Optical Tachometer Instructable ของ eletro18 และต้องการเพิ่มมาตร