YEAAAUGH, WHHAT? OKKKAY! Lil Jon lätt knappen (3 / 4 steg)

Steg 3: Hur det fungerar:



Förhoppningsvis har du en fungerande Lil Jon Button nu. Du kan vara intresserad av hur koden fungerar, så jag kommer att förklara vissa delar. Eftersom koden är ganska lång, ska jag bara nämna sektioner sekventiellt.

Först, här är ett gäng ingår. Det finns naturligtvis de för processorn samt vissa standardbibliotek. Vad som är viktigt här är huvudet filer som överensstämmer med proverna. Detta är ett sätt att bekvämt ladda data från din dator till mikrokontroller vid kompileringen. Jag skrev ett MATLAB script som läser WAV-filer och deklarerar ett stort utbud t.ex.:
int mydata [] = {1, 2, 3, 4};

Då finns det i avsnittet:
ogiltiga __attribute__((__interrupt__)) _T2Interrupt (void)
{

Detta är avbrottet för Timer 2, som driver PWM. En PWM (Pulse bredd Modulator) genererar en typ-av-analog vågform genom att snabbt ändra intermittensen av en puls vågform. Detta beror på att de digitala utgångarna för mikrokontroller kan bara generera en logisk 0 (som är på marken spänning) eller en logisk 1 (som är på batteriets spänning). Om vi vill säga, approximera en spänning halvvägs mellan det, kan vi använda PWM att aktivera PIN-koden halva tiden och stänga av halva tiden. Så länge detta sker mycket snabbt, kan vi approximera spänningen tillräckligt väl för att låta som den ursprungliga vågformen.

T2Interrupt funktion är en avbrottshanterare för Timer 2. Det innebär i princip att PWM behöver ett annat prov, så vi läsa ett annat prov från programminne och grejer det in i OC1RS-registret. Detta är hur PWM vet vad spänning att approximera prov nästa gång.

void __attribute__((__interrupt__)) _CNInterrupt (void)
{

Detta avsnitt är en avbrottshanterare för förändring anmälan. Ändra anmälan kastar ett avbrott (det vill säga utför funktionen ovan) helst en av stiften du har aktiverat förändringar stat (går hög -> lågt eller vice versa). Detta är hur vi upptäcka växeln pressas. Observera att vi kunde avsöka här, men de perifera ändringsmeddelanden fungerar även när mikrokontroller sover, gör att vi kan spara en hel del makt. Vad vi gör här beror på om ett ljud redan spelar. Om ett ljud redan spelar och vi är i den första 375ms av provet, återställs helt enkelt prov index (därmed omstart uppspelning i början av samma prov). Om det finns inga ljud spelar eller vi är förbi den första 375ms, vi kommer att slumpmässigt plocka ett nytt ljud av 10 och spela som. Detta gör att Button Lil Jon att upprepa samma prov men har fortfarande tillräckligt slumpmässiga beteende att vara intressant (e.g. Ya-Ya-Ja! OKEJ!).

void setupHS()
void setupCN()
void setupPWM()

Här är några setup funktioner. Detta är ganska komplicerat och du är bäst att konsultera databladet för exakt vad som händer här. Det räcker för att säga det första anger upp processorn klocka till 66.33 Mhz, de andra sätter upp ändra anmälan och de tredje uppsättningarna upp PWM. Som referens finns databladet här:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532296

Slutligen den:
int main)
{

Vilken är den viktigaste loopen. Koden börjar köra här, så det första den gör är inställd kringutrustning. Då huvudloop inte så mycket. Det i princip bara väntar runt för lite och går för att sova. Allt arbete sker eftersom avbrotten ovan har registrerats, så när något behöver uppmärksamhet (t.ex. PWM behöver nästa provet), på rätt avbryta automatiskt kommer att kallas. Vanligtvis när mikrokontroller går för att sova, blir ingen kod körs. Men eftersom den perifera ändringsmeddelanden har aktiverats, kommer att ett tryck på knappen orsaka mikrokontroller att vakna upp och omedelbart service att avbryta och börja spela ett urval.

Sista anmärkning:
En observant ingenjör kan fråga, varför inte du använder funktionen DAC för mikrokontroller? DsPIC33FJ128GP802 har faktiskt en audio DAC som är avsedd för sånt här. Anledningen är att förenkla designen. Observera att det enda som behövs för att köra en högtalare av en PWM, är enda digitala växlar (en integrerade i det här fallet med inget motstånd för polarisering). Om istället produktionen var en DAC, en linjär förstärkare gjord av transistorer (med extra motstånd) eller en op-förstärkare skulle krävas. Detta ökar avsevärt komplexiteten i designen och del greven. Observera att den ingående vågformer är helt enkelt 8kHz 8-bitars ljud filer, så en full CD-kvalitet DAC är overkill när det gäller ljudkvalitet, men ökar den totala kostnaden.

Andra sista anmärkning:
Den dsPIC33FJ128GP802 spänningsområde är endast 3.0-3.6V. Jag har observerat det köras vid ca 2.8V utan problem med denna kod, men stabilitet kan inte garanteras på lång sikt. Jag rekommenderar om du är att experimentera med koden för att använda vissa litiumbatterier AAA: http://www.amazon.com/Energizer-Ultimate-L92BP-4-Lithium-Battery/dp/B0002DUQDQ . De underhåller 1,5 v för en mycket längre tid än alkaliska AAA.

Redigera: problemet löst genom att använda PIC18, som går ner till 2V

Se Steg
Relaterade Ämnen

Ammo kan talaren vansinne: MOAB

Varning! Detta är inte din dagliga bluetooth talaren bygga...Vi har finslipa konsten att bärbara musiksystem här kolla 6 Labs i flera år (hem för AmmoAudio.com och våra populära Ammo kan X, en ammo kan talaren gjord av en 50 kaliber ammunition kan)....

Atari Joystick smyckeskrin

Håll dina smycken eller slumpmässiga prydnadssaker i stil * med den här Atari!*Disclaimer: endast betrakta eleganta lilla, men fantastiska, subpopulaton. Space invader ingår inte.Steg 1: Material och förberedelser MaterialShellacPapperSandpapperTräli...

Hur: Casey Jones T.M.N.T. kostym.

Detta Instructable kommer att försöka visa dig hur jag skapade min awesometastic Casey Jones fan kostym.Casey Jones är en medborgargarden crime fighter från Teenage Mutant Ninja Turtles universum, och enligt min åsikt den bästa karaktären.Nu, det fin...

Audio-knappen för Android Smartphone

såvitt jag vet, detta är först i sitt slag. En fysisk knapp som ansluts till någon smartphone via hörlursuttaget. Du förmodligen fråga dig själv, varför skulle jag behöva detta!? Smartphones har redan knappar på skärmen.För barn med fysiska funktions...

Arduino-drivna A-10 stick grepp remote w/Emergency Party knappen!

jag kom över Plama2002's "Emergency Party Button" bygga ett tag tillbaka och ville ha något liknande för min bar. Jag hade också en gammal USAF B-8 stick grepp från en A-10A som jag plockade upp i mitt tidigare liv. Jag tänkte att istället för a...

Knappen ansikte egendomliga Memo styrelsen / Maganet samling Display / kappa + Extra kredit

jag råkade bara ha massor av dessa 3" tums knappen ansikten i en låda sans resten av komponenterna... Jag visste att jag skulle hitta en användning för dem. Jag hittade alla detta skräp om runt mitt hus.Steg 1: Du behöver: HammareSidan fräsarTång nål...

William Jones' Pi paj (matematiskt infunderas)

här jag visar att korrekt göra en William Jones' Pi paj. Alla steg och material tillhandahålls för att göra detta verkligt matematiska paj. Alla de djärva siffror är de första 30 nummer, i kronologisk ordning, Pi. Njut av detta instructable mer för u...

Arcade-knappen MIDI-Controller

att ha en hårdvara gränssnitt till din favorit musik / DJ / VJ programvara kan verkligen öppna upp dörrar i din kreativitet. Mest utbredda form av hårdvara kontroll till datorn för sådana program är en MIDI controller.En MIDI-controller kan skicka oc...

Spela in ett eget meddelande på Staples lätt knappen

Jag har sett ett par andra webb-inlägg om hur du ändrar knappen Staples lätt för att spela ett eget meddelande, men nu när Radio Shack har stängt, några av dessa inlägg är inte längre giltiga.En annan metod krävs ett 9-volts batteri hängande ut på si...

Lila kände örhänge

Hej Fellows,Jag älskar filt, sedan jag skapade min första kände projekt. Det verkar som något kan göras med hjälp av filt. Så denna gång tänkte jag att skapa några örhängen med filt. Lila är min favoritfärg och jag är så glad att denna kombination me...

Knex Indiana Jones piska

detta är en enkel Indiana Jones piska (perfekt för den nya filmen) :-)Steg 1: Bitar dessa är de bitar du behöver för att bygga piskan18 röda kopplingarmedelstora bit knex kedja2 snöflinga anslutningar2 grå stavar1 vit stav1 lila 1-vägs kontaktSteg 2:...

Lila ljus målare på en minut

Jag älskar Air färg. Du kan göra en lätt lila luft färg på bara en minut!Om du gillar denna instructable, snälla rösta på mig.Först samla komponenterna.1 blå LED1 röd lysdiod1 660 ohm motstånd1 9 volts batteri1 tryckknapp4 käken kontakterAnslutning:A...

Lila Mood Light Cube

jag älskar stämningen ljus, så jag bestämde mig att bygga en rörelse kontrolleras stämningen ljus.Om du gillar denna instructable, snälla rösta på mig.Steg 1: Den elektroniska kretsen HårdvaraKretsen är enkel. Den består av mikrokontroller, Accelerom...

LEGO INDIANA JONES - hur få "Sann äventyrare" varje nivå och få MILJONTALS tegelstenar!

En dag jag var leka med fuska koder och jag hittade en imponerande kombination. Visst du kan spela igenom hela spelet och låsa upp dessa ärligt... och sedan spela hela spelet att få sann äventyrare på varje nivå... Men det är lättare.Steg 1: Gå till...

Lil Luv Monster

A Lil Luv Monster som behöver luvin är ett måste för alla hjärtans dag eller någon semester för den delen.Steg 1: Saker du behöver:1. tyg... alla kommer att göra. (Jag använde fleece så det skulle vara soft en gosig)2. sax3. färg samordnas tråd4. nål...

Anpassade gjorde lila Minion marionett

detta är en marionett som jag gjorde för en speciell gåva. Det var ett mycket givande projekt på grund av anledningen till att jag gjorde det och mycket uppfyller när jag lade fram det till dess mottagare. Eftersom det finns ingen lila undersåtar att...

Lila sten spegel. Uppgradera en tråkig spegel.

Hej Fellows,Några dagar innan jag gick till en keramik utställning med en vän och jag var förvånad att se några vackra terracotta blomvaser inredda med flod/småsten. Jag tänkte på att göra en av liknande vasen och började leta efter stenar. En dag se...

Träffade Museum knappen Mini duk konst

Har du sparat några knappar från dina besök på Metropolitan Museum of Art? I så fall spara dem och förvandla dem till söta mini duk konst!Steg 1: Vad du behöverHär är vad du behöver...Träffade Museum knappar (år sedan, de brukade ge dig knappar att f...

Lägga till knappen Spela/hoppa över din fristående CD-ROM-enhet

om du vill göra en CD-spelare från en gammal CD-ROM enhet (Visa här) men den enhet du har inte har en PLAY/hoppa över knapp på framsidan... Dont vemod, kan du lägga till en till de flesta CD-enheter, >>>> läsa påSteg 1: Verktyg n StuffVerktyg:...