Encoder Wert begrenzen

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);
}

Wert = Encoder % 128;

leider reichen dafür meine Kenntnisse nicht ganz aus.
Könntest du mir das einmal etwas verständlicher erklären?

Wohin mit dem wert und der wert ist wahrscheinlich mein newPos?

Der Compiler macht daraus zum Glück selbst

Wert = Encoder & 0x7F;

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?

Kann ich in der Library sehen was drin steht?

Das blöde ist ja dass ich den Wert mit encoder.read auslese.
Den Wert manuell zu überschreiben ist daher (glaub ich ) nicht so ohne weiteres möglich.

ich brauche beides.
Bei überschreiten der 127 stehen bleiben und bei Null anfangen.

Das ist aber von Encoder zu Encoder unterschiedlich.

wenn ich das mit Constrain mache bleibt er zwar bei Null und 127 stehen aber ich habe dann das Problem,

wenn ich 5x über 127 gedreht habe, auch wieder 5 Umdrehungen brauche um unter die 127 zu kommen.

Ok,

ich habe dann mal den "newPos" nochmals in eine andere Variable geschrieben und die dann mit (Wert %128)

konvertiert.

Vielen Dank.......wieder was gelernt

Kann ich in der Library sehen was drin steht?

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.