-         

Ergebnis 1 bis 3 von 3

Thema: ASURO gehorcht nich...

  1. #1

    ASURO gehorcht nich...

    Anzeige

    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?

    Code:
    #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]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    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:
    Code:
    if(...) {
        Befehl1;
        Befehl2;
    }

  3. #3
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •