PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Kollisionstaster



Sherminator
10.04.2008, 19:40
Hallo liebe Bastler....ich hab folgendes Problem: Ich wollte meinen ASURO so programmieren, dass er einem gegenstand hinterherfährt.D.h. die Taster müssen immer gedrückt sein und wenn z.B. der ganz linke Taster gedrückt wurde ist es ja logisch das er ne kleine links Kurve fahrn muss.Ich hab keine Ahnung auf dem Gebiet und joa^^....hab was programmiert nur iwie will das nich so wie ich will.Bei mir macht der iwie gar nix...nur die LED leuchtet grün auf.Achja und ich hab in einem anderen Beitrag gesehn das man C7 und C6 rauslöten kann/ soll wie auch immer....das habe ich gemacht weil das dann besser funktionieren sollte ...ich hoffe das wird mir jetzt nich zum verhängnis....denn das einlöten wird ziemlich schwierig^^...also ich hoffe ihr könnt mir helfen achja und hier is das programm:



#include "asuro.h"
int main (void) {
unsigned char taste;
Init();
MotorDir(FWD,FWD);
MotorSpeed(120,120);
while (PollSwitch!=0){
taste= PollSwitch();
if ((taste>1) && (PollSwitch()>1) && (taste<32) && (PollSwitch()<32)) {
MotorSpeed(120,120);}
else if ((taste==1) && (PollSwitch()==1)) {
MotorSpeed(200,150);}
else if ((taste==32) && (PollSwitch()==32)){
MotorSpeed(200,120);}
else {
MotorDir(FWD,FWD);
MotorSpeed(120,120);}
}
}

damaltor
10.04.2008, 19:57
du solltest nicht beide auslöten, sondern nur den der direkt parallel zu den tastern geschaltet ist. wenn beide raus sind, wird das eher stören.

das problem an deinem programm ist, dass der asuro gar nicht erst losfährt: wenn nämlich keine taste gedrückt ist, bleibt er stehen bzw geht in einen ndefinierten zustand, da das programm einfach beendet wird (was mei einem mikrocontroller nie passieren darf!!).

ausserdem dürfte sich das programm nicht ohne warnings kompilieren lassen, oder?

hast du gespeichert bevor du kompiliert hast?

hai1991
10.04.2008, 20:01
hallo sherminator

while (PollSwitch!=0) heißt,dass er alles was in den {} -Klammern steht nur durchlaufen wird wenn kein Taster gedrückt wird! Das heiß so bald du einen Taster drücktst (das soll bei dir immer der Fall sein, wenn ich es richtig verstanden habe) springt er ans Ende der Schleife, und das ist auch das Ende des Programmes, darum tut sich nichts.
ich würde eher scheiben while(1) (das ist eine Endlosschleife, das heißt er wieder holt sie immer) und darin dein Programm.

weiters sollte man am Ende immer ein while(1); return 0; schreiben (erklärung siehe Anleitung)

mfg hai1991

Sherminator
11.04.2008, 12:04
soo hab jetzt C6 und C7 wieder eingelötet und das programm überarbeitet so wie ihr es gesagt habt....funktioniert auch alles so wie es sollte.....big thx ihr habt mir echt geholfen ;)

damaltor
11.04.2008, 15:58
kein problem. willkommen im forum, und noch viel spaß...