DIY USB DJ Controller (7 / 16 stap)

Stap 7: Firmware


Opmerking: In deze stap ik gehecht standalone manifestatiecode voor de roterende encoder en MCP3008 SPI communicatie als een referentie. Dit is de code barebones voor elk type van input. Het verbazingwekkend hoe er zijn geen tutorials voor het gebruik van de MCP3008 met Arduino of Launchpad! Ik kan het maken van een Instructable gewoon dit uit te leggen...

Zoals eerder vermeld, heeft dit project twee verschillende microcontrollers waarmee verschillende besturingselementen in het circuit wordt beheerd. De primaire microcontroller is verantwoordelijk voor het lezen van input van 6 van de analoge besturingselementen, lezen de 5 knoppen interpretatie van de roterende encoder en zijn geïntegreerde drukknop en seriële data doorgeven van de secundaire microcontroller naar de computer. De secundaire microcontroller is verantwoordelijk voor SPI communicatie met de MCP3008 Analoog / Digitaal-Converter en interpreteren van de input van het toetsenbord-circuit (die bestaat uit het toetsenbord, de dek-switch of de modus-schakelaar). Deze ICs werken hand in hand om ons een veelzijdige besturingselementen!

You gonna moet een paar dingen de microcontrollers te programmeren.

Materialen:

Getting instellen

Als u niet hebt gebruikt/geïnstalleerd standaard IDE (TI van Code componist Studio) te programmeren uw Launchpad vóór, moet u de stuurprogramma's voor de Launchpad ophalen voordat de computer "ziet". Om krijgen in eerste instantie met behulp van Energia, Volg deze gids. Als het je eerste keer met behulp van Energia, beveel ik een paar van hun super eenvoudige demo programma's eerst uploaden en het allemaal uit te proberen. Het is zeer gemakkelijk en neemt niet veel tijd, zal ik wachten!

Wanneer u weerom daaruit worden, moeten we de toetsenbord-bibliotheek installeren. Het geschreven voor Arduino maar het werkt ook met Energia. Voor het installeren van de bibliotheek, Zoek uw Energia map (meestal in documenten) en uitpakken van de zip toetsenblok bibliotheek in de map Energia\libraries.

Zorg ervoor dat u Energia ingesteld op program een MSP430G2553 op een Launchpad, en hebt u de juiste COM-poort selecteren. Volg de gids hierboven te troep zulks opwaarts en uploaden van een demo-programma, zodat u weet dat het werkt!

Energia moet zijn allemaal ingesteld op program nu!

Inzicht in het Protocol

De microcontrollers communiceren met de computer met behulp van een aangepaste protocol die ik heb gemaakt. Het maakt gebruik van slechts twee-byte (16-bits) berichten te vertellen van de computergegevens over alle besturingselementen. Dit was in een poging om te bezuinigen op alle mogelijke latency en gewoon mijn bitsgewijze wiskunde om vaardigheden te oefenen. Merk op dat de ruwe seriële gegevens niet menselijk zijn leesbaar in de geringste! Een uitleg van het protocol is opgenomen in deze sectie, zodat u kunt begrijpen hoe alle code beter werkt. Je hoeft niet om deze sectie te lezen, maar het kan u helpen als u de naam wilt wijzigen van dit project.

Algemene indeling

Het algemene formaat voor alle berichten is als volgt:

[00000] | [0] | [0000000000]

ID Num | Type | Waarde

Het id-nummer vertelt ons wat controle het bericht heeft verzonden. Het type vertelt ons dat als het is een digitale (0) of analoge (1) controle. En de waarde is gewoon een ruimte voor het besturingselement te zetten welke boodschap moet sturen.

Analoog

Analoge berichten zijn super eenvoudig. Ze zijn opgemaakt als volgt:

[00000] | [1] | [0000000000]
ID Num | Type | 10-bits ADC waarde

Kijken bekend? Immers het is precies hetzelfde als een algemene boodschap, alleen het type bits zal altijd een 1 voor analoge besturingselementen. De ADCs die we overkomen met behulp van output 10-bits waarden, hoe handig!

Digitale

