MIDI Piano Lighting (8 / 11 steg)

Steg 8: Programvara: Timers och avbryter



Jag vet inte vilka bilder att lägga upp för att förklara programvaran, så självklart, förmodligen bättre att bara posta en bild med en katt. Dessutom finns full arduino koden att ladda ner ovan. (lbdOrganPWM.ino)

Timers och avbryter

Använda hårdvaran PWM i sekvens med ac linjen utlöser, allt vi behöver göra är att se till den räknare som används för att mata PWM värdet återställs i noll-korsningen av AC nätspänningen. Med den utlösande kretsen förklarade i steg 7, lägger vi ett maskinvaruavbrott att detta stift att nollställa räknarna när det utlöser.

Varje tidtagare är starta i början av programmet till vågform generation-läge för snabb PWM mode med ICRn som högsta värde. Denna timer-läge är det som gör med hjälp av hårdvara PWM möjligt.

Eftersom vi har 7-bitars upplösning i hastigheten av MIDI-Obs, vill vi komma ganska nära denna resolution för glödlampa intensiteten. Ärligt talat, allt ovan 16 steg är ganska försumbar, men eftersom vi kan vi kanske också. Så om vi prescaler av timers 1024 (sida 161 i Atmega2560 datablad), sedan har vi 16 Mhz / 1024 för våra timer clock = 15625 Hz. Våra mål för vår totala PWM vågform är 120Hz, motsvara halva cykeln av nätspänningen 60Hz. Så, vi dela upp 15626/120 för att få ~ 130. Det innebär att om vi sätter våra ICRn register to130, vi kommer att få en frekvens på linje frekvensen med ~ 130 steg. Det är perfekt eftersom vi har 128 steg i MIDI-hastigheten!

Efter att ha provat ut det här, det finns viss variation i linje frekvens och så jag slutade med ett högsta värde (ICRn) av 122. Detta kändes som en säker tillräckligt värde där jag skulle se till att jag skulle stänga av triac på noll-korset. Om du går för långt förbi noll-cross tröskeln, du missa det och ljuset aldrig släcks eller tonas ned.

Sista, om Timer config är PWM polariteten. Eftersom när timern får sin slutpunkt vi vill se till att triac inaktiverar (detta betyder att vi är nära noll-korset), vi måste använda inverterad funktionsläget av PWM stift, så att när timern = 0, PIN-koden är låg. Det betyder bara när vi får en hastighet värdet 100, vi verkligen vill ange PWM registret till 127-100 = 27.

För hantering av noll-korset, har arduino biblioteket en inbyggd funktion för detta med hjälp av maskinvaruavbrott:

attachInterrupt(5,zeroCrossDetect,FALLING);

Om 5 avbrottsnummer (pin 18 på Mega), fallande anger det utlöses endast på fallande kanten (1 -> 0, inte 0 -> 1) av avbryta pin, och zeroCrossDetect är funktionen nedan.

Det fungerar genom att ange alla räknare som används av specifika PWM stift har jag valt till noll på noll korset. Det sätter också upp prescaler och vågform generationen läget för varje timer, anledningen till detta är så att timern startar på AC-cycle i början av programmet, se till att det finns ingen förskjutning från början.

void zeroCrossDetect() {

TCNT1 = 0;
TCNT3 = 0;
TCNT4 = 0;
TCNT5 = 0;

TCCR1B = (1 << WGM12) | (1 << WGM13) | (1 << CS10) | (1 << CS12);
TCCR3B = (1 << WGM32) | (1 << WGM33) | (1 << CS30) | (1 << CS32);
TCCR4B = (1 << WGM42) | (1 << WGM43) | (1 << CS40) | (1 << CS42);
TCCR5B = (1 << WGM52) | (1 << WGM53) | (1 << CS50) | (1 << CS52);
}

Se Steg
Relaterade Ämnen

Morot Piano (en MaKey MaKey Project)

