der Code wertet keine Flanken aus sondern den Pegelwechsel (change). Würde mit Flanken jedoch auch nicht funktionieren.
if(digitalRead(2) != digitalRead(3)) // A und B Signal des Inkrementalgebers vergleichen
zaehler++; // wenn A und B ungleich ist, Wert um 1 erhöhen
else
zaehler--;
Es gibt immer irgendeinen Pegelwechsel. Egal welcher.
Du kannst darauf rumreiten wie lustig bist, es beantwortet nicht meine Frage.
Was soll diese Auswertung anderes machen als das?
Warum spielst Du dieses Beispiel nicht auf Deinen Arduino auf, prömpelst zwei Taster dran und schaust, was passiert?
(Ein Encoder ginge hier natürlich auch)
Och Scheiße.
Ich nehme alles zurück und behaupte das Gegenteil.
Ich habe immer nur die Auswertung betrachtet und dabei völlig außer acht gelassen das in die ISR immer beim gleichen Pin gesprungen wird. Aus unbekannten Grund dachte ich er springt immer in die ISR wenn sich einer von beiden ändert.
Entschuldigung!
Um alles weitere zu klären wäre es hilfreich wenn mich3499 seine Terminalausgabe zeigt bzw. den Sprung von Rastung zu Rastung wenn er eine Rastung hat. Bzw. näher erklärt was ihm am zählen stört.
Vielen Dank :). Dein letzter Sketch macht genau das, was ich wollte. Jetzt zählt er bei jedem klick des Encoders und nicht bei jedem zweiten wie vorher.
Was genau bedeutet der "?+1:-1" Befehl? Ist das "?" der vorherige Wert? Wenn ja, woher bekommt er den?
Vielen Dank :). Dein letzter Sketch macht genau das, was ich wollte. Jetzt zählt er bei jedem klick des Encoders und nicht bei jedem zweiten wie vorher.
Was genau bedeutet der "?+1:-1" Befehl? Ist das "?" der vorherige Wert? Wenn ja, woher bekommt er den?
Das ist der "c++ ternary operator" oder auch "c++ conditional operator" genannt
Oder etwas anfängerfreundlicher: IF
Der Ausdruck vor dem ? ist die Bedingung, wenn Diese wahr ist, wird der Wert hinter dem ? weiter gegeben, sonst der Wert hinter der :.
In der Zuweisung 'zaehler+= '
wird geprüft, ob digitalRead(2)==digitalRead(3) ist, wenn JA, wird +1, sonst -1 zurück gegen.
Und bei zaehler+=-1 wird Minus Eins addiert, oder eben Eins suptrahiert.