ich habe den kondensaoter der parallel zu den tastern liegt (c6?c7? schaltplan!) entfernt. seitdem sind die ergebnisse besser.
allerdings muss nicht der taster öfter ausgelöst werden, sondern die funktion pollswitch öfter ausgeführt werden.
^^ wie hai schon sagt
ein "asuro pro" hat meines wissens nach geschrieben, das es die mgl. gibt die kondensatoren einfach auslöten.. bzw abzwicken..
ich habe den kondensaoter der parallel zu den tastern liegt (c6?c7? schaltplan!) entfernt. seitdem sind die ergebnisse besser.
allerdings muss nicht der taster öfter ausgelöst werden, sondern die funktion pollswitch öfter ausgeführt werden.
Hallo & Hilfe !
Ich bin noch ziemlich Neu auf diesem Gebiet und hab da mal ne Frage:
Was gibt mir PollSwitch eigentlich aus, wenn überhauptkeine Taste gedrückt ist? 0 ? Oder 1024 ? ...
Wenn ich die verschiedenen Schalter einzeln abfragen will, kann ich dann nicht schreiben
Vielleicht kann mir einer helfen...Code:/*** Funktion Vorwaerts ***/ void MotorFwd(void) { MotorDir(FWD,FWD); MotorSpeed(speed,speed); Sleep(200); } /*** Funktion Motor Stop ***/ void MotorStop(void) { MotorDir(BREAK,BREAK); MotorSpeed(0,0); Sleep(200); } int main(void) { uint8_t t1, t2; //Variablen für PollSwitch Init(); //Initialisieren EncoderInit(); //Encoder initialisieren while(1) { t1=0; t2=0; /*** Keine Taste -> Vorwärts fahren ***/ while (t1 == 0 && t2 == 0) { MotorFwd(); FrontLED(ON); BackLED(OFF,OFF); t1=PollSwitch; t2=PollSwitch; } MotorStop(); Go(-40,speed); /*** Fall 1 (Wand vorne rechts) ***/ if (t1 == t2 && t1 & 0x01) { Turn(-45,speed); } /*** Fall 2 (Wand vorne links ***/ else if (t1 == t2 && t1 & 0x1F) { Turn(45,speed); } ...
[/code]
Hallo wölkchen,
schau mal genau auf die Warnings, wenn Du Dein Programm compilierst.
Da sollte irgendwas in der Art vonvorkommen.Code:main.c:25: warning: initialization makes integer from pointer without a cast
Du weist nämlich an t1 und t2 die Adresse der Funktion PollSwitch() zu und nicht den Rückgabewert der Funktion.
In C/C++ sind die Klammern eines parameterlosen Funktionsaufrufes nicht optional. Ich glaube bei Basic geht sowas.
In C bekommst Du in diesem Fall einen Zeiger auf die Funktion, also ihre Adresse. Und die ist definitiv nicht 0 und wird auch über die gesamte Programmlaufzeit immer den gleichen Wert haben.
Es müsste also heissen:
Dann liefert Dir PollSwitch() auch wie gewünscht eine 0, wenn keine Taste gedrückt ist.Code:... BackLED(OFF,OFF); // t1=PollSwitch; <-- das sind Zeiger auf die Funktion // t2=PollSwitch; <-- ändern in die folgenden Zeilen t1 = PollSwitch(); t2 = PollSwitch(); } MotorStop(); ...
Gruß
Buggie
Das wohlüberlegte Treffen von Entscheidungen folgt einer alten Tradition: Zuerst raten und danach die anderen dafür verantwortlich machen.
Scott Adams
also in meinem programm was jetzt schon funktioniert gibt der pollswitch dann 1 aus wenn er gedrückt wird ansonsten 0
ich hab jedoch drei mal abfragen müssen dann klappts wunderbar und läuft wies soll
Hallo
Danke erst mal für die schnelle Antwort!
Ich hab meinen Code jetzt geändert, nur funktioniert das ganze immer noch nicht...
Also Dr.Asuro zeigt eigentlich den richtigen Wert, eine hohe Spannung (über 4V) und den Dezimalwert 1022 bzw. 1023.
Kann ich nicht irgendwie direkt auf diese Zahlen zuzugreifen ?
Ich muss nämlich gestehen, dass mir die Rechnung aus dem asuro.c ein Rätsel ist...
Gruß wölkchen
zeig deinen aktuellen code nochmal her...
Lesezeichen