hab ich so versucht
#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>
Encoder enc[] = {
Encoder(42, 43),
Encoder(44, 45),
Encoder(46, 47),
Encoder(48, 49),
};
/*/
Encoder enc100 (42, 43);
Encoder enc101 (44, 45);
Encoder enc102 (46, 47);
Encoder enc103 (48, 49);
/*/
byte controlChange = 176;
byte controllerENCNummer [] = {100,101,102,103};
byte encoderWert [4] = {0};
byte newPos [4] = {0};
void setup() {
Serial.begin(9600);
Serial1.begin(31250);
}
byte position[8] = {0};
void loop() {
encoder(0);
encoder(1);
encoder(2);
encoder(3);
}
void encoder (byte x) {
newPos[x] = enc[x].read();
encoderWert[x] = newPos[x] % 128 ;
if (newPos[x] != position[x]) { position[x] = newPos[x];
sendeMIDI(controlChange, controllerENCNummer[x], encoderWert[x]);
} }
void sendeMIDI(int statusByte, int dataByte1, int dataByte2) {
Serial1.write(statusByte);
Serial1.write(dataByte1);
Serial1.write(dataByte2);
}
aber bei der Abfrage habe ich ab Encoder 101 immer 2 Encoder gleichzeitig.
Heißt Encoder 100
Encoder 100+101
Encoder 101+102
Encoder 102
aber nicht
Encoder 100
Encoder 101
Encoder 102
Encoder 103
Aber bei der einfachen Abfrage die ich nach dem // stehen habe, funktioniert das.
Aber ich finde den Fehler nicht.