Hey,
ich bastel gerade ein midi Footswitch mit der Hiduino Firmware. Ich habe dort 6 Momentary Footswitches angeschlossen und möchte zudem über den analogen Eingang ein Expressionpedal mit einem standard Potentiometer anschließen.
Allerdings feuert der Arduino in Dauerschleife midi Befehle an meinen PC. Ich habe schon versucht, den Rest des Codes in eine Whileschleife zu schreiben und diese so lange ausführen zu lassen, bis sich der Wert des Potentiometers ändert.
Das funktioniert allerdings nicht ganz so zuverlässig, da das Poti sehr empfindlich ist und seine Werte auch ändert, wenn ich es gar nicht bediene und somit die Schalter in der Whileschleife nicht mehr ansprechbar sind.
Gibt es auch eine andere Lösung dafür? Im Anhang einmal der Code
#include <MIDI.h>
int t1=2;
int t2=3;
int t3=4;
int t4=5;
int t5=6;
int t6=7;
int ex=0;
void setup() {
pinMode(t1,INPUT);
pinMode(t2,INPUT);
pinMode(t3,INPUT);
pinMode(t4,INPUT);
pinMode(t5,INPUT);
pinMode(t6,INPUT);
MIDI.begin(1);
}
void loop() {
//expression pedal
int valunmapped=analogRead(ex);
int val=map(valunmapped,0,1023,0,127);
int previousval=val;
MIDI.sendNoteOn(39,val,1);
while (val==previousval){
//loop switches
if (digitalRead(t1)==LOW){
MIDI.sendNoteOn(40,127,1);
while (digitalRead(t1)==LOW){
delay(170);
}
MIDI.sendNoteOn(40,127,1); //aftertouch
}
if (digitalRead(t2)==LOW){
MIDI.sendNoteOn(41,127,1);
while (digitalRead(t2)==LOW){
delay(170);
}
MIDI.sendNoteOn(41,127,1); //aftertouch
}
//standard switches
if (digitalRead(t3)==LOW){
MIDI.sendNoteOn(42,127,1);
while (digitalRead(t3)==LOW){
delay(170);
}
}
if (digitalRead(t4)==LOW){
MIDI.sendNoteOn(43,127,1);
while (digitalRead(t4)==LOW){
delay(170);
}
}
if (digitalRead(t5)==LOW){
MIDI.sendNoteOn(44,127,1);
while (digitalRead(t5)==LOW){
delay(170);
}
}
if (digitalRead(t6)==LOW){
MIDI.sendNoteOn(45,127,1);
while (digitalRead(t6)==LOW){
delay(170);
}
}
}