Taula de continguts:

HX1-DM: la bateria de bricolatge Powered Arduino DUE reciclada (fabricada amb un Dead Maschine MK2): 4 passos
HX1-DM: la bateria de bricolatge Powered Arduino DUE reciclada (fabricada amb un Dead Maschine MK2): 4 passos

Vídeo: HX1-DM: la bateria de bricolatge Powered Arduino DUE reciclada (fabricada amb un Dead Maschine MK2): 4 passos

Vídeo: HX1-DM: la bateria de bricolatge Powered Arduino DUE reciclada (fabricada amb un Dead Maschine MK2): 4 passos
Vídeo: Annie Lennox - I Put A Spell On You (Live) 2024, Desembre
Anonim
Image
Image
La reparació
La reparació

L’espec

  • Controlador Midi híbrid / bateria: alimentat per Arduino DUE.
  • 16 coixinets de detecció de velocitat amb latència molt baixa de 1> ms
  • Usuari de 8 comandaments assignables a qualsevol ordre Midi #CC
  • Seqüenciador incorporat de 16 canals (no cal ordinador !!)
  • Funcionalitat MIDI in / out / thru (es pot utilitzar com a interfície midi USB!)
  • Rellotge MIDI parcial i suport MTC (treballant en control MMC i DAW)

Sens dubte, aquest és un dels projectes més complicats en què he treballat, parlava de 17 registres de desplaçament de sortida, 6 registres de desplaçament d’entrada, multiplexors de 2 x 16 canals que treballen en una placa de circuit. amb registres de desplaçament / multiplexors abans …

Va començar com una compra impulsiva a eBay, realment volia una màquina Native Instruments perquè sempre m’han agradat les pastilles de bateria que hi havia en comparació amb les de l’estudi MPC que tenia, de manera que quan vaig veure-ne un defectuós a eBay per 40 lliures esterlines, vaig pensar Donaria una oportunitat a solucionar-ho, amb el pitjor dels casos: "Si no puc solucionar-ho, tinc un Arduino DUE i hi ha uns quants UNO estirats, sempre podria fer algun hack"

De totes maneres, m'agraden molt aquestes bateries !!!!

Subministraments

1 x Native Instruments Maschine MK2 defectuós

1 x Arduino Due.

17 x SN74HC595’s: registres de desplaçament de sortida de 8 bits

6 x SN74HC165’s: registres de desplaçament d’entrada de 8 bits

2 x 74HC4067: multiplexors de 16 canals.

Pantalles OLED de 2 x 3,2”de 256x64.

una mica de cable pla (el cable de disquet vell farà)

Pas 1: la reparació

El venedor d'eBay va tenir l'amabilitat de donar-se una idea de què podia esperar a la descripció i va eliminar el port USB. La junta havia patit un sobretensió i no es va encendre. Cue el multímetre…. El tauler semblava tenir un curt.. "Ja he reparat innombrables plaques base amb pantalons curts. Què tan difícil pot ser??". Va resultar que aquesta sobretensió (i probablement en part el disseny de la placa), havia tret gairebé TOTS component de la placa que inclou la CPU principal. Aquest tauler estava molt malament!

Vaig continuar produint i punxant amb el meu multímetre, vaig investigar una mica sobre els components i vaig descobrir què fa cadascun, a més de que NI va fer un gran treball fent les coses bastant evidents amb els diversos punts de prova al voltant de la placa base ??.

Pas 2: el hack

El Hack
El Hack
El Hack
El Hack
El Hack
El Hack

Sabent que hauré de substituir tot el que sigui la barra principal de la CPU (que no serà necessària), em vaig adreçar a eBay. Gràcies a tot el que necessitava era barat, de manera que demanar-ne un munt era divertit. ?

17 x SN74HC595’s: registres de desplaçament de sortida de 8 bits

Els 17 registres de desplaçament de sortida s’utilitzen per controlar els LED multicolors de la bateria i tots els LED de botons (136 per ser exactes !!) Aquests són realment fàcils d’utilitzar i van trobar ràpidament una biblioteca que utilitza l’IDE Arduino per estalviar-me fent un.. estan encadenats.

6 x SN74HC165’s: registre de desplaçament d’entrada de 8 bits

Aquests registres de desplaçament d’entrada són ideals per a diverses entrades en 1 canal. Hi ha 48 botons en total.

2 x 74HC4067: multiplexors de 16 canals

