Ich bin gerade auf folgendes Video gestoßen
(https://www.youtube.com/watch?v=bHgAbA7qq0w) und würde das Ganze nun
gerne nachbauen.
Ich bin gerade dabei, dass Prinzip zu verstehen. Leider bin ich mit der
Ansteuerung (bzw. dem Auslesen) von BLDC Motoren nicht so ganz vertraut.
Auf der im Video verlinkten Webseite
(http://www.fleurey.com/franck/pmwiki.php?n=Main.HDDEncoder) findet man
neben einer SKizze auch den Quellcode.
Ich habe mal die Schaltung als Skizze angehängt.
Im Quellcode passiert nun (unter anderem) folgendes:
1 | int enc_last = 0;
|
2 | void pool_enc() {
|
3 | int val = ENCVAL;
|
4 | if (val == enc_last) return;
|
5 | else if (enc_last == 1 && val == 3) (*enc_dec)();
|
6 | else if (enc_last == 1 && val == 0) (*enc_inc)();
|
7 | else if (enc_last == 2 && val == 0) (*enc_dec)();
|
8 | else if (enc_last == 2 && val == 3) (*enc_inc)();
|
9 | enc_last = val;
|
10 | }
|
Ich verstehe ich nicht, warum hier "enc_last" nur auf die Fälle "1" und
"2" geprüft wird? Prinzipiell können doch auch die Fälle "0" und "3"
auftreten. Des Weiteren wird "val" nur auf "0" und "3" geprüft, nicht
aber auf "1" und "2". Vermutlich macht es schon Sinn so, nur verstehe
ich leider nicht so ganz warum. Kann mir da einer von euch eben auf die
Sprünge helfen?
Vielen lieben Dank!