PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastfunktion beim Asuro



Norki
01.06.2006, 22:03
Hallo!
Ich hab ein Problem (war ja klar ;)).
Ich habe folgendes Programm geschrieben:


#include "asuro.h"
#include "stdlib.h"


int main(void)
{
unsigned int i, taster=0;
Init();
MotorDir(FWD,FWD);
MotorSpeed(120,123);
PollSwitch();
while (taster==0)
{
taster=PollSwitch();
}
MotorSpeed(0,0);
while(1);
return 0;
}


Wie man sieht, ein sehr primitives Programm, welches einfach regeln soll, das die Motoren abschalten, wenn ein Taster gedrückt wird.
Aber leider bleibt der Asuro immer völlig zufällig einfach irgendwann stehen, also ohne Tasterdruck oder manchmal fährt er gar nicht erst los. Eigentlich ist das Programm so, wie die Beispielprogramme hier im Forum und in der Anleitung, aber er will das nicht so machen. [-(

Alternativ hab ich mir mal ausgeben lassen, wie die Tasterwerte so sind, aber die sind eigentlich immer 0, also das es eigentlich keine Schaltungsfehler seien können (also Kurzschlüsse o.ä.).

Weiß jemand Rat, wieso mein Asuro nicht so will wie ich? :)

Danke und Tschö

Norki


P.S.:
Kurzer Zwischenstand:
Grade nach weiteren Tests hat er zum einen ohne Kollision ne 1 ausgegeben (also die PollSwitch Funktion) und ich würde behaupten, es liegt an der Last. Also wenn ich ihn in der Luft halte, läuft er durch, muss er wirklich fahren funktioniert es nicht zuverlässig.
Kennt das jemand? :-k

02.06.2006, 09:22
Hallo Norki,
ich hatte mal die Zahnräder falsch aufgesteckt (es sind zwei verschiedene Typen mit unterschiedlichem Ritzel). Dann lassen sich die Räder nicht mehr so leicht drehen und der Asuro fährt erst bei hohem SPEED an. Vielleicht hilft es Dir weiter.
Gruss Klecksinger

Norki
02.06.2006, 13:44
Hallo!
Ne, die Zahnräder sind schon richtig dran.

Aber ich habe gestern nachmal das Forum durchforstet und bin auf folgenden Eintrag gestoßen:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=15753

Da steht, die Toleranzen und Spannungsschwankungen sind schuld an falsch interpretierten Tastwerten. Das deckt sich ja auch mit meinen Beobachtungen, nämlich, dass unter Last der Fehler passiert.
Ich habe deswegen mal die erweiterte Bibliothek genutzt, da dort der Rückgabewert der Funktion besser hinkommt, also bisher geht es... [-o<

Aber leider habe ich jetzt auf den linken 3 Tastern falsche Werte, nämlich 7,15,30. Das wäre an sich ja nicht so schlimm, damit kann ich leben.

Aber jetzt eine andere Idee. Könnte man diese Spannungseinbrüche(sind es welche? ) nicht damit abfangen, indem man hinter die Stromversorgung einfach einen dicken Kondensator hängt?

gruß
Norki

Mucki
07.06.2006, 17:27
Hi Norki,

schau mal unter http://asuro.pytalhost.de/pmwiki/pmwiki.php?n=Main.TastSensorTestC

Hier findest du ein paar Hinweise zu deinem Problem als Quelltextkommentar.

Hope it helps,

Norki
07.06.2006, 19:57
Hi!
Danke nochmal dafür, ich habe das Problem mittlerweile eigentlich ganz gut unter Kontrolle, habe aber jetzt nochmal eine Frage, die eher grundsätzlich c betrifft.
Und zwar wird bei diesem PollSwitch Problem, die Bedingung für eine Schleife häufig so gewählt :

(t1 && t2 && t1 == t2)

Was bedeutet das genau? Klar ist mir schon das "&&" das logische und und == das logische gleich sind, aber was sagt diese Bedingung in Worten aus?
"t1 und t2 und t1=t2" ???? :-k

Warum davor "t1&&t2"? Soll da alles gleich sein? Wäre ja das erstrebenswerte, dass bei zwei Anfragen das gleiche herauskommt, aber dann würde doch t1 == t2 reichen... :-k

Kann mir das einer erklären? 8-[

gruß
Norki

m.a.r.v.i.n
07.06.2006, 20:57
Hallo Norki,

statt
(t1 && t2 && t1 == t2)

könnte man auch schreiben:
(t1 != 0 && t2 != 0 && t1 == t2)

Soll heißen t1 muß ungleich 0 sein und t2 ungleich 0 und t1 identisch mit t2.
Man will ja wissen, ob ein Taster betätigt wurde, und ob 2x der gleiche Tastenwert erkannt wurde. (OK, die Abfrage t2 != 0 könnte man sich eigentlich sparen)

Gruß m.a.r.v.i.n