har du någonsin tänkt att en morot kan skapa ett bra ljud? Med hjälp av en MaKey MaKey kan de. Men att bara ha några nycklar är inte tillräckligt bra, vi ska bygga en som kan ha 18 nycklar och 2 full octave.Steg 1: material -MaKey MaKey-Morötter (ell...

Makey Makey elektroniska Melodica

Ansluta dig till marken/jorden när med hjälp av Makey Makey tangentbordet tar lite av roligt bort, eftersom det ofta innebär att du sluta med en tråd ofta klippt till din handled eller hållas i handen. Så kom Divya med utmärkta idén om att placera ma...

Ljud massage möbler

denna möbel är prototypen för 2 huvudfunktioner:1 - komponera och lyssnar på elektronisk musik medan läggas direkt på högtalaren2-möbler för att ge en full massage med ljud synkroniseras filerSteg 1: ritning idén På uni hade vi denna musik remix work...

Intro till MaxMSP

MaxMSP är ett grafiskt programmeringsspråk som hjälper dig att bygga komplexa interaktiva program utan någon tidigare erfarenhet av att skriva kod. MaxMSP är speciellt användbar för byggnaden audio, MIDI, video och grafikprogram där användarinterakti...

Postapokalyptisk förstärkare

När det gäller en apokalyptisk händelse, och du inte har en förstärkare eftersom Immortan Joe tog alla förstärkare, sedan måste du veta hur du bygga själv en förstärkare!I detta Instructable jag ska guida dig genom processen med att bygga en förstärk...

Låt oss underhålla

i detta instructable, vi kommer att göra en robot apa som spelar piano till entratain människor i barnkalas, restauranger, etc, det är en riktigt rolig proyect du kan göra med aboute $500 och kommer att göra ett bra entretainment.Steg 1: material!Det...

Arduino fjärrkontroll lampor med Universal Remote

jag har letat i hemautomation länge, men har inte åtagit sig att den bara ännu mest på grund av prislappen. Förra året (2010) köpte jag dessa fjärrkontroll outlet på/av-strömbrytare så jag kunde vända min xmas tree ljus på och av via fjärrkontrollen...

Konvertera en toy piano för att arbeta som en MIDI-enhet och använda den med Synthesia

målet med detta projekt:Konvertera en billig leksakspiano för att arbeta som en MIDI-enhet och använda den med Synthesia (http://www.synthesiagame.com/)Andra program som använder MIDI-ingångar kan också användas.Tillvägagångssätt:Tryckknappar av pian...

Känsliga Piano - 88 för Bluetooth-MIDI. Söker medel.

Hejefter frustrerad med min 5 oktav piano, försöker spela mer krävande poäng 6 oktaver. Jag beslutade att bygga en av omkring 7 oktaver, MIDI kan det höras av, bluetooch på PC. Min idé är att söka finansiering, tack vare din hjälp och utveckla det hä...

MIDI-Light Show

För en klass bestämde min lagkamrat och jag att utveckla ett MIDI-baserat system som har en lyhörd ljus för varje anteckning som spelade. Till exempel, om du ansluter vår lilla setup till ett tangentbord, i avvaktan på vilka noterar du trycker på, få...

Antik lampa orgel - MIDI/OSC kontrollerade

skapa din egen antik lampa orgel för att lägga till nostalgisk atmosfär midi instrument!12 glödlampor motsvarar de 12 tonerna i en oktav (minus oktav tonen). Rektangulära rutan utspelar sig om du vill placera ljuskällorna vertikalt för display, medan...

Bygga ett stort Piano

många läsare kommer ihåg en Tom Hanks film från 1988 kallas "Big".I filmen blir en ung pojke övernaturligt förvandlas till en tjugo-något man och får reda på vad det är som för att bli stor.Kanske den mest ikoniska scenen i filmen har två av kar...

Anpassade Arduino MIDI Controller

Hej och Välkommen till detta instructable om hur man bygger en anpassad, Billigt och enkelt USB MIDI-controller, baserat på Arduino. Den bästa nyheten: inget krångel med USB-till-MIDI-gränssnitt eller programvaruverktyg som Hårlösa MIDI, bara plug 'n...

Den nya-skolan (iPad, myRIO, LabVIEW) i kombination med den gamla skolan (MIDI, diskettenheter) att skapa det ultimata elektroniska bandet - myFloppyDriveOrchestra

Har några gamla skolan diskettenheter liggande? Få hacka! Omvandla dem till en elektronisk orkester!Att vara en av världens mest populära DIY tech projekt, är musikaliska diskettenheter ingenting nytt. MyFloppyDriveOrchestra innehåller dock flera uni...

Hantverk och dekoration: Night Light lampa (Tree modell)

Handgjorda natten ljus lampaEn annan modell av NIGHT LIGHT lampa för dig att välja ett annat sätt att dekorera ditt sovrum, göra din sömn bättre och varmare.Steg 1: materialModell coverHård vit täcker (mica)Gräset papper (gröna sandpapper)Light bulbE...

Enkel MIDI-flöjt/inspelare Controller (EWI)

Som barn (ca 30 år sedan) började jag min musiklektioner på flöjten (en domare att vara exakt) och nu vill jag ha en modern elektronisk version av detta instrument (en Electronic Wind Instrument som det kallas, förkortat EWI). De är tillgängliga, men...

Rita själv - MIDI controller med ledande bläck

"Rita det själv" är en MIDI-controller som använder ledande bläck som knappar. Den bygger på Arduino, och använder en kapacitiv sensor (två, faktiskt) att avgöra huruvida ritade knapparna är beröring eller inte.http://sanidanz.tumblr.com/drawity...

Arduino MIDI bas pedaler

jag har alltid gillat bas pedaler. Jag är ett stort fan av bandet Rush och deras basist Geddy Lee. De flesta av mina favorit Rush album använder Moog Taurus pedaler som har blivit synonymt med sina ljud från den tiden. Jag vet inte vad det är. Den dj...

MP3 till MIDI (endast Windows)

detta är en demo för att konvertera MP3 till MIDI. MEN en stora ansvarsfriskrivning... det fungerade för mig med 1 instrument. Jag spelade in levande pianomusik i en digi-brännaren. Sedan bearbetas MP3. Denna process är ett praktiskt sätt att transkr...