Stap 8: Programmering (Debouncing de schakelaars x 12)
Hier is onze debounced lus. Merk op dat we ook de ontdendering tijden opslaan als 12 onafhankelijke waarden:
int buttonState [12]; de huidige lezing van de invoer pin
int lastButtonState [12] = {lage, lage, lage, lage, lage, lage, lage, lage, lage, lage, lage, lage};
lange lastDebounceTime [12] = {0,0,0,0,0,0,0,0,0,0,0,0}; de laatste keer dat de uitgang-pins was lange debounceDelay van een knevel gevoorzid = 50; de ontdendering tijd; verhoging als de uitvoer flikkert
voor (int x = 0; x < 12, x ++) {}
currentPin [x] = digitalRead(pedalPins[x]);
Als (currentPin [x]! = lastButtonState[x]) {}
lastDebounceTime [x] = millis();
}
Als ((millis() - lastDebounceTime[x]) > debounceDelay) {}
Als (currentPin [x]! = buttonState[x]) {}
buttonState [x] = currentPin [x];
Als (currentPin[x]==0) {Serial.print ("pedaal"); Serial.Print(x+1); Serial.println ("Up"); }
Als (currentPin[x]==1) {Serial.print ("pedaal"); Serial.Print(x+1); Serial.println ("Down"); }
}
}
lastButtonState [x] = currentPin [x]; }
}
Werkt geweldig! Geen herhalende triggers nu. Gewoon schoon op en neer de gebeurtenissen. Let's make MIDI!