Guten Morgen izaseba.
Wenigstens einer der mal aufpasst.
Dafür habe ich die Lösung von ElTransistor's Problem.
Es ist tatsächlich so wie ich schon vermutet hatte, dass der Taster 6 (von vorne gesehen rechts) wie immer spinnt.
Obwohl ich den Umrechenwert bei mir sehr gut justiert habe, kommt bei Taster 6 eben nicht 32 raus sondern nur 31.
Und dann ist es so wie ich schon oben geschrieben hatte.
Was habe ich gemacht:
Code:
if (t1 & 0x07) /* Tasten links gedrückt? */
{
SerWrite("\n\rL ", 4);
PrintInt(t1);
MotorDir(FWD,RWD);
..
..
if (t1 & 0x38) /* Tasten rechts gedrückt? */
{
SerWrite("\n\rR ", 4);
PrintInt(t1);
MotorDir(RWD,FWD);
..
..
Wie ich schon vorgeschlagen hatte.
Bei mir kommt dann:
L 1
L 2
L 4
R 8
R 16
L 31
R 31
Wobei das letzte "R 31" natürlich dann aus dem "if (t1 & 0x3 /* Tasten rechts gedrückt? */" kommt.
Lösung:
Code:
if (t1 & 0x07) /* Tasten links gedrückt? */
{
t1 = 0;
MotorDir(FWD,RWD);
..
..
if (t1 & 0x38) /* Tasten rechts gedrückt? */
{
t1 = 0; // Das ist hier natürlich Ueberfluessig. Aber wer weiß schon,
// welche Taste als naechstes abgefragt werden soll.
MotorDir(RWD,FWD);
..
..
Jubel, es geht nun super.
Warum der Code aus dem Beispiel funktioniert ist mir nicht klar. Ich vermute, dass der Regler mit seinem ständigen 'gefummel' an der Geschwindigkeitsvorgabe einfach zu viele Störungen in die Tastenmessung bringt.
So long
Gruß Sternthaler
Lesezeichen