Antik lampa orgel - MIDI/OSC kontrollerade (11 / 14 steg)
Steg 11: Programvara - mikrokontroller firmware
Även om Atmega324p inte är förmodligen mest använda mikrokontroller (uC), de flesta i denna kod kommer att fungera alldeles utmärkt på den mer populära atmega168 serien som används på arduinos. Den enda större ändringen är genomförandet av en programvara UART för MIDI-port eftersom 168 serien endast har en UART. Funktionen kan emellertid lätt lämnas ut, som jag måste erkänna, jag har aldrig kopplat en enhet in direkt via MIDI ända sedan jag avslutat test att det fungerade.Firmware på uC är inställd för att hantera antingen input från MIDI-port, USB-port eller båda samtidigt. Växla mellan bestämmer routning av meddelanden. Dessutom kan hem anteckningen ställas in antingen distans eller lokalt med den främre tryckknapp switchen. När strömbrytaren trycks, kommer att nästa anteckning tryckte och släpptes på tangentbordet ställa den första glödlampan ska alltså. Detta är naturligtvis inte en nödvändighet, men jag hitta människor är lite mindre förbryllad om lamporna gör om de ser lamporna som lyser upp i följd från vänster till höger. När roten Obs nyckelns din spelar i den första glödlampan, lampor tenderar att hoppa runt lite mindre oförutsägbart, beroende på vad du spelar naturligtvis. Fina är att eftersom detta kan fjärrstyras, det är lätt att ställa in nyckeln i din sång så att det uppdateras automatiskt varje gång du byter spår (se det sista avsnittet på objektet max4live använda ableton).
När läget för enheten är avstängd, ledde framsida lyser upp en annan färg, som anger om den lokala användaren har kontroll eller om det är fjärrstyrd. Detta går i den ganska meningslöst men ser cool kategori.
Majoriteten av programvaran är inställd för att hantera inkommande meddelanden (midi/usb). Den externa crystal driver uC på 18.423 MHz, för att få 0% fel på 115200 baud. Bortsett från pågående rad för rad igenom koden finns det inte mycket mer att prata om, Välkommen att ställa eventuella frågor du har, koderna nedan. Zip-filen har hela projektet inlcluding filen avrstudio (avrstudio5, jag har nyligen uppgraderat och konverterat alla mina gamla projekt, du bör också! dess så mycket bättre än avrstudio4!). Jag lämnade ut de enskilda UART-filerna eftersom de lätt tillgängliga någon annanstans.
Några bra punkter när du skriver för midi. Du behöver en UART klocka av 31250 baud, vilket innebär, för en 0% fel, du behöver en kristall med ett heltal flera gånger större än. Det funkar okej ändå, sedan den inbyggda 8Mhz arbetar böter, eller 16Mhz, etc. Ett problem uppstår dock när man kombinerar MIDI UART på samma chip som RS232 UART. Den "standard" baud klassar, 9600, 112500 etc, inte fungerar bra med 8Mhz kristaller. Så, vad kan man do...well det finns två val IMHO.
1. Använd den inbyggda crystal eller liknande frekvens (8Mhz... eller 16 Mhz, 20 Mhz etc) och använda överföringshastigheten aliasing för att korrigera för usb.
2. acceptera fel på en av dina rader. Personligen, jag gillar inte detta alternativ, jag vet en massa människor köra saker på 9600 baud med 16Mhz kristaller, men jag gillar inte att.
Så, här är ett gäng länkar till aliasing baudhastighet med FT232R-drivrutinen. Jag har gjort detta på en PC och en MAC, det fungerar bra, och låter dig skicka data på mycket mycket högre överföringshastigheter än RS232 var tänkt för. Till exempel, i stället för en topp på 225 kbps, kan du gå ända upp till 3Mbps (även om de flesta atmegas kan bara göra 2Mbps).
Hur man gör det på OSX (Följ instruktionerna mycket noga, det fungerar faktiskt, jag lovar)
Och, på en PC
Bra artikel om aliasing baudhastighet för att använda xbee styrenheter för MIDI- (Endast PC)