Bygga en grundläggande MIDI-Controller del 1 - lätt 3 effekter Pot (Potentiometer) Arduino Uno MIDI-Controller (Serial-USB)... Snabb, enkel och billig! (4 / 7 steg)
Steg 4: Koden
Här är den trevlig lite enkel kod baserat på ett exempel gjorde tillbaka i 2009 av starfiretech. De viktiga justeringar som jag har gjort till denna kod var att kontrollera nya värden mot gamla värderingar, bara skicka MIDI-data när en förändring upptäcks; och andra lägga till en liten fördröjning att ta bort några små variationer ges i värde när potten inte är beröring, något berört eller blir lite slå. Innan jag lagt detta jag fick viss variation (av + /-1) i värde vid lätt beröring som förseningen hjälper till att ta bort.
int val = 0; Våra inledande pott värderingar. Vi behöver en för första värdet och en andra att testa om det har skett en ändring som gjorts. Detta måste göras för alla 3 krukor.
int lastVal = 0;
int värde2 = 0;
int lastVal2 = 0;
int val3 = 0;
int lastVal3 = 0;
void setup()
{
Serial.BEGIN(9600); Ställa in hastigheten på MIDI-port till samma som vi kommer att använda i programvaran Hairless Midi
}
void loop()
{
Val = analogRead (0) / 8; Dela med 8 att få antal 0-127 för midi
om (val! = lastVal) / / om värdet inte = det sista värdet kommandot görs. Detta beror på potten har förvandlats. Annars potten förblir densamma och inga MIDI-meddelandet är utgång.
{
MIDImessage(176,1,val);} 176 = CC kommando (kanal 1 kontroll ändra), 1 = som kontroll, val = värdet läsa från Potentionmeter 1 Obs här säger VAL inte VA1 (små bokstäver förstås)
lastVal = val;
värde2 = analogRead 1/8. Dela med 8 att få antal 0-127 för midi
om (värde2! = lastVal2)
{
MIDImessage(176,2,val2);} 176 = CC kommando, 2 = som kontroll, val = värdet läsa från Potentionmeter 2
lastVal2 = värde2;
val3 = analogRead (2) / 8. Dela med 8 att få antal 0-127 för midi
om (val3! = lastVal3)
{
MIDImessage(176,3,val3);} 176 = CC kommando, 3 = som kontroll, val = värdet läsa från Potentionmeter 3
lastVal3 = val3;
Delay(10); här lägger vi till en kort fördröjning för att förhindra smärre fluktuationer, smällar på krukor etc. Att lägga till detta bidragit till att förhindra min krukor från jumpin upp eller ner ett värde när något berört eller knackade.
}
void MIDImessage (byte kommando, byte data1, byte data2) //pass värden ut genom standard MIDI-kommando
{
Serial.write(Command);
Serial.write(Data1);
Serial.write(data2);
}