DIY USB DJ Controller (7 / 16 steg)

Steg 7: Firmware



Obs: Om detta steg bifogade jag fristående demonstrationen koden för rotationsencoder och MCP3008 SPI kommunikation som referens. Detta är barebones koden för varje typ av ingång. Det är fantastiskt hur det finns ingen tutorials för att använda MCP3008 med Arduino eller Launchpad! Jag får göra en Instructable bara för att förklara detta...

Som nämnts tidigare, har detta projekt två olika mikrokontroller som hanterar olika kontroller i kretsen. Primära mikrokontroller är ansvarig för att läsa indata från 6 analoga kontroller, läsa 5 knapparna, tolkning av rotary encoder och dess integrerad tryckknapp och passerar seriella data från sekundära mikrokontroller till datorn. Sekundära mikrokontroller ansvarar för SPI kommunikation med MCP3008 Analog-till-Digital-omvandlare och tolka indata från tangentbordet kretsen (som består av knappsatsen, växeln däck och inställningsreglaget). Dessa ICs arbetar hand i hand för att ge oss olika kontroller!

Du kommer att behöva ett par saker att programmera microcontrollers.

Material:

Att få ställa in

Om du inte har använt/installerat standard IDE (TI: s kod kompositör Studio) att programmera din Launchpad innan, måste du få drivrutiner för startfönstret i innan datorn kommer att "se" det. Man får ställa upp inledningsvis med Energia, följa denna guide. Om det är första gången du använder Energia, rekommenderar jag ladda upp ett par av deras super enkel demo program först och försöka lura ut allt. Det är mycket lätt och tar inte mycket tid, jag ska vänta!

När du kommer tillbaka från det, måste vi installera knappsatsen biblioteket. Den är skriven för Arduino men det fungerar med Energia också. Installera biblioteket, hitta mappen Energia (vanligtvis i dokument) och extrahera knappsatsen bibliotek zip till mappen Energia\libraries.

Kontrollera att du har Energia inrättas för att programmera en MSP430G2553 på en Launchpad, och att du har den rätt COM-port väljer du. Följ guiden ovan för att ställa in det och ladda upp en demo program så att du vet att det fungerar!

Energia bör vara redo att programmera nu!

Förstå protokollet

Microcontrollers kommunicera med datorn via ett eget protokoll som jag gjorde. Den använder endast två byte (16-bitars) meddelanden för att berätta computern informationen om alla kontroller. Detta var i ett försök att skära ner på alla möjliga fördröjning och bara att öva min bitvis matematiska färdigheter. Observera att raw-seriell data inte är mänskligt läsbara i det minsta! En förklaring i protokollet ingår i detta avsnitt så du kan förstå hur all kod fungerar bättre. Du behöver inte läsa detta avsnitt men det kan hjälpa dig om du vill ändra detta projekt.

Allmänt Format

Det allmänna formatet för alla meddelanden är följande:

[00000] | [0] | [0000000000]

ID-Num | Typ | Värde

ID-numret berättar vilken kontroll har skickat meddelandet. Typen berättar om det är en digital (0) eller analoga (1) kontroll. Värdet är bara en plats för att kunna sätta vad den behöver för att skicka meddelande.

Analog

Analoga meddelanden är superenkel. De är formaterade enligt följande:

[00000] | [1] | [0000000000]
ID-Num | Typ | 10-bitars ADC värde

Bekant ut? Det beror på att det är exakt samma som ett allmänt meddelande, bara de typ lite kommer alltid vara en 1 för analoga kontroller. ADCs vi råkar använda 10-bitars produktionsvärden, hur bekvämt!

Digitala

Digitala kontroller är formaterade precis som analoga kontroller, utom de typ lite kommer alltid vara 0 för digitala kontroller. Värdet är bara ett booleskt värde, sista biten kommer antingen vara en 1 (för digital hög) eller 0 (för digital låg).

Knappsatsen

Det är där det börjar få en lite mer komplicerad. Knappsatsen behöver kommunicera flera olika värden för att fungera korrekt. På grund av detta formateras dess meddelanden enligt följande:

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

