Hallo,
ich möchte gern an zwei nebeneinanderliegenden Analog Pins jeweils einen Poti anschließen. Zum Testen habe ich den Code für beide Pins vorbereitet, aber in Ermangelung des zweiten Potis nur mit einem getestet. Der Test-Poti ist mit den äußeren Anschlüssen mit 3,3V und GND Pin verbunden. Das Kabel vom Mittelausgang des Potis habe ich dann zwischen den Analogpins umgesteckt.
Beim Drehen des Potis an Pin A4 sollten eigentlich MIDI-Daten für Kanal 4 übertragen werden, an Pin A5 für Kanal 5. Die Beobachtung ist nun, dass beim Drehen des Potis an einem der Kanäle, immer für beide Kanäle ein Wert ausgegeben wird. Der Unterschied ist lediglich der, dass beim angesteckten Pin (z.B. A4) die Werte zwischen 0 und 127 pendeln, am Nachbar-Pin A5 etwas "enger, d.h. zwischen 7 und 124. Steckt man auf A5 um zeigt sich das gleiche Verhalten, nur andersherum.
Ich habe nun einige Zeit herumprobiert, jedoch keine Lösung gefunden. Nun hoffe ich auf euch
#include "MIDIUSB.h"
int LastPotOW = 1;
int LastPotSW = 1;
int PotT = 20;
int CCchanOW = 4;
int CCchanSW = 5;
int controller = 11; //Controller Nummer, 11=Expression Pedal
void controlChange(byte channel, byte control, byte value) {
midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
MidiUSB.sendMIDI(event);
}
void setup() {
pinMode(A4, INPUT);
pinMode(A5, INPUT);
}
void loop() {
int CurOW = analogRead(4);
int MapOW = map(CurOW, 0, 1023, 0, 127);
int CurSW = analogRead(5);
int MapSW = map(CurSW, 0, 1023, 0, 127);
if (abs(CurOW - LastPotOW) >= PotT) {
controlChange(CCchanOW, controller, MapOW); // Set the value of controller 10 on channel 0 to 65
LastPotOW = CurOW;
}
if (abs(CurSW - LastPotSW) >= PotT) {
controlChange(CCchanSW, controller, MapSW); // Set the value of controller 10 on channel 0 to 65
LastPotSW = CurSW;
}
}