Je pense que j'ai compris : lorsque tu fais le constrain si tu es à 255, tu renvoies 255. Après si le sens vaut 1, tu passes à 4 parce que c'est un byte : il doit boucler (comme un modulo 255, '%'). Puis le constrain impose Vmin (100 on dirait).
Je pense que si tu mets toutes tes variables en int, ça va passer comme tu veux. Après 255, et sens=1, tu passeras à 260 et le constrain imposera de rester à 255.
Essaye un truc simple (je peux pas le faire car je n'ai pas de µC ici) :
void loop() {
byte x = 200;
byte y = 300;
byte z = x+y;
Serial.println(z);
Ça donne 245 (500%255) ?