Indholdsfortegnelse:

MIDI2LED - en MIDI -kontrolleret LED Strip Light Effect: 6 trin
MIDI2LED - en MIDI -kontrolleret LED Strip Light Effect: 6 trin

Video: MIDI2LED - en MIDI -kontrolleret LED Strip Light Effect: 6 trin

Video: MIDI2LED - en MIDI -kontrolleret LED Strip Light Effect: 6 trin
Video: НАША ЖИЗНЬ ИЗМЕНИЛАСЬ ПОСЛЕ ПОЯВЛЕНИЯ ............ 2024, November
Anonim
MIDI2LED - en MIDI -kontrolleret LED Strip Light Effect
MIDI2LED - en MIDI -kontrolleret LED Strip Light Effect

Dette er min første instruerbare, så vær med mig.

Jeg elsker at lave musik, og i live situationer som stue-koncerter kan jeg lide det, når der er lyseffekter i synkronisering med det, jeg spiller. Så jeg byggede en Arduino-baseret boks, der får en LED-strimmel til at lyse i en tilfældig farve, da jeg ramte en note på mit MIDI-tastatur, og hvor jeg ramte noten.

Forbrugsvarer

  • Arduino Uno
  • Arduino protoshield
  • MIDI -stik
  • 1N4148 diode
  • 6N138 optokobling
  • modstande: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED -strip (60 lysdioder)
  • nogle resterende ledninger
  • varmekrympeslange
  • egnet kabinet til Arduino (jeg bruger en plastik forbindelsesboks)

Du får også brug for

  • loddejern og lodde
  • MIDI -tastatur og MIDI -kabel

Trin 1: Elektronikken

Elektronikken
Elektronikken

Kredsløbet er ret ligetil. Den består af en standard MIDI -indgang (til venstre for Arduino) og forbindelsen til LED -båndet (til højre for Arduino). Placer alle delene på protoshield, der er masser af plads. Det anbefales generelt at bruge en ekstern strømforsyning til at drive LED -stripen, men jeg fandt ud af, at når du spiller, er der kun få LED'er tændt på samme tid, så der var intet problem i at bruge Arduino +5V / GND som effekt. (Prøv at undgå at ramme alle taster på samme tid og med fuld hastighed.;-)) Hvis du beslutter dig for at bruge en ekstern strømforsyning, skal du blot slutte den til Arduino +5V og GND benene. Nogle mennesker anbefaler at indsætte en 100uF kondensator (ikke vist i skematisk) mellem disse to linjer.

Lod loddelene til protoshield, og tilslut LED -båndet som vist på skematisk.

Trin 2: Tilslutning af LED Strip

Tilslutning af LED Strip
Tilslutning af LED Strip

Det er vigtigt at tilslutte den højre ende - inputenden - af LED -båndet til kredsløbet. Min strip har et hunstik som input, og har små trekanter, der hele tiden peger væk fra input. Ved udgangen var der en hanstik (for at kunne tilslutte den til en anden strimmel, som vi ikke har brug for), så jeg skar den af og lod den til de tre kabler, der kom fra Arduino. Brug varmekrympeslange til at binde de tre kabler til LED -båndet sammen og gøre dem mindre synlige.

LED -strimlen, jeg brugte, leveres med tape på bagsiden, så den let kan limes på bagsiden af MIDI -tastaturet.

Trin 3: Tilpasning af projektet til dit tastatur

Tilpasning af projektet til dit tastatur
Tilpasning af projektet til dit tastatur
Tilpasning af projektet til dit tastatur
Tilpasning af projektet til dit tastatur

Du skal muligvis tilpasse LED -stripen og Arduino -koden til dit tastatur. Min har 76 taster, og længden af strimlen er næsten nøjagtigt tastaturets bredde. Hvis du har f.eks. 61 nøgler, har du muligvis brug for en kortere strimmel. LED -strimlen kan skæres mellem to lysdioder. Bare sørg for at afbryde den korrekte del, den har en indgangsende (med en hunstik) og en udgangsende (med en hanstik), du skal beholde inputenden. I koden skal du ændre #definer til

  • NUMBER_OF_LEDS til antallet af lysdioder, der er tilbage i din strimmel efter afskæring af enden,
  • NUMBER_OF_KEYS til antallet af taster på dit tastatur, og
  • MIN_KEY til MIDI -tonehøjden for din laveste nøgle. Du kan finde dette i tastaturets brugermanual; eller brug et værktøj, der viser MIDI -notenummeret, f.eks. KMidiMon til Linux eller Pocket MIDI til Windows eller Mac; eller prøv forskellige værdier, indtil enheden reagerer på alle tasterne på dit tastatur

