Hallo zusammen,
ich möchte einen Encoder auslesen und das Resultat an meinen Controller senden.
Dort kann ich aber nur Werte bis 127 gebrauchen und auch kein -.
Soweit so gut.
Mit Byte bekomme ich ja bis 255 und ohne Vorzeichen.
Ich habe es schon mit map oder constrain versucht.
mit map geht es gar nicht.
und mit constrain bleibt der Wert so lange bei 0 oder 127 bis die Werte über 255 gehen.
Meine Versuche bin bisher alle gescheitert.
Weiß jemand Rat?
#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>
Encoder myEnc(5, 6);
int cc = 176;
int cn = 80;
void setup() {
Serial.begin(9600);
//Serial1.begin(9600);
//Select-Pins 4051s
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
byte position = 0;
void loop() {
digitalWrite(2, 0); // Input A 4051
digitalWrite(3, 0); // Input B 4051
digitalWrite(4, 0); // Input C 4051
byte newPos = myEnc.read();
if (newPos != position) { //sendeMIDI (cc, cn, newPos);
position = newPos;
Serial.println (newPos);
} }
void sendeMIDI(int statusByte, int dataByte1, int dataByte2) {
Serial.write(statusByte);
Serial.write(dataByte1);
Serial.write(dataByte2);
}
Allerdings ist für mich die Frage, was beim Weiterdrehen und danach Zurückdrehen passieren soll.
Ein Überlauf 126 <-> 127 <-> 0 <-> 1 ist wohl oft nicht gewünscht.
Die Frage ist auch, was deine Encoder Library bei read() zurückliefert.
0 / +- 1 / Bei schnellem Drehen mehr ?
Und was sie sonst noch kann?
Dafür gibt es die .h Datei (die sagt auch dem Compiler, was es gibt)
Wie es genau gemacht wird, siehst du in der .cpp Datei
Und wenn du Glück hast, gibt es auch eine Doku.