MIDI2LED - MIDI კონტროლირებადი LED ზოლის სინათლის ეფექტი: 6 ნაბიჯი
MIDI2LED - MIDI კონტროლირებადი LED ზოლის სინათლის ეფექტი: 6 ნაბიჯი
Anonim
MIDI2LED - MIDI კონტროლირებადი LED ზოლის სინათლის ეფექტი
MIDI2LED - MIDI კონტროლირებადი LED ზოლის სინათლის ეფექტი

ეს არის ჩემი პირველი სასწავლებელი, ასე რომ მოითმინე.

მე მიყვარს მუსიკის შექმნა და ცოცხალ სიტუაციებში, როგორიცაა მისაღები ოთახის კონცერტები, მე მომწონს, როდესაც სინათლის ეფექტები სინქრონიზებულია იმასთან, რასაც მე ვთამაშობ. ასე რომ, მე ავაშენე Arduino– ზე დაფუძნებული ყუთი, რომელიც LED ზოლს ანათებს შემთხვევითი ფერით, როდესაც ჩემს MIDI კლავიატურაზე შენიშვნა მოხვდა და სადაც შენიშვნა მოხვდა.

მარაგები

  • არდუინო უნო
  • არდუინო პროტოშილდი
  • MIDI ბუდე
  • დიოდი 1N4148
  • 6N138 ოპტო შემაერთებელი
  • რეზისტორები: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED ზოლები (60 LED)
  • ზოგიერთი დარჩენილი მავთული
  • სითბოს შემცირების მილები
  • Arduino– ს შესაფერისი გარსაცმები (მე ვიყენებ პლასტმასის ყუთს)

თქვენ ასევე დაგჭირდებათ

  • soldering რკინის და solder
  • MIDI კლავიატურა და MIDI კაბელი

ნაბიჯი 1: ელექტრონიკა

ელექტრონიკა
ელექტრონიკა

წრე საკმაოდ მარტივია. იგი შედგება სტანდარტული MIDI შეყვანისგან (არდუინოს მარცხნივ) და კავშირი LED ზოლთან (არდუინოს მარჯვნივ). განათავსეთ ყველა ნაწილი პროტოშიდზე, იქ არის ბევრი სივრცე. ზოგადად რეკომენდირებულია გამოიყენოთ გარე კვების ბლოკი LED ზოლის გასაძლიერებლად, მაგრამ აღმოვაჩინე, რომ როდესაც თამაშობთ, მხოლოდ რამდენიმე LED არის ჩართული ერთდროულად, ასე რომ იყო არ არის პრობლემა Arduino +5V / GND ენერგიის გამომუშავებაში. (შეეცადეთ თავიდან აიცილოთ ყველა კლავიშის დარტყმა ერთდროულად და სრული სიჩქარით.;-)) თუ გადაწყვეტთ გარე კვების ბლოკის გამოყენებას, უბრალოდ შეაერთეთ იგი Arduino +5V და GND ქინძისთავებთან. ზოგი გირჩევთ ჩასვათ 100uF კონდენსატორი (სქემატურად არ არის ნაჩვენები) ამ ორ ხაზს შორის.

შეაერთეთ ნაწილები პროტოშილდზე და შეაერთეთ LED ზოლები, როგორც ეს მოცემულია სქემატურად.

ნაბიჯი 2: LED ზოლის დაკავშირება

LED ზოლის დაკავშირება
LED ზოლის დაკავშირება

მნიშვნელოვანია LED ზოლის მარჯვენა ბოლო - შეყვანის ბოლო - წრედთან დაკავშირება. ჩემს ზოლს აქვს შესასვლელი ქალი კონექტორი და აქვს პატარა სამკუთხედები, რომლებიც მთელ მანძილზე მიუთითებს შეყვანისგან. გამოსასვლელში იყო მამრობითი კონექტორი (რომ შევძლოთ მისი დაკავშირება სხვა ზოლზე, რაც ჩვენ არ გვჭირდება), ამიტომ გავთიშე და შევაერთე არდუინოდან მომავალი სამი კაბელი. გამოიყენეთ სითბოს შესამცირებელი მილები, რომ სამი კაბელი შეუერთოთ LED ზოლს და გახადოთ ისინი ნაკლებად ხილული.

