En ram för att göra prisvärda & eleganta modulära styrsystem (USB till MIDI, gömde sig, eller seriella) (11 / 15 steg)
Steg 11: Allt om koden
Jag gjorde min absolut bästa att göra koden användarvänligt. Koden innehåller många kommentarer för att hjälpa dig att förstå vad som pågår. Du behöver inte skriva någon kod, mer-så, bara fylla i tomrummen. Enkelt. Endast om du vill lägga till några LED funktioner ska du lägga till några grundläggande kod. Det finns ett LED exempel inom koden för att komma igång.
Jag var aldrig utbildade en programmerare, men jag anser att koden ska vara jäkligt bra! Tack vare min bror Neil för hjälp med några av de svåra delarna.
Koden är uppdelad i fem avsnitt:
- Redigera - avsnittet där du är skyldig att göra lämpliga ändringar relaterade till handkontrollen med en Fyll-i-blanks metod.
- Variabler och funktioner - innehar variabler och funktioner som används av koden.
- Setup - är det här vi definierar ut pin-konfiguration, informera Teensy vilka stift i indata och som är en utgång.
- Loop - hjärnan hos våra hela operationen. Denna funktion loopar om och om igen medan Teensy körs.
- Kommunikation funktioner - dessa funktioner hanterar våra meddelanden.
Inom dessa fem avsnitt hittar du ofta underavsnitten för tryckknappar, lysdioder, analog-in Teensy, analog-in multiplexer och pulsgivare.
Om du inte använder Traktor mjukvara, kommer du sannolikt behöva redigera rotationsencoder MIDI meddelanden. Dokumentationen för din programvara för att förstå det förväntade meddelandeformatet. När du lista ut snälla budskap mig så jag kan lägga till detta Instructable.
Även om det inte är absolut nödvändigt att förstå alla koden, vill jag bara förklara en kodsträng som hjälper dig att förstå hur kontrollmeddelanden arbete. Koden nedan skickar analoga meddelanden för en potentiometer. Det finns tre lägen (debug, I2C och MIDI) som du slår på/av i redigeringarna. Om debug är aktiveratkan meddelanden skickas via USB till seriell bildskärmen att hjälpa till med felsökning. 'serialDebugOut' är en mycket grundläggande funktion jag skrev som skickar meddelandena följetong och det kan ses längst ner i koden. Om I2C aktiveras, meddelanden skickas via I2C till ledar-modulen som sedan kommer att vidarebefordra meddelanden via USB. Om MIDI är aktiverat, då den här domänkontrollanten skickar MIDI-meddelanden direkt via USB till datorn. "usbMIDI." är ett specifikt meddelande används av Teensy ++ för MIDI-meddelanden. Läs mer om Teensy MIDI här. Tänk på att du kan redigera koden för att skicka många typer av meddelanden: Teensy USB-seriell, Teensy USB-tangentbord, Teensy USB-mus, Teensy USB Joystick, Teensy USB MIDIoch Arduino följetong.
IF(enableDebug==1) {//SERIAL debug är på
serialDebugOut("Analog",i,tempAnalogInMap);
}
annat if(enableI2C==1) {//I2C
serialI2COut('a',i,tempAnalogInMap,channelNumber);
}
annat {//MIDI
usbMIDI.sendControlChange(i,tempAnalogInMap,channelNumber);
}
Läst koden/kommentarer om och om igen, det gör ta några iterationer för att svepa huvudet runt. Du kan lära mycket av koden. Ständigt referens Arduino bibliotek för sektioner som du inte förstår.
Rotationsencoder koden är en otäcka odjur. Om du känner dig ambitiös kan du läsa mer om det här.
** Sannolikt det kommer några förbättringar som göras till koden över tiden så fortsätter att kolla tillbaka för den senaste version.* *
All kod finns här på GitHub. För detta avsnitt Använd koden med titeln "Controller kod". Klicka på "ZIP" i den övre vänstern att ladda ner.