ID-nummer | Typ | Nyckel-ID | On/Off | Läge | Däck | Bryr mig inte

Knappsatsen kommer alltid att vara en digital kontroll (typ = 0). ID-nummer för 0 är reserverad för knappsatsen input så de första 6 bitarna blir alltid [000000] för knappsatsen meddelanden. De nästa fyra bitarna är nyckel-ID-numret. Eftersom vi har en 12-knappen knappsats, använder vi ID-nummer 0 till 11. Återstående numren kan dock användas för andra saker eftersom hårdvaran kommer aldrig att få dem som insatsvaror. Jag beslutade att använda nyckel-ID nummer 15 att ange däck ändra kommandon (skickas när växeln däck är vänt). Detta tillåter oss att ställa in aktiva däck och PFL med omkopplaren däck. Den nästa bit berättar bara om knappen intryckt (på) eller släppt (off). De nästa två bitarna representerar det läge som var utvald. Det varierar från 0 till 2 (alltså vi behöver två bitar att representera läget). Den nästa bit representerar den valda däcket, däck 0 eller däck 1. De sista två bitarna vi inte bryr oss om och de kommer inte tolkas.

Rotary Encoder

Rotary Encoder är inte så komplicerat, men notera att det också har ett reserverat ID-nummer 1 för digitala kontroller. Rotationsencoder meddelanden formateras enligt följande:

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

ID-nummer | Typ | Värdet | Super hastighet | Bryr mig inte

ID-numret för Rotary Encoder är alltid 1 och typ alltid kommer att vara 0. Värdet har tre olika betydelser, 0 innebär Medsols rotation, 1 betyder moturs rotation, och 2 innebär ett dubbelklick, 3 används inte. De sista 7 bitarna vi inte bryr oss om och de kommer inte tolkas.

Det är allt det finns det! Protokollet är egentligen inte så svårt att förstå. Och det är ett bra sätt att öva bitvis matematiska färdigheter och tänja gränser på hur liten kan du få datapaket. Jag beslutade att använda 5 bitar för ID-nummer så att protokollet kan stödja upp till 32 digitala ingångar och 32 analoga ingångar (5 ^ 2 = 32).

Se Steg
Relaterade Ämnen

DIY - USB-OSCILLOSKOP i en TÄNDSTICKSASK

Jag presentera en "Bäst i KLASSEN", "Fullfjädrad" DIY-USB-OSCILLOSKOP som är "Verkligt DIY".Mitt mål är att ge en billig Digital-lagring-oscilloskop för studenter, blivande ingenjörer och hobby.Denna USB-oscilloskop kunde var...

Gör en USB-NES Controller

denna tutorial kombinerar en ursprungliga NES controller, USB-tangentbord, tråd och takt växlar till en USB NES controller lämplig för använda med NES och arcade emulatorer. Den grundläggande idén är att den tangentbord controller-enheten är installe...

DIY USB-matlagning Pan

DIY USB-matlagning Pan - Klicka här för de mest populära videorna matlagning ägg med din bärbara. Gör din mat i skolan....

USB fot controller/looper

Hej alla,Jag spelar gitarr och jag datormusik på Ableton Live. Denna programvara har en looper, men det är inte så effektiv och jag behövde något bättre att spela... Därför började jag bygga en USB-foten styrenhet med billiga tyger!Kontrollera följan...

USB-SNES Controller

första instructable. Låt mig veta vad den behöver och fixar.Jag gjorde inte det krets eller program. Jag gör bara en guide som visar steg för steg montering av hur man gör USB SNES controller. Den ursprungliga sidan finns här:www.raphnet.net/electron...

Lätt USB Massage Controller

i detta Instructable jag berätta hur du sätter en Playstation controller till en USB-massage styrenhet att slappna av kroppen genom vibrationer.När du spelar spel på Playstation har du nog märkt en kort vibration inuti registeransvarige.Detta orsakas...

Pro USB DMX Controller och terminator för QLC +