Digitale bedieningsfuncties zijn opgemaakt precies zoals analoge besturingselementen, behalve de type bits zal altijd een 0 voor digitale bedieningsfuncties. De waarde is alleen een boolean-waarde, het laatste stukje zal ofwel een 1 (voor digitale hoog) of een 0 (voor digitale laag).

Toetsenblok

Dit is waar het begint steeds een beetje ingewikkelder. Het toetsenbord moet communiceren van verscheidene verschillende waarden om op te werken naar behoren. Vanwege dit, zijn zijn berichten als volgt ingedeeld:

[00000] | [0] | [0000] | [00] | [0] | [00]

Id-nummer | Type | Sleutel-ID | Aan/uit | Modus | Dek | Don't Care

Het toetsenbord zal altijd een digitale bediening (type = 0). Het id-nummer van 0 is gereserveerd voor toetsenbord input, zodat de eerste 6 bits altijd [000000] voor toetsenbord berichten zullen. De volgende vier bits zijn het sleutel-id-nummer. Aangezien wij een 12-toets toetsenblok hebben, we gebruiken id-nummers 0 t/m 11. De resterende nummers kan echter worden gebruikt voor andere dingen, aangezien de hardware hen nooit als input ontvangt. Heb ik besloten om het gebruik van de sleutel-id-nummer 15 aan dek change-opdrachten (verzonden wanneer de dek-switch wordt gespiegeld). Hierdoor kunnen we de actieve dek en PFL met keuzeschakelaar van het dek instellen. De volgende bit vertelt gewoon ons als de knop is ingedrukt (aan) of losgelaten (uit). De volgende twee bits vertegenwoordigen de modus die is geselecteerd. Het varieert van 0 tot 2 (dus we moeten twee bits te vertegenwoordigen de modus). De volgende bit vertegenwoordigt het geselecteerde dek, dek 0 of 1 dek. De laatste twee bits, die we don't care over en zij zal niet worden geïnterpreteerd.

Roterende Encoder

De Rotary-Encoder is niet zo ingewikkeld, maar dat er ook een gereserveerde id-nummer van 1 voor digitale bedieningsfuncties heeft. De roterende encoder berichten zijn als volgt ingedeeld:

[00001] | [0] | [00] | [0] | [0000000]

Id-nummer | Type | Waarde | Super snelheid | Don't Care

Het id-nummer van de Rotary Encoder zal altijd 1 en het type zal altijd 0. De waarde heeft drie verschillende betekenissen, 0 betekent rechtsom draaien, 1 betekent een tegen de rotatie, en 2 betekent te dubbelklikken, 3 wordt niet gebruikt. De laatste 7 bits, die we don't care over en zij zal niet worden geïnterpreteerd.

Dat is allen daar is aan het! Het protocol is echt niet zo moeilijk te begrijpen. En het is een goede manier om te oefenen bitsgewijze mathvaardigheden en rekken de grenzen op hoe klein je van gegevenspakketten krijgen kunt. Ik besliste te gebruiken 5 bits voor het id-nummer, zodat het protocol tot 32 digitale ingangen en 32 analoge ingangen ondersteunen kan (5 ^ 2 = 32).

Gerelateerde Artikelen

DIY - USB-oscilloscoop IN een LUCIFERDOOSJE

DIY - USB-oscilloscoop IN een LUCIFERDOOSJE

Presenteer ik een "BEST OF CLASS", "Full-Featured" DIY-USB-oscilloscoop die "Echt DIY".Mijn doel is bedoeld als een goedkope digitale--geheugenoscilloscoop voor ontluikende ingenieurs, studenten en de Hobbyist.Deze USB-oscill
DIY Xbox 360 controller ontvanger met LinkIt ONE

DIY Xbox 360 controller ontvanger met LinkIt ONE

In dit Instructable, zal ik u vertellen hoe maak je een Xbox 360 controller-ontvanger, uw Xbox 360-controller verbinden met uw PC om spellen te spelen.Om dit te doen, hebt u de volgende items nodig:Xbox 360 phat ROL Raad van bestuurLinkIt één en de k
Maak een USB NES Controller

Maak een USB NES Controller