Ens queden 16 coixinets i 8 poms que també són analògics. Em va semblar més fàcil utilitzar-los, ja que els que hi havia al tauler eren de 8 canals i vaig tenir problemes per trobar on connectar els pins de dades … cue spaghetti junction ….

Pantalles OLED de 2 x 3,2”de 256x64

Ha de tenir algunes pantalles !!! No vaig trobar cap informació a les pantalles LCD originals que venien a la màquina NI i no em podia molestar perdre el temps provant, així que vaig decidir demanar-ne una de la Xina … Vaig fer servir la biblioteca UG8x8 per fer-les funcionar. Les noves pantalles eren lleugerament més petites que l'original, de manera que acabo de deixar de banda els "trossos dolents".

1 x Arduino Due

Vaig tenir això estirat durant un temps esperant un projecte prou digne per a tot aquest poder !! Hi ha hagut un problema, sembla que algunes revisions d'aquestes taules tenen un problema de restabliment que significava que de vegades havia de prémer el botó de restabliment per executar el missatge després de penjar un esbós. Això es va solucionar fàcilment amb una resistència de 10K (hi ha una publicació al fòrum Arduino sobre això).

Pas 3: el codi

Em va impressionar molt la quantitat de suport que hi ha a la comunitat Arduino, trobar exemples de codi i biblioteques per als diferents components va ser molt senzill i senzill.

Posar en funcionament el midi USB va ser fàcil i va trigar uns minuts. Els LED van trigar una mica i vaig haver de crear un esbós que ajustés incrementalment cada pin HIGH en intervals d’1 segon i vaig prendre una nota.. Vaig fer un array que contenia els números PIN per facilitar-lo a l’hora de codificar tot.

Vaig fer 2 llibreries per parlar amb els multiplexors, una maneja els coixinets analògics i l’altra els comandaments. De nou, això va ser realment senzill. Els he adjuntat, no dubteu a utilitzar editar, etc.

Volia tenir un seqüenciador i la possibilitat de gravar sense la necessitat d'un ordinador, vaig trobar informació sobre com convertir BPM a ms i vaig trobar una gran biblioteca de temporitzadors Arduino DUE.

Mitjançant la biblioteca del temporitzador vaig poder configurar les entrades de lectura i les coses a intervals:

Coixinets @ 1ms: he trobat això per oferir el millor equilibri entre els artefactes de resposta o de rebot.

Buttons @ 40ms: he utilitzat una biblioteca de cues de manera que no heu perdut cap premsa.

El processament es realitza al bucle principal; no es pot fer massa quan es produeix una interrupció, ja que bloquejarà l’Arduino.

Midi stuff @BPM (en ms): per a la seqüenciació, en el BPM desitjat, es diu una funció que actualitza les notes ETC que es reprodueixen i augmenta el comptador de ritmes.

Pas 4: Conclusió

Conclusió
Conclusió

No estic segur del que he fet aquí, però estic molt orgullós, les pastilles responen excel·lentment, vaig haver de jugar amb el moment per obtenir un equilibri adequat amb problemes de capacitat de resposta i de rebot. La seqüenciació funciona molt bé i, un cop comprovat el suport de DAW, puc integrar completament aquesta cosa al meu flux de treball i puc afegir coses a un controlador que sempre he volgut. Va ser un projecte molt divertit i un exercici fantàstic. a l’hora d’afrontar C, entendre l’enginyeria inversa i com funcionen els multiplexors, els registres de desplaçament i la seqüenciació MIDI. Continuo millorant el codi principal i és possible que el publiqui algun dia com a dissenyador de ritme de codi obert.

CONSELLS:

He trobat com canviar el nom USB del DUE editant un dels fitxers de capçalera de la carpeta Arduino / SAM.

MIDI-OX és una gran eina per provar la funcionalitat Midi

ENLLAÇOS:

www.usb.org/sites/default/files/midi10.pdf - USB MIDI Spechttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi … Alguna informació sobre com convertir BPM a ms

travis-ci.com/SMFSW/Queue - Per a les entrades de botons perquè no ens perdin les pulsacions.

github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8 lib per a pantalles LED / LCD

github.com/ivanseidel/DueTimer/releases - Arduino DUE Timing lib

www.pjrc.com/teensy/td_libs_Encoder.html - Lib codificador per al comandament gran

shiftregister.simsso.de/ - ShiftIn Register lib - Creat per Henrik Heine, 24 de juliol de 2016

forum.arduino.cc/index.php?topic=57636.0 - Codi de temps MIDI

Recomanat: