PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ASURO gehorcht nich...



StarFish
25.01.2007, 08:41
Hi,
bin noch ein totaler Anfänger was ASURO und Programmieren angeht, also wende ich mich lieber mal an euch erfahrene Programmierer. Also erstmal was ich vorhabe:
Ich habe einen ASURO gekauft und der is soweit zusammengebastelt. Nun wollte ich die 6 Tastsensoren vorne selber Funktionen zuweisen (z.B. vorwärts fahren, rückwärts fahren, links, rechts, etc.). Aber irgendwie klappt das mit dem Programmieren nich so ganz. Ich programmiere mit dem WinAVR Programmers Notepad. Wenn ich am ASURO testen will, ob die Taster auch so reagieren wie sie sollen, dann macht er anscheinend nur das was er will. Ich hab mal hier den Code, den ich (wenn vielleicht auch stümperhaft) zusammengebastelt hab. Was is der Fehler?



#include "asuro.h"

int main(void)
{
Init();
unsigned char sw;

MotorDir(FWD,FWD);
MotorSpeed(0,0);
BackLED(OFF,OFF);
FrontLED(OFF);
StatusLED(GREEN);
while(1)
{
sw = PollSwitch();
Sleep(100);
MotorSpeed(0,0);
if (sw & 0x01)
MotorDir(FWD,FWD);
MotorSpeed(150,150);
if (sw & 0x02)
MotorDir(RWD,RWD);
MotorSpeed(150,150);
if (sw & 0x04)
MotorDir(FWD,RWD);
MotorSpeed(150,150);
if (sw & 0x08)
MotorDir(RWD,FWD);
MotorSpeed(150,150);
if (sw & 0x10)
MotorDir(FWD,FWD);
MotorSpeed(150,0);
if (sw & 0x20)
MotorDir(FWD,FWD);
MotorSpeed(0,150);
}
return 0;

}
[/list]

Pascal
25.01.2007, 09:36
Bei den ifs hast du den Code so eingerückt, als ob nach einer if-Bedingung zwei Befehle ausgeführt werden sollen. Es wird aber nur der erste Befehl(Motordir) in Abhängigkeit vom if ausgeführt, der zweite(Motorspeed) auf jeden Fall, ohne dass dafür die if erfüllt sein muss.
Fass die zwei Befehle in einem Block zusammen. In etwa so:


if(...) {
Befehl1;
Befehl2;
}

StarFish
29.01.2007, 09:16
Hi, wollt mich noch bedanken für die schnelle Hilfe. :-) Hat einwandfrei funktioniert. Zuerst wollte der Asuro noch nich funktionieren. Hat sich dann aber herausgestellt, dass das Problem irgendwo auf dem Asuro war und nich im Programm. Nochmals danke. Wenn ich noch Fragen habe hoffe ich, dass ich mich wieder auf nen kleinen Anstoß bekomme. ;-)