deze tutorial combineert een originele NES-controller, USB toetsenbord, draad en tact schakelaars in een USB NES controller geschikt voor gebruik met NES en arcade emulators. Het basisidee is dat de Keyboard controller-eenheid is geïnstalleerd in de
Maak uw eigen goedkope USB MIDI-Controller of toetsenbord

Maak uw eigen goedkope USB MIDI-Controller of toetsenbord

Ik was op zoek naar een USB MIDI controller-apparaat (of interface) voor muziek toepassingen zoals piano of orgel toetsenbord of pedalboard. Na wat onderzoek wilde ik gaan naar een meer "zelfgemaakte" oplossing. Mijn keuze is tenslotte gericht o
USB NES-controller met een arduino!

USB NES-controller met een arduino!

UPDATE 22-12-2014Instructables gebruiker mattpbooth heeft bijgewerkt de code en het is hosting op github:https://github.com/mattpbooth/ArduinoNESController...Matt bedankt!UPDATE 03-12-2011Een println vervangen met print (derp).UPDATE 01-12-2011Alle c
DIY USB koken Pan

DIY USB koken Pan

DIY USB koken Pan - Klik hier voor de meest populaire video's koken eieren met uw laptop. Controleer uw breakfeast op school.
Pro USB-DMX Controller en terminator voor QLC +

Pro USB-DMX Controller en terminator voor QLC +

Vandaag wil ik delen met u hoe maak je een professioneel uitziende USB DMX-controller te gebruiken met verlichting controlesoftware zoals QLC +. In ongeveer 5 tot 10 minuten en ongeveer $35 in delen en de scheepvaart.Dit project kan daadwerkelijk nee
USB SNES Controller

USB SNES Controller

eerste instructable. Laat me weten wat het nodig heeft en corrigeert.Ik maakte niet de circuit of programma. Ik ben gewoon het maken van een handleiding waarin stap voor stap montage van hoe maak je de USB SNES-controller. De originele pagina is hier
Het instellen van een USB NES-controller met NESTOPIA op de PC

Het instellen van een USB NES-controller met NESTOPIA op de PC

spelen NESTOPIA is niet hetzelfde zonder een NES USB-controller. In deze tutorial leert u hoe knoppen op de kaart en het instellen van de USB-NES CONTROLLER.
Professional USB Xbox controller

Professional USB Xbox controller

In dit instructable, ik ga u tonen hoe te maken van de meest professionele ogende USB Xbox controller. Nu, laten we naar het!Stap 1: Benodigdheden Bijna alles wat je nodig hebt is gecodeerd in de foto.U zult ook moeten:Schaar of mesHete lijmpistoolTa
Teensy MIDI USB-voet controller voor het beheersen van Mobius Looper

Teensy MIDI USB-voet controller voor het beheersen van Mobius Looper

Motivatie:Spelen in een band 2-delig, met de drums en een heleboel andere monsters wordt afgespeeld als backing tracks, ontstond een behoefte te gebruiken een looper meer elementen toevoegen aan de nummers. Een hardware gebaseerd looper mislukt in di
DIY USB laseraanwijzer

DIY USB laseraanwijzer

Hallo en welkom op mijn eerste ooit Instructable. Deze gaat een klein project, dus verwacht niet te veel van. Het is in principe gonna be wat de titel zegt: een klein laserpointer.(Kleine disclaimer: ik niet solderen of de buis krimpen goed gebruiken
DIY Modded PS3-Controller

DIY Modded PS3-Controller

twee nachten geleden ik zat te denken over hoe ik kon 'mod' mijn PS3-controller, zodat het beter en persoonlijker. Heb ik besloten om schroef rond met willekeurige dingen om te zien wat zou komen en... Zie! De machtige DIY sorta gamer's modded contro
DIY Synth + MIDI controller

DIY Synth + MIDI controller

Wilt u worden kundig voor zeggenschap uw DIY Synth met MIDI?Spelen met een toetsenbord of het volgnummer in uw favoriete Audio-editing software?Stap 1: BenodigdhedenHardware1 x DIY Synth-Kit1 x Arduino Uno1 x Usb kabel1 x 10 k ohm weerstand1 x 0.1uF