Arduino MIDI bas pedaler (7 / 11 steg)
Steg 7: Programmering (läsning och testa växlarna pedal)
Varje gång jag startar en ny byggprojekt och jag är redo att skriva kod, kommer jag alltid testa alla ingångar och utgångar med lite skissera de bara spottar alla deras värden till seriell bildskärmen. Så jag kan se att allt fungerar innan du ens börjar den riktiga koden. Spara denna projektspecifika kod för senare är praktiskt eftersom det finns tillfällen där jag kommer att behöva ladda upp det igen, antingen att något inte fungerar, eller att jag har lagt till en annan switch/ratt som behöver inledande tester. Använda följetong monitor att felsöka och testa är alltid knepigt med MIDI-program, eftersom de delar den seriella TX porten på Arduino. (endast en eller den andra kan använda den seriella porten) Det kräver att kommentera din seriell kommunikation linjer och uncommenting den MIDI-linjen, eller vice versa. Du att se din produktion är rätt innan du börjar skicka MIDI-meddelanden, eftersom du kommer att bli lite blind om du inte använder en MIDI kontrollera tillämpningen.
byte pedalPins [12] = {2,3,4,5,6,7,8,9,10,15,17,16}; stiften på Arduino varje pedal är på
byte lastPin [12] = {0,0,0,0,0,0,0,0,0,0,0,0};
byte currentPin [12] = {0,0,0,0,0,0,0,0,0,0,0,0};
för (int x = 0; x < 12, x ++) {
currentPin[x]=digitalRead(pedalPins[x]);
om (currentPin[x]!=lastPin[x]) { / / nuvarande och förra PIN inte MATCH, en händelse INTRÄFFAT
lastPin [x] = currentPin [x];
om (currentPin[x]==0) {Serial.print ("Pedal"); Serial.Print(x+1); Serial.println ("Up"); }
om (currentPin[x]==1) {Serial.print ("Pedal"); Serial.Print(x+1); Serial.println ("ned"); }
};
}
}
När du arbetar med en momentan switch, för att undvika upprepade utlösare av växeln att knuffas eftersom loopen går om och om igen, skulle vi vanligtvis lagra det "sista" värde som växeln hade och jämföra det med det aktuella värdet som lästes bara. Då kan vi se att två värdena inte matchar, så vi vet att något förändrats. Tänk på denna förändring som en händelse där något måste hända. När det gäller pedalerna är det logik ändra från 0 till 1 eller 1 till 0 (switch stängda eller öppna). Baserat på riktningen av den händelse du vill göra olika åtgärder, som att skicka en MIDI-not eller Observera bort meddelande. I ovanstående kod lagrar vi 12 separata nuvarande och förra värden, en för varje pedal. Detta tillåter oss att hålla ned pedalen #1, och sedan trycka pedalen #5 medan vi håller #1 eftersom de spåras alla självständigt. Betydelsen av detta för MIDI är att du behöver skicka motsvarande anmärkning av meddelanden varje gång du utlösa en lapp med anteckning på. Om du inte oavsett synthesizer som du har anslutit kommer bara fortsätta spela samma brummande anteckningar och så småningom du kommer att ha 12 toner alla på samtidigt med ingenting att säga stop spela tonen. De kommer att spela för evigt förrän du återställer din synthesizer.
Den ovanstående klipp av Provningsmetod fungerar, men det är mycket spänstiga med upprepade upp/utlösare som pedalen är skjutet eller släppa taget (särskilt när du ta din fot, som pedalen bokstavligen studsar upp på grund av våren mekanismen). Låt oss Dämpningstid det i nästa steg.