DIY USB DJ Controller (8 / 16 steg)

Steg 8: Firmware - sekundära mikrokontroller



Placera en av MSP430G2553 i startfönstret och Anslut den till datorn. Hämta koden och öppna den i Energia. Nedan jag ge en allmän beskrivning av hur koden fungerar. Jag kommer inte att omfatta driften av knappsatsen biblioteket eftersom det är ganska väl dokumenterat här

Sekundära mikrokontroller ansvarar för kommunikation med MCP3008 via SPI och tolka knappsatsen input. Jag har inkluderat både sekundära Microcontroller koden för detta projekt och en demo som jag gjorde för att kommunicera med MCP3008 i allmänhet (endast tutorial jag hittade var för Raspberry Pi). Detta bör fungera på Launchpad och Arduino tror jag.

Förstå koden

När en nyckel trycks ned, släppt, och rymde, anropas funktionen kallas keypadEvent. Denna funktion är ansvarig för att skicka meddelanden till den huvudsakliga microcontroller när tillståndet i knappsatsen ändras.

Hur som helst, när till exempel trycker på en knapp, SendKeypadEvent kallas det med argument av nyckel (den nyckel som trycktes), en sann (1, vilket innebär att knapptryckningen), en digitalRead av P1.7 (som är 2-vägs switch som identifierar däck som påverkas av den trycker på en tangent) och det aktuella läget (som bestäms i det viktigaste kretsar av programmet).

SendKeypadEvent formaterar meddelandet så att det kan förstås senare ner linjen. Se föregående steg mer information om hur protokollet är formaterad för varje kontroll. Den skickar två byte som används för vad knapptryckningen (eller om det släpptes), nuvarande däck och aktuellt läge.

Nu ser vi på huvudprogrammet ögla ser vi några bitar av kod. Den första biten av kod läser knappsatsen och några nya tangenttryckningar skickas därifrån. I det andra avsnittet läser alla analoga kontroller. Det tredje avsnittet skickar ut ett däck förändring meddelande. Detta görs i den viktigaste loop med en flagga som fastställts av avbrottstjänstens rutin eftersom skicka seriella data i ISRS är ineffektiva.

Vreden är alla SPI_Control klasser. Detta lokaliserar alla variabler och metoder och kan du registrera valfritt antal rattar du behöver. Huvudloop kontrollerar bara om klassen har fastställt det finns en ny (nog), och om det finns, skickar ut ett meddelande som beskriver vad knopp och vad det nya värdet. Min i-koden kommentar sammanfattar ganska bra kommunikation med MCP3008 över SPI:

När man läser data från MCP3008 ADC IC:

Vänligen observera att SPI är i läge 0,0, vilket innebär att SCLK går på tomgång i en "låg"

Steg

  1. Pull CS/SS (Chip select/Slave select) pin låg (0)
  2. Skicka start bitarsdata, vilket är 00000001 eller 0x01 (läst databladet)
  3. Skicka konfiguration/inmatningskanal urvalsdata
    1. Obs: Input config dataformat: SGL/DIFF, D1, D2, D0, X, X, X, X. SGL/DIFF väljer vad läge, D0, D1 och D2 (3 bitar) välja kanal att läsa (0-7) och XXXX inte spelar någon roll. 1 = enkel fattning, 0 = differential
  4. Den första byten fick kommer att vara följande:? /? /? /? /? / 0/B9/B8, där? är okänd, 0 är lite null och B9 och B8 är de första bitarna av 10-bitars provet. Den nästa byten fick blir resten av 10-bitars provet
  5. För att få en meningsfull läsning, måste vi kombinera 2 bitar från det första meddelandet med det andra budskapet. Vi kan åstadkomma detta genom att finjustera de första 6 bitarna i den första byten (med bitvis och med mask 0b00000011) flytta bitar 8 till vänster, och den bitvis OR-ning den första byten med den andra byten
  6. Avsluta kommunikation genom att ange CS/SS tillbaka hög

Det är lite förvirrande, men allt du behöver veta är att funktionen readADC blir bara ett 10-bitars värde från MCP3008 för varje kanal.

Om vi tittar på funktionen SendDeckChange, kommer du att märka att den skickas som knappsatsen tryck. Eftersom vi bara har 12 knappar, men vi representerar den nyckel som trycktes med 4 bitar, kan vi använda 12-15 för vad eftersom de aldrig kommer att tas emot som indata från hårdvara. Så använder vi nyckeln-ID 15 för att representera deck förändringar.

Det är ganska mycket det. Varje klockcykel mikrokontroller söker igenom för att se om en keypad knapp har tryckts, frågor MCP3008 för alla knopp värden och kontrollerar om de har ändrats inom en viss känslighet och kontrollerar också om växeln däck har varit vänt. Se koden för mer förklaring, det är ganska väl kommenterade.

Ladda upp koden

Nu bör du ha en förståelse för hur den sekundära Microcontroller firmware fungerar, så låt oss gå vidare och ladda upp den! Få koden jag postat i din Energia kod-fönstret och klicka på bockmarkeringen i hörnet för att kontrollera/kompilera det. Det bör alla kolla. När det är gjort, ladda upp koden till mikrokontroller genom att klicka på pilen bredvid markeringen. När det är klar, koppla ur startfönstret, ta bort mikrokontroller och ställ det åt sidan för nu.

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...