DIY USB DJ Controller (8 / 16 stap)

Stap 8: Firmware - secundaire Microcontroller


Plaats een van de de MSP430G2553 in de Launchpad en sluit hem aan op uw computer. De verstrekte code downloaden en openen in Energia. Hieronder geef ik een algemeen overzicht van hoe de code-functies. Ik zal geen betrekking op de werking van de bibliotheek van het toetsenblok omdat het vrij goed is gedocumenteerd hier

De secundaire Microcontroller is verantwoordelijk voor de MCP3008 via SPI communiceert en interpreteren van toetsenbord invoer. Ik heb ook beide de secundaire Microcontroller code voor dit project en een demo die ik heb gemaakt voor de communicatie met de MCP3008 in het algemeen (alleen tutorial ik vond was voor Raspberry Pi). Dit zou moeten werken op Launchpad en Arduino denk ik.

Inzicht in de Code

Wanneer een toets wordt ingedrukt, vrijgegeven, of gehouden, de functie genaamd keypadEvent heet. Deze functie is verantwoordelijk voor het verzenden van berichten naar de belangrijkste microcontroller, wanneer de status van het toetsenbord wordt gewijzigd.

Hoe dan ook, als u een toets indrukt bijvoorbeeld, SendKeypadEvent wordt aangeroepen met de argumenten van de toets (de toets die werd ingedrukt), een echte (1, wat betekent dat de toets is ingedrukt), een digitalRead van P1.7 (dat is de 2-weg schakelaar waarmee het dek dat wordt beïnvloed door het indrukken van een toets), en de huidige modus (die wordt bepaald in de hoofdlus van het programma).

SendKeypadEvent wordt het bericht opgemaakt zodat het later kan worden begrepen de regel naar beneden. Zie de vorige stap voor meer informatie over de manier waarop het protocol voor elk besturingselement is opgemaakt. Het stuurt twee bytes die het programma vertelt welke toets werd ingedrukt (of als het werd uitgebracht), de huidige dek en de huidige modus.

Nu als we kijken naar de belangrijkste programma lus zien we een paar brokken van code. De eerste bit van code leest dat het toetsenblok en eventuele nieuwe toetsaanslagen worden verzonden vanaf daar. De tweede sectie leest alle analoge besturingselementen. De derde sectie signaal een dek wijzigen. Dit wordt gedaan in de hoofdlus met behulp van een vlag instellen door de interrupt service routine omdat verzendt seriële data in de ISR is inefficiënt.

De knoppen zijn alle klassen van de SPI_Control. Dit lokaliseert alle variabelen en methoden en kunt u een willekeurig aantal knoppen u moet registreren. De hoofdlus wordt alleen gecontroleerd als de klasse heeft vastgesteld, er is een nieuwe (genoeg) waarde, en als er, het signaal een detaillering welke knop en wat de nieuwe waarde. Mijn opmerking in-code bevat een overzicht van communicatie met de MCP3008 over SPI vrij goed:

Bij het lezen van gegevens uit de IC van de ADC MCP3008:

Houd er rekening mee, de SPI wordt in de modus 0,0, waardoor SCLK Verbreek na inactieve periode in een 'laag' staat

Stappen

  1. Pull CS/SS (Chip select/Slave select) pin LOW (0)
  2. Start bit gegevens, oftewel 00000001 of 0x01 (Lees het gegevensblad) verzenden
  3. De configuratie/ingangskanaal selectie gegevens verzenden
    1. Nota: Input config gegevensindeling: SGL/DIFF, D1, D2 en D0, X, X, X, X. SGL/DIFF selecteert welke modus, D0, D1 en D2 (3 bits) Selecteer kanaal om te lezen (0-7) en XXXX doen er niet toe. 1 = enkele fitting, 0 = differentieel
  4. De eerste byte ontvangen zal worden als volgt:? /? /? /? /? / 0/B9/B8, waar? is onbekend, 0 is een null beetje, en B9 en B8 zijn de eerste stukjes van het 10-bit monster. De volgende byte is ontvangen zullen de rest van het 10-bit monster
  5. Als u een zinvolle lezing, die wij moeten combineren de 2 bits van het eerste bericht met het tweede bericht. We kunnen dit bereiken door te korten op de eerste 6 bits van de eerste byte (met behulp van bitwise & met het masker 0b00000011) de bits 8 te verschuiven naar links, en de bitsgewijze OR-ing de eerste byte met de tweede byte
  6. End-communicatie door CS/SS terug hoog

Dat is een beetje verwarrend, maar alles wat je moet weten is dat de functie readADC wordt enkel een 10-bits waarde van het MCP3008 voor elk kanaal.

Als we de functie SendDeckChange kijkt, zult u opmerken dat het wordt verzonden als een toetsenbord pers. Aangezien wij slechts 12 toetsen hebben, maar wij vertegenwoordigen de toets waarop is gedrukt met 4 stukjes, kunnen we 12-15 voor wat gebruiken omdat ze nooit zal worden ontvangen als de input van de hardware. Zo gebruiken we de sleutel-ID 15 voor dek veranderingen.

That's pretty much it. Elke klokcyclus de microcontroller scant om te zien als een toetsenbord-knop heeft gedrukt, vragen de MCP3008 voor alle waarden van de knop en gecontroleerd als ze gewijzigd binnen een bepaalde gevoeligheid, en ook wordt gecontroleerd als de dek-switch is gespiegeld. Zie de code voor meer uitleg, het is vrij goed commentaar.

Uploaden van de Code

Nu moet u hebben inzicht in de werking van de secundaire Microcontroller-firmware, dus laten we gaan vooruit en upload het! Krijgen de code die ik geplaatst in het codevenster van uw Energia en klikt u op het vinkje in de hoek te controleren/compile het. Het moet alle check out. Als dat klaar is, upload de code naar de microcontroller door te klikken op de pijl naast het vinkje. Wanneer dat voltooid is, haal de Launchpad, verwijderen van de microcontroller en zet het opzij voor nu.

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