LED ზოლს, რომელსაც მე ვიყენებ, უკანა მხარეს აქვს წებოვანი ლენტი, ასე რომ ის ადვილად შეიძლება იყოს მიმაგრებული MIDI კლავიატურის უკანა მხარეს.

ნაბიჯი 3: პროექტის ადაპტირება თქვენს კლავიატურაზე

პროექტის ადაპტირება თქვენს კლავიატურაზე
პროექტის ადაპტირება თქვენს კლავიატურაზე
პროექტის ადაპტირება თქვენს კლავიატურაზე
პროექტის ადაპტირება თქვენს კლავიატურაზე

შეიძლება დაგჭირდეთ LED ზოლის და Arduino კოდის ადაპტირება თქვენს კლავიატურაზე. ჩემსას აქვს 76 ღილაკი, ხოლო ზოლის სიგრძე თითქმის ზუსტად კლავიატურის სიგანეა. თუ გაქვთ მაგ. 61 გასაღები, შეიძლება დაგჭირდეთ უფრო მოკლე ზოლები. LED ზოლები შეიძლება გაიჭრას ნებისმიერ ორ LED- ს შორის. უბრალოდ დარწმუნდით, რომ თქვენ წყვეტთ სწორ ნაწილს, მას აქვს შეყვანის დასასრული (მდედრობითი კონექტორით) და გამომავალი დასასრული (მამრობითი კონექტორით), თქვენ უნდა შეინარჩუნოთ შეყვანის დასასრული. კოდში შეცვალეთ #განმარტებები ამისთვის

  • NUMBER_OF_LEDS იმ რაოდენობის LED- ებამდე, რომელიც დარჩა თქვენს ზოლში ბოლომდე გათიშვის შემდეგ,
  • NUMBER_OF_KEYS თქვენს კლავიატურაზე არსებული კლავიშების რაოდენობაზე და
  • MIN_KEY თქვენი ყველაზე დაბალი გასაღების MIDI მოედანზე. თქვენ შეგიძლიათ იპოვოთ ეს კლავიატურის მომხმარებლის სახელმძღვანელოში; ან გამოიყენეთ ინსტრუმენტი, რომელიც აჩვენებს MIDI შენიშვნის ნომერს, როგორიცაა KMidiMon Linux– ისთვის, ან Pocket MIDI Windows– ისთვის ან Mac– ისთვის; ან სცადეთ განსხვავებული მნიშვნელობები, სანამ მოწყობილობა არ პასუხობს თქვენს კლავიატურაზე არსებულ ყველა ღილაკს

ნაბიჯი 4: Arduino კოდი

Arduino კოდი იყენებს MIDI ბიბლიოთეკას (v4.3.1) ორმოცდაშვიდი ეფექტის მიხედვით და Adafruit NeoPixel ბიბლიოთეკას (v1.3.4) Adafruit. დააინსტალირეთ ეს ბიბლიოთეკები Arduino IDE გამოყენებით. შემდეგ შეადგინეთ კოდი და ატვირთეთ Arduino– ში ფარის მიერთების გარეშე (ოპტოქუპლერი დაკავშირებულია RX პინთან, რაც აფერხებს ატვირთვას). ჩართეთ Arduino USB კაბელის საშუალებით (მე ვიყენებ USB კედლის მეჭეჭს).