Idag vill jag dela med dig hur man gör en professionell letar USB DMX-controller att använda med belysning styrprogram som QLC +. I ungefär 5-10 minuter och ca $35 i delar och sjöfart.Detta projekt kan faktiskt ta mindre tid för dig att tävla än det...

Professional USB Xbox controller

I detta instructable, jag ska visa dig hur man gör mest professionella ser USB Xbox-handkontrollen. Nu, låt oss få till det!Steg 1: Vad du behöver Nästan allt du behöver är Taggad i bilden.Du behöver också:Sax eller knivLimpistolTång eller en hammare...

USB NES controller med en arduino!

UPPDATERING 22-12-2014Instructables användare mattpbooth har uppdaterat koden och är värd det på github:https://github.com/mattpbooth/ArduinoNESController...Tack Matt!UPPDATERING 2011-03-12Ersatte en println med tryck (derp).UPPDATERING 2011-01-12Omg...

Hur du ställer in en USB NES controller med NESTOPIA på PC

spela NESTOPIA är inte detsamma utan en NES USB-styrenhet. I denna tutorial får du lära dig att kartlägga knappar och ställa in USB-NES CONTROLLER....

Gör din egen billiga USB-MIDI-Controller eller tangentbord

Jag letade efter en USB MIDI-controller-enheten (eller gränssnitt) för musikprogram som piano eller orgel tangentbord eller pedalboard. Efter en del forskning ville jag gå till en mer "hemlagad" lösning. Mitt val har äntligen varit inriktad på e...

DIY Xbox 360 controller mottagaren med en LinkIt

I detta Instructable, kommer att jag berätta hur man gör en Xbox 360 controller-mottagare att ansluta din Xbox 360-handkontrollen till din dator för att spela spel.För att göra detta, behöver du följande:Xbox 360 phat ROL styrelseLinkIt en och dess k...

Teensy MIDI USB foten controller för att styra Mobius Looper

Motivation:Spelar i en 2 piece band, med trummor och massor av andra prover som spelas upp som bakgrundsspår, fanns det ett behov av att använda en looper för att lägga i fler element till spåren. En hårdvarubaserad looper misslyckas i detta avseende...

DIY USB-Android laddare

Denna Nokia laddare liggande i min skräppost som tråd hade knäppte från mitten men jag tänkte att laddaren fungerar.Jag öppnade upp och med hjälp av några heta kniv jag smält plast av höljet till göra en skåra för (kvinnliga USB-kontakten) och limmas...

DIY Modded PS3 Controller

två nätter sedan jag tänkte på hur jag kunde 'mod' min PS3-handkontrollen för att göra det bättre och mer personlig. Jag bestämde mig att skruva med random grejer att se vad skulle komma ut och... Skåda! Den mäktiga DIY sorta gamer's modded controlle...

DIY USB-Altoids Apple/Samsung laddare

Om du läst min profil beskrivning, säga jag att jag älskar att bygga USB-enheter. Jag tänker alltid på enheter ladda nästa med det apple-liknande funktion som försöker stoppa oss DIY-nalister för att bygga vår egen laddare. Du uppenbarligen vet att A...

DIY Synth + MIDI-controller

Vill du kunna styra din DIY Synth med MIDI?Spela upp den med ett tangentbord eller ordnar det i din favorit ljud redigeringsprogram?Steg 1: Vad du behöverHårdvara1 x DIY Synth Kit1 x Arduino Uno1 x Usb kabel1 x 10 k Resistor1 x 0.1uF kondensator (pol...

DIY MIDI baserade CONTROLLER (trummor) - TOWER OF POWER

Här är steg för steg instruktioner till att göra din egen Tower of Power !!! Tower of Power är en ny MIDI-baserad domänkontrollant där du kan utföra din trumma prover som Bop It! någonsin velat kasta din MIDI-controller runt i händerna samtidigt kunn...

DIY ARDUINO flyg CONTROLLER

Kan bygga en Arduino baserat flygning styrenhet som kan göra trådlösa PID tuning, orientering lås och höjd håller och placerar lås med hjälp av en GPS. OK så här DIY flyg controller är en pedagogisk Arduino baserad modul. Det är enkelt att göra, lätt...