- Reichelt Elektronik    Werbung      
Ergebnis 1 bis 10 von 22

Thema: Asuro Fernsteuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2014
    Beiträge
    17
    Danke. Jetzt funktioniert es. Zumindest nur ein Teil davon. Ich hab die Kontrolle gleich ganz weggelassen. Wenn ich jetzt aber eine Taste (Tastatur am PC) drücke passiert gar nichts. Und wenn ich dann nochmal eine drücke, wechselt die status LED von grün auf gelb. Danach passiert nichts mehr.

    Code:
    #include "asuro.h"
    int main(void) {
    	char msg[2];
    			{
    				SerRead("b",2,0);
    				msg[1] = '\0';
    			
    			while(1){
    				
    				if(msg[0] == 'w')
    				{
    					MotorDir(FWD,FWD);
    					MotorSpeed(255,255);
    					FrontLED(ON);
    				}
    				else if(msg[0] == 's')
    				{
    					MotorDir(RWD,RWD);
    					MotorSpeed(255,255);
    					StatusLED(RED);
    				}
    				else if(msg[0] == 'd')
    				{
    					MotorDir(FWD,FWD);
    					MotorSpeed(255,150);
    					BackLED(OFF,ON);
    				}
    				else if(msg[0] == 'a')
    				{
    					MotorDir(FWD,FWD);
    					MotorSpeed(150,255);
    					BackLED(ON,OFF);
    				}
    				else if(msg[0] == 'x')
    				{
    					MotorDir(FREE,FREE);
    					MotorSpeed(0,0);
    					BackLED(ON,ON);
    				}
    				else
    				{StatusLED(YELLOW);}
    			}
    	return 0;}
    }
    Vielleicht wisst ihr, was da los ist...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Wie oft wird SerRead angesprochen in dein while loop? Und wie oft werden dan neue Zeichen von dein PC verbindung bekommen? Bild  

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo,

    In deinem Programm fehlt die Init() Funktion zu Beginn des Programmes. Der Aufruf der SerRead() Funktion gehört in die while Schleife, sonst wird nur einmal ein Befehl gelesen.

    Code:
    #include "asuro.h"
    
    int main(void)
    {
      char msg[2];
      Init();
    
    
      while (1)
      {
        // fuege hier deinen Code ein
      }
      return 0;
    }

Berechtigungen

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

    Werbung      Solar Speicher und Akkus Tests