Stap 4: Schrijven van de Code
Wanneer u op een pedaal drukt, wordt de opdracht verzonden om te schakelen op de notitie met een bepaalde snelheid. De potentiometer (volume pedaal) is gebruikt om te bepalen dat. Het geeft waarden van 0-1023. De kaart-functie wordt gebruikt om dat aantal proportioneel worden toegewezen aan een ander getal tussen 0-127. Als u wilt een notitie uit wanneer het demperpedaal niet is ingedrukt, is dezelfde opdracht voor de notitie verzonden, behalve de snelheid 0 is.
Met de arduinos verzenden dat opdracht wanneer een pedaal is geduwd met behulp van een "if"-instructie in de lus behalve het werken zou zou sturen dat commando elke keer dat de lus wordt herhaald wanneer het pedaal ingedrukt wordt. Als de instructie "else" wordt ook gebruikt voor het verzenden van de opdracht om te stoppen met de notitie (snelheid 0), zou vervolgens de arduinos sturen deze opdracht voor elke pedaal dat niet ingedrukt, iedere keer dat de lus herhaalt. De arduinos en synthesizer kon niet omgaan met gegevens verzendt of ontvangt dat alles.
Om dit te verhelpen, moet de arduinos sturen de opdracht te spelen die een opmerking eens nadat het demperpedaal is ingedrukt. Zij moeten ook doen hetzelfde voor wanneer het pedaal wordt vrijgegeven. Om dit te doen, de arduinos moet "herinner mij" de laatste (ingedrukt of niet ingedrukt) de pedalen waren in de laatste keer dat de lus herhaald.
Om toe te voegen die functie, maakte ik een variabele "laatst staat". Het eerste wat dat de arduinos doen na sensing wanneer een pedaal is ingedrukt is de laatste staat die zij moesten de staat zij nu vergelijken. Dit maakt het mogelijk voor de arduinos voor het verzenden van de opdracht voor een note zodra wanneer het is ingedrukt en een keer wanneer het is vrijgegeven.
Omdat er twee Arduinos, zijn er twee programma's die zijn geschreven. Het gewoon kopiëren van de ene en plakt het in een nieuw project en alle notities wijzigen. Vergeet niet dat een programma wordt gebruikt nog een opmerking dan een ander!
Beide Arduinos nodig om opdrachten te verzenden op het kanaal van de MIDI hetzelfde . Ik gebruikte MIDI kanaal 1.
Om de arduinos voor het verzenden van MIDI-data lezen over deze handleiding: http://arduino.cc/en/Tutorial/Midi. Ik verstuur geen de notities of de snelheid in de hexadecimale notatie. Decimale werkt perfect omdat de Serial.write(); opdracht verzendt het als een byte.
Er zijn twee programma's bijgevoegd in het zip-bestand; Eén voor één ATmega, een andere voor de andere.