สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: อุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 2: เชื่อมต่อแถบ LED
- ขั้นตอนที่ 3: ปรับโปรเจ็กต์ให้เข้ากับคีย์บอร์ดของคุณ
- ขั้นตอนที่ 4: รหัส Arduino
- ขั้นตอนที่ 5: การปรับปรุงที่เป็นไปได้ …
- ขั้นตอนที่ 6: เสร็จแล้ว
วีดีโอ: MIDI2LED - เอฟเฟกต์ไฟ LED Strip ที่ควบคุมโดย MIDI: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
นี่เป็นคำสั่งสอนครั้งแรกของฉัน ดังนั้นอดทนกับฉัน
ฉันชอบทำดนตรี และในสถานการณ์สด เช่น คอนเสิร์ตในห้องนั่งเล่น ฉันชอบเมื่อมีเอฟเฟกต์แสงที่สอดคล้องกับสิ่งที่ฉันเล่น ดังนั้นฉันจึงสร้างกล่องที่ใช้ Arduino ที่ทำให้แถบ LED สว่างขึ้นเป็นสีแบบสุ่มเมื่อฉันกดโน้ตบนแป้นพิมพ์ MIDI และที่ฉันกดโน้ต
เสบียง
- Arduino Uno
- Arduino โปรโตชิลด์
- แจ็ค MIDI
- 1N4148 ไดโอด
- 6N138 opto coupler
- ตัวต้านทาน: 2x 220 โอห์ม, 1x 10kOhm, 1x 470Ohm
- WS2812B แถบ LED (60 LEDs)
- สายไฟเหลือบ้าง
- ท่อหดความร้อน
- เคสที่เหมาะกับ Arduino (ผมใช้กล่องแยกพลาสติก)
คุณจะต้อง
- หัวแร้งและหัวแร้ง
- แป้นพิมพ์ MIDI และสาย MIDI
ขั้นตอนที่ 1: อุปกรณ์อิเล็กทรอนิกส์
วงจรค่อนข้างตรงไปตรงมา ประกอบด้วยอินพุต MIDI มาตรฐาน (ด้านซ้ายของ Arduino) และการเชื่อมต่อกับแถบ LED (ด้านขวาของ Arduino) วางชิ้นส่วนทั้งหมดบน protoshield มีพื้นที่ว่างมาก โดยทั่วไปแนะนำให้ใช้แหล่งจ่ายไฟภายนอกเพื่อจ่ายไฟให้กับแถบ LED แต่ฉันพบว่าเมื่อคุณเล่นไฟ LED เพียงไม่กี่ดวงเท่านั้นที่เปิดอยู่ในเวลาเดียวกันจึงมี ไม่มีปัญหาในการใช้ Arduino +5V / GND เป็นเอาต์พุต (พยายามหลีกเลี่ยงการกดปุ่มทั้งหมดพร้อมกันและด้วยความเร็วเต็มที่;-)) หากคุณตัดสินใจที่จะใช้แหล่งจ่ายไฟภายนอก เพียงแค่เชื่อมต่อกับพิน Arduino +5V และ GND บางคนแนะนำให้ใส่ตัวเก็บประจุ 100uF (ไม่แสดงในแผนผัง) ระหว่างสองบรรทัดนี้
ประสานชิ้นส่วนเข้ากับโปรโตชิลด์และเชื่อมต่อแถบ LED ตามที่แสดงในแผนผัง
ขั้นตอนที่ 2: เชื่อมต่อแถบ LED
การเชื่อมต่อปลายด้านขวา - ปลายอินพุต - ของแถบ LED เข้ากับวงจรเป็นสิ่งสำคัญ แถบของฉันมีขั้วต่อตัวเมียเป็นอินพุต และมีรูปสามเหลี่ยมเล็กๆ ที่ชี้ออกจากอินพุตตลอด ที่เอาต์พุตมีขั้วต่อตัวผู้ (เพื่อให้สามารถเชื่อมต่อกับแถบอื่นซึ่งเราไม่ต้องการ) ดังนั้นฉันจึงตัดมันออกและบัดกรีเข้ากับสายเคเบิลสามเส้นที่มาจาก Arduino ใช้ท่อหดแบบใช้ความร้อนเพื่อผูกสายเคเบิลทั้งสามเข้ากับแถบ LED เข้าด้วยกัน และทำให้มองเห็นได้น้อยลง
แถบ LED ที่ฉันใช้มาพร้อมกับเทปกาวที่ด้านหลัง จึงสามารถติดกาวที่ด้านหลังของแป้นพิมพ์ MIDI ได้อย่างง่ายดาย
ขั้นตอนที่ 3: ปรับโปรเจ็กต์ให้เข้ากับคีย์บอร์ดของคุณ
คุณอาจต้องปรับแถบ LED และรหัส Arduino ให้เข้ากับแป้นพิมพ์ของคุณ ของฉันมี 76 คีย์ และความยาวของแถบนั้นเกือบจะเท่ากับความกว้างของแป้นพิมพ์เลย หากคุณมีเช่น 61 คีย์ คุณอาจต้องการแถบที่สั้นกว่านี้ แถบ LED สามารถตัดระหว่าง LED สองดวงใดก็ได้ ตรวจสอบให้แน่ใจว่าคุณได้ตัดส่วนที่ถูกต้องออก มันมีปลายอินพุต (พร้อมขั้วต่อตัวเมีย) และปลายเอาต์พุต (พร้อมขั้วต่อตัวผู้) คุณต้องเก็บปลายอินพุตไว้ ในโค้ด ให้เปลี่ยน #defines สำหรับ
- NUMBER_OF_LEDS ถึงจำนวน LED ที่เหลืออยู่ในแถบของคุณหลังจากตัดปลาย
- NUMBER_OF_KEYS ถึงจำนวนปุ่มบนแป้นพิมพ์ของคุณและ
- MIN_KEY เป็นเลขพิทช์ MIDI ของคีย์ต่ำสุดของคุณ คุณอาจพบสิ่งนี้ในคู่มือผู้ใช้ของแป้นพิมพ์ หรือใช้เครื่องมือที่แสดงหมายเลขบันทึกย่อ MIDI เช่น KMidiMon สำหรับ Linux หรือ Pocket MIDI สำหรับ windows หรือ Mac หรือลองใช้ค่าต่างๆ กันจนกว่าอุปกรณ์จะตอบสนองต่อปุ่มทั้งหมดบนแป้นพิมพ์ของคุณ
ขั้นตอนที่ 4: รหัส Arduino
รหัส Arduino ใช้ไลบรารี MIDI (v4.3.1) โดย Forty Seven Effects และไลบรารี Adafruit NeoPixel (v1.3.4) โดย Adafruit ติดตั้งไลบรารีเหล่านี้โดยใช้ Arduino IDE จากนั้นคอมไพล์โค้ดและอัปโหลดไปยัง Arduino โดยไม่ต้องต่อชิลด์ (ออปโตคัปเปลอร์เชื่อมต่อกับพิน RX ซึ่งขัดขวางการอัพโหลด) จ่ายไฟ Arduino ผ่านสาย USB (ฉันใช้หูดที่ผนัง USB)
หากคุณต้องการแก้ไขโค้ดตามที่คุณต้องการ นี่คือภาพรวมโดยย่อว่ามันทำงานอย่างไร: อินพุต MIDI จะถูกอ่านออกในทุกลูป ถ้าได้รับเหตุการณ์ Note On หรือ Note Off ฟังก์ชัน MyHandleNoteOn หรือ MyHandleNoteOff จะถูกเรียก ทั้งคู่เรียกฟังก์ชัน updateVelocityArray ซึ่งเก็บความเร็ว (เช่น ที่คุณกดคีย์) ของหมายเลขคีย์ หากความเร็วสูงกว่าที่เคยเก็บไว้ สีของ LED ที่สอดคล้องกันจะถูกตั้งค่าเป็น "สีปัจจุบัน" หลังจากจัดการเหตุการณ์ MIDI แล้ว ฟังก์ชัน updateLedArray จะถูกเรียก สิ่งนี้จะอัปเดต "สีปัจจุบัน" (ค่าสีแดง สีเขียว และสีน้ำเงินที่เปลี่ยนแปลงอย่างอิสระในลักษณะเชิงเส้น จนกว่าจะถึงปลายล่างหรือบน ซึ่งความเร็วสำหรับการเปลี่ยนแปลงเชิงเส้นถูกตั้งค่าเป็นตัวเลขสุ่ม) ลดความเร็วของโน้ตที่กดลงอย่างช้าๆ และอัปเดตค่าสีของ LED แต่ละดวงที่ต้องเปลี่ยนสี (เนื่องจากมีการกดโน้ตใหม่ หรือความเร็วลดลง) ฟังก์ชัน showLedArray ถ่ายโอนสีไปยังโครงสร้าง Adafruit_NeoPixel ที่เรียกว่า "พิกเซล" และทำให้ LED จริงแสดงสีในโครงสร้างพิกเซล
ขั้นตอนที่ 5: การปรับปรุงที่เป็นไปได้ …
โครงการไม่เคยเสร็จสิ้น มีบางสิ่งที่สามารถทำได้เพื่อปรับปรุงอยู่เสมอ:
- โปรโตชิลด์มีชิ้นส่วนเพียงไม่กี่ชิ้นเท่านั้นที่เสียจริง เราสามารถบรรลุผลเช่นเดียวกันได้อย่างง่ายดายด้วย Arduino Nano และ PCB ขนาด 15x7 รูรวมถึงส่วนหัวของพินตัวเมีย
- สัญญาณ MIDI บางส่วนหายไป หากเป็น NoteOn ไฟ LED ที่เกี่ยวข้องจะไม่สว่างขึ้น หากเป็น NoteOff มันจะไม่ดับ (นั่นคือสาเหตุที่ฉันแนะนำการลดความเร็ว ซึ่งทำให้แน่ใจได้ว่าไฟ LED จะไม่ติดตลอด) ฉันยังคงพยายามหาเหตุผล อาจเป็นปัญหาเรื่องเวลา และควรเรียก MIDI.read() บ่อยขึ้น
- สัญญาณ MIDI บางตัวอ่านผิด กล่าวคือ ไฟ LED ผิดจะสว่างขึ้น สามารถเชื่อมต่อกับจุดด้านบน จำเป็นต้องมีการสอบสวน
- วงจรได้รับการออกแบบมาเพื่อให้เอฟเฟกต์ภาพที่น่าพึงพอใจโดยไม่ต้องมีการโต้ตอบกับผู้ใช้มากนัก (นอกเหนือจากการเล่นคีย์บอร์ด) อย่างไรก็ตาม ฉันสามารถจินตนาการถึงการเพิ่มโพเทนชิออมิเตอร์ที่อ่านได้ (โดยใช้อินพุตแบบอะนาล็อกของ Arduino) ซึ่งคุณสามารถเปลี่ยนความเร็วสูงสุดที่สีจะเปลี่ยนไป (ปัจจุบัน #define'd เป็น MAX_COLOR_CHANGE_SPEED = 20) หรือวัดเวลาเฉลี่ยระหว่างสองเหตุการณ์ NoteOn และเปลี่ยน MAX_COLOR_CHANGE_SPEED ตามนั้น - ในเพลงช้า สีควรเปลี่ยนช้ากว่า
ขั้นตอนที่ 6: เสร็จแล้ว
จ่ายไฟ Arduino ผ่านสาย USB (ฉันใช้หูดที่ผนัง USB) เชื่อมต่อคีย์บอร์ด MIDI ของคุณเข้ากับแจ็ค MIDI แล้วเริ่มร็อกกิ้ง ดูฉันเปิดเพลงเบาๆหน่อย
แนะนำ:
เมทริกซ์ LED ที่ควบคุมโดย Google Assistant !: 7 ขั้นตอน (พร้อมรูปภาพ)
เมทริกซ์ LED ที่ควบคุมโดย Google Assistant !: ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีสร้างเมทริกซ์ LED ที่ควบคุมโดย Google Assistant ซึ่งคุณควบคุมรูปแบบได้ทุกที่โดยใช้สมาร์ทโฟน มาเริ่มกันเลย
เครื่องวัดอุณหภูมิ Nixie-tube ที่ควบคุมโดย Arduino: 14 ขั้นตอน
เครื่องวัดอุณหภูมิ Nixie-tube ที่ควบคุมโดย Arduino: เมื่อหลายปีก่อนฉันซื้อหลอด Nixie รุ่น IN-14 จากยูเครนและฉันก็วางมันไว้ตั้งแต่นั้นเป็นต้นมา ฉันต้องการใช้มันสำหรับอุปกรณ์ที่กำหนดเองเสมอ และฉันก็เลยตัดสินใจจัดการโครงการนี้ในที่สุด และสร้างบางสิ่งที่ใช้ประโยชน์จากสิ่งนี้เกือบ
ESP8266 RGB LED STRIP WIFI ควบคุม - NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi - RGB LED STRIP การควบคุมสมาร์ทโฟน: 4 ขั้นตอน
ESP8266 RGB LED STRIP WIFI ควบคุม | NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi | การควบคุมสมาร์ทโฟน RGB LED STRIP: สวัสดีทุกคนในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ nodemcu หรือ esp8266 เป็นรีโมท IR เพื่อควบคุมแถบ LED RGB และ Nodemcu จะถูกควบคุมโดยสมาร์ทโฟนผ่าน wifi โดยพื้นฐานแล้ว คุณสามารถควบคุม RGB LED STRIP ได้ด้วยสมาร์ทโฟนของคุณ
ไฟ LED ที่ควบคุมโดย Google Home: 8 ขั้นตอน
ไฟ LED ที่ควบคุมโดย Google Home: เมื่อเร็ว ๆ นี้ฉันมีเวลาว่างมาก ดังนั้นฉันจึงทำงานหลายโครงการ โปรเจ็กต์นี้จะช่วยให้คุณควบคุมไฟ LED RGB ผ่าน Google Home โดยใช้ Raspberry Pi ตอนนี้มีโปรเจ็กต์อยู่ 3 ส่วน คือ ตั้งค่า Raspberry Pi, setti
โครงสร้าง LED ที่ควบคุมโดย MIDI: 7 ขั้นตอน
โครงสร้าง LED ที่ควบคุมโดย MIDI: ในฐานะผู้รักเสียงเพลงอย่างแท้จริง และเป็นนักเรียนวิทยาศาสตร์อิเล็กทรอนิกส์และคอมพิวเตอร์ ฉันต้องการสร้างอุปกรณ์ MIDI มาโดยตลอด ที่ฉันสามารถใช้สำหรับการสร้างดนตรีอิเล็กทรอนิกส์ หลังจากเข้าร่วมการแสดงและเทศกาลดนตรีมากมาย ฉันเริ่ม เพื่อให้ได้รับความสนใจจริงๆ