თუ გსურთ შეცვალოთ კოდი თქვენი სურვილისამებრ, აქ არის მოკლე მიმოხილვა, თუ როგორ მუშაობს იგი: ყველა მარყუჟში MIDI შეყვანა იკითხება. თუ შენიშვნა ჩართულია ან შენიშვნა გამორთულია, მიღებულია MyHandleNoteOn ან MyHandleNoteOff ფუნქციები. ისინი ორივე ეძახიან updateVelocityArray ფუნქციას, რომელიც ინახავს საკვანძო ნომრის სიჩქარეს (ანუ რამდენად ძლიერად მოხვდა გასაღები). თუ სიჩქარე უფრო მაღალია, ვიდრე ადრე იყო შენახული, შესაბამისი LED- ის ფერი დაყენებულია "მიმდინარე ფერიზე". მას შემდეგ, რაც MIDI მოვლენები დამუშავდება, ეწოდება ფუნქციას updateLedArray. ეს განაახლებს "ამჟამინდელ ფერს" (რომლის წითელი, მწვანე და ლურჯი მნიშვნელობები დამოუკიდებლად იცვლება ხაზოვანი გზით, ქვედა ან ზედა ბოლომდე მიღწევამდე, რომლის დროსაც წრფივი ცვლილების სიჩქარე დადგენილია შემთხვევით რიცხვზე), ნელ -ნელა ამცირებს დაჭერილი ნოტების სიჩქარეს და განაახლებს თითოეული LED- ის ფერის მნიშვნელობებს, რომლებმაც უნდა შეცვალონ ფერი (ახალი ნოტის დარტყმის გამო, ან სიჩქარის შემცირების გამო). ფუნქცია showLedArray გადააქვს ფერები Adafruit_NeoPixel სტრუქტურაში სახელწოდებით "პიქსელი" და აიძულებს რეალურ LED- ებს აჩვენოს ფერები პიქსელების სტრუქტურაში.

ნაბიჯი 5: შესაძლო გაუმჯობესება…

პროექტი არასოდეს დასრულებულა. ყოველთვის არის რაღაც, რისი გაკეთებაც შესაძლებელია მისი გასაუმჯობესებლად:

  • პროტოშილდი იმდენად მცირე ნაწილს შეიცავს, რომ ის მართლაც ნარჩენებია; ერთი და იგივე ეფექტის მიღწევა შესაძლებელია Arduino Nano– ით და 15x7 ხვრელით PCB– ით პლუს რამდენიმე ქალი სათაურით.
  • ზოგიერთი MIDI სიგნალი იკარგება. თუ ეს არის NoteOn, შესაბამისი LED არ ანათებს; თუ ის NoteOff- ია, ის არ გამოვა (ამიტომაც შემოვიღე სიჩქარის შემცირება, რაც უზრუნველყოფს LED- ების უსასრულოდ დარჩენას). მე მაინც ვცდილობ გაერკვია მიზეზი. შესაძლოა ეს დროის საკითხია და MIDI.read () უფრო ხშირად უნდა დარეკონ.
  • ზოგიერთი MIDI სიგნალი არასწორად არის წაკითხული, ანუ არასწორი LED ნათურები ანათებს. შეიძლება დაკავშირებული იყოს ზემოთ მოცემულ პუნქტთან. სჭირდება გარკვეული გამოძიება.
  • წრე შექმნილია იმისთვის, რომ მისცეს სასიამოვნო ვიზუალური ეფექტი მომხმარებლის დიდი ურთიერთქმედების გარეშე (კლავიატურის დაკვრის გარდა). თუმცა, მე წარმომიდგენია წაკითხული პოტენომეტრის დამატება (არდუინოს ერთ -ერთი ანალოგური შეყვანის გამოყენებით), რომლითაც შეგიძლიათ შეცვალოთ ფერების შეცვლის მაქსიმალური სიჩქარე (ამჟამად #განსაზღვრულია როგორც MAX_COLOR_CHANGE_SPEED = 20). ან გაზომეთ საშუალო დრო ორ მოვლენას შორის და შეცვალეთ შესაბამისად MAX_COLOR_CHANGE_SPEED - ნელ სიმღერებში ფერი უფრო ნელა უნდა შეიცვალოს.

ნაბიჯი 6: შესრულებულია

ჩართეთ Arduino USB კაბელის საშუალებით (მე ვიყენებ USB კედლის მეჭეჭს). შეაერთეთ თქვენი MIDI კლავიატურა MIDI ჯეკთან და დაიწყეთ როკინგი. მიყურეთ როგორ ვთამაშობ ოდნავ მსუბუქ მუსიკას (მიზანმიმართულად, როგორც ცუდია).

გირჩევთ: