VARIABLE MIT JOYSTICK HOCHZÄHLEN/RUNTERZÄHLEN

Hallo allerseits!

Bestimmt kann mir jemand bei meinem Problem helfen:

Ich will durch die Bewegung eines Joysticks (Stick Controller von ALPS) eine Variable hochzählen/runterzählen und den so eingestellten Wert an einem LDC Display ausgeben.

Dabei habe ich das Problem, dass meine Variable “CounterClipPer” teilweise gleich um mehrere Werte hochgezählt/runtegezählt wird - da sozusagen die Bedingung solange wahr ist, bis der Analogwert des Joystick wieder unter 600 liegt.

Wie könnte ich das möglichst kurz unterbinden, dass die Variable pro Bewegung immer nur um 1 geändert wird? Man kann sich für mein Vorhaben gerne einen Playstation Controller vorstellen - da funktioniert sowas ja sehr gut :wink: !

ZUR INFO:
Der Joystick hat in Nullstellung einen Wert von ca. 500…

Hier ein Auszug meines aktuellen Code´s - sollte reichen:

if(vertical > 600)
    {
    CounterClipPer++;                //counter Clip Periode
    ClipPer = CounterClipPer++;      //Zählwert an Variable ClipPer übergeben
    }
    lcd.setCursor(0, 1);             //eingestellten Wert am LCD ausgeben
    lcd.print (ClipPer);
    
    if(vertical < 300)
    {
    CounterClipPer--;
    ClipPer = CounterClipPer--;
    }
    lcd.setCursor(0, 1);
    lcd.print (ClipPer);

Vielen Dank für eure Hilfe!!

Dass Großschreibung verpönt ist, ist dir bewusst?

Zum Thema: Du musst dir einen sogenannten Merker anlegen, d.h. eine Variable, in der du dir den Zustand merkst. Im Klartext: Wenn dein Potiwert über 600 liegt und dein Merker ist 0, zählst du deinen Wert hoch und setzt du den Merker auf 1. Erst wenn dein Potiwert wieder unter 550 liegt, setzt du den Merker wieder zurück auf 0.

Sollte recht einfach sein,

Ausgangslage
Hochzählen von 767 - 1023
Runterzählen von 255 - 0

Pseudocode

void loop() {
if(analog_value >= 767) step += count();
else if(analog_value <= 255) step -=count();
}

int count()
{
if(millis() - last_millis > 20)
{
last_millis = millis();
return 1;
}
return 0;
}