Trin 4: Arduino -koden

Arduino -koden bruger MIDI -biblioteket (v4.3.1) af Forty Seven Effects og Adafruit NeoPixel -biblioteket (v1.3.4) af Adafruit. Installer disse biblioteker ved hjælp af Arduino IDE. Kompilér derefter koden og upload den til Arduino uden at skjoldet er tilsluttet (optokobleren er forbundet til RX -stiften, hvilket forhindrer upload). Tænd for Arduino via USB -kabel (jeg bruger en USB -vægvorte).

Hvis du gerne vil ændre koden til din smag, er her en kort oversigt over, hvordan den fungerer: I hver loop læses MIDI -input. Hvis der er modtaget en Note On eller Note Off -hændelse, kaldes funktionerne MyHandleNoteOn eller MyHandleNoteOff til. De kalder begge funktionen updateVelocityArray, som gemmer hastigheden (dvs. hvor hårdt du har ramt tasten) for nøgletallet. Hvis hastigheden er højere end den, der blev gemt før, indstilles farven på den tilsvarende LED til den "aktuelle farve". Efter at MIDI -hændelserne er blevet håndteret, kaldes funktionen updateLedArray. Dette opdaterer den "aktuelle farve" (hvis røde, grønne og blå værdier ændres uafhængigt på en lineær måde, indtil den nedre eller øvre ende er nået, på hvilket tidspunkt hastigheden for den lineære ændring er indstillet til et tilfældigt tal), reducerer langsomt hastigheden på de pressede toner og opdaterer farveværdierne for hver LED, der skal ændre dens farve (på grund af et nyt notat hit eller reduktion af hastigheden). Funktion showLedArray overfører farverne til Adafruit_NeoPixel -strukturen kaldet "pixels" og får de faktiske lysdioder til at vise farverne i pixelstrukturen.

Trin 5: Mulige forbedringer …

Et projekt er aldrig færdigt. Der er altid noget, der kan gøres for at forbedre det:

  • Protoshield indeholder så få dele, at det virkelig er spild; man kunne let opnå den samme effekt med en Arduino Nano og et 15x7 hullers printkort plus nogle kvindelige pinhoveder.
  • Nogle af MIDI -signalerne går tabt. Hvis det er en NoteOn, lyser den tilsvarende LED ikke; hvis det er en NoteOff, vil den ikke slukke (derfor introducerede jeg hastighedsreduktionen, hvilket sikrer, at lysdioder ikke forbliver tændt på ubestemt tid). Jeg forsøger stadig at finde ud af årsagen. Det er muligvis et problem med timing, og MIDI.read () burde kaldes oftere.
  • Nogle af MIDI -signalerne læses forkert, dvs. de forkerte lysdioder lyser. Kan være forbundet med ovenstående punkt. Kræver lidt undersøgelse.
  • Kredsløbet er designet til at give en behagelig visuel effekt uden meget brugerinteraktion (bortset fra at spille på tastaturet). Jeg kunne dog forestille mig at tilføje et potentiometer, der læses op (ved hjælp af en af Arduino's analoge indgange), hvormed du kan ændre den maksimale hastighed, hvormed farverne ændres (i øjeblikket #defineret som MAX_COLOR_CHANGE_SPEED = 20). Eller mål den gennemsnitlige tid mellem to NoteOn -begivenheder, og ændr MAX_COLOR_CHANGE_SPEED i overensstemmelse hermed - i langsomme sange bør farven ændre sig langsommere.

Trin 6: Udført

Tænd for Arduino via USB -kabel (jeg bruger en USB -vægvorte). Tilslut dit MIDI -tastatur til MIDI -stikket, og begynd rockin '. Se mig spille lidt let musik (ordspil, så slemt som det er bestemt).

Anbefalede: