-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 34

Thema: Asuro per IR-Transceiver fernsteuern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.05.2007
    Ort
    Giessen und Fulda
    Alter
    32
    Beiträge
    81

    Asuro per IR-Transceiver fernsteuern

    Anzeige

    Servus, hab hier mal ein kleines Programm geschrieben, mit dem man den Asuro per Tastatur(W,A,S,D) fernsteuern kann.
    (Natürlich über das Terminalprogramm von Windows)
    Evtl. kann es von euch ja jemand gebrauchen.

    MfG Mr.Roboto


    Code:
    // Programm von Mr.Roboto - 21.07.07
    
    #include "asuro.h"
    
    #define Motorgeschwindigkeit MotorSpeed(180,200);
    
    int main(void)
    {
    	int i;
    	char input[1];
    
    	do
    	{
    
    		Init();
    		SerRead(input,1,0);
    		i=0;
    		
    		
    		if(input[0]=='w')
    		{
    			StatusLED(YELLOW);
    			do
    			{
    				MotorDir(FWD,FWD);
    				Motorgeschwindigkeit
    				Sleep(255);
    				i++;
    			}while(i<=80);
    		}
    		
    		if(input[0]=='s')
    		{
    			StatusLED(RED);
    			do
    			{
    				MotorDir(RWD,RWD);
    				Motorgeschwindigkeit
    				Sleep(255);
    				i++;
    			}while(i<=80);
    		}
    
    		if(input[0]=='a')
    		{
    			BackLED(ON,OFF);
    			do
    			{
    				MotorDir(BREAK,FWD);
    				Motorgeschwindigkeit
    				Sleep(255);
    				i++;
    			}while(i<=80);
    		}
    		
    		if(input[0]=='d')
    		{
    			BackLED(OFF,ON);
    			do
    			{
    				MotorDir(FWD,BREAK);
    				Motorgeschwindigkeit
    				Sleep(255);
    				i++;
    			}while(i<=80);
    		}
    		
    	}while(1);
    
    }

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Schön, geht auch bei mir. (Ja, ich weiss ich habe ne lange Leitung. Am Transceiver natürlich )
    Es reicht aber wenn du das Init() vor der do-Schleife machst.
    Lieber Asuro programieren als arbeiten gehen.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.06.2007
    Alter
    25
    Beiträge
    104
    Ja bei mir geht es auch!Großes Lob! =D>
    Jetzt hab ich die SerRead Geschicht verstanden, obwohl ich sie mir noch nie im Handbuch angeschaut hab.
    Danke schön!

    Kurze Hinzufügung:
    Code:
    if(input[0]=='x')
    {
    BackLED(ON,ON);
    do
    {
    MotorDir(BREAK,BREAK);
    Motorgeschwindigkeit
    Sleep(255);
    i++;
    }while(i<=80);
    }
    Wenn man dann "X" drückt bleibt er stehen, damit mit man ihn z.B. besser ausschalten kann. Das aber auch nur am Rande.
    Gruß Roboaktiv


    It is öde to be blöde

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.05.2007
    Ort
    Giessen und Fulda
    Alter
    32
    Beiträge
    81
    Bitteschön ... aber das mit dem x braucht man doch nicht .... wenn ich nichts drücke bleibt er doch auch stehen !!

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Kleiner Tipp: Mit der switch/case-Funktion kann man die Abfrage der empfangenen Zeichen recht übersichtlich und elegant lösen:

    http://www.roboternetz.de/phpBB2/zei...=287750#287750

    Ist zwar für eine TV-Fernbedienung (RC5), zeigt aber wie man case einsetzen kann. Das von der Fernbedienung empfangene Zeichen steht in temp.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.05.2007
    Ort
    Giessen und Fulda
    Alter
    32
    Beiträge
    81
    nix da Switch-Case !!!! [-X ... BACK TO THE ROOTS !!! ... ich steh auf die gute alte IF-Anweisung, net so ein neumodischer Kram !!

    Kleiner Spass, jo Switch-Case sieht schon cool aus im Code

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen,
    nichts gegen switch/case. Erhöht die Übersichtlichkeit enorm.
    Aber die HEX-Datei wird um Meilen länger. Ich habe mal getestet, dass sich case erst ab ca. 20! verschiedenen Werten lohnt gegenüber dem 'altmodischen' IF.
    Also los: Weitere Tastenkommandos erfinden
    w, s, a, d von Mr.Roboto
    x von Roboaktiv
    0 = Status-LED Aus
    1 = Status-LED Grün
    2 = Status-LED Gelb
    3 = Status-LED Rot
    4 = Linien-LED Aus
    5 = Linien-LED An
    e = schneller
    d = langsamer
    ...
    Lieber Asuro programieren als arbeiten gehen.

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Aber die HEX-Datei wird um Meilen länger. Ich habe mal getestet, dass sich case erst ab ca. 20! verschiedenen Werten lohnt gegenüber dem 'altmodischen' IF.
    Oh, so habe ich das noch nie betrachtet. Sorry.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo radbruch, das Sorry ist natürlich überflüssig. Aber wenn Platzprobleme auftauchen, sucht man nach dem letzten zu sparenden Byte.
    Das Problem hatte ich vor allem bei dem Programm für die Ermittlung der Parameter für die myasuro.h-Datei aus der LIB.
    Lieber Asuro programieren als arbeiten gehen.

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    bist du sicher dass das mit den 20 werten stimmt?

    Code:
    zuerst 10 werte mit if
    
    if(wert==1){
    anweisung 1;
    anweisung 2;
    }
    if(wert==2){
    anweisung 1;
    anweisung 2;
    }
    if(wert==3){
    anweisung 1;
    anweisung 2;
    }
    if(wert==4){
    anweisung 1;
    anweisung 2;
    }
    if(wert==5){
    anweisung 1;
    anweisung 2;
    }
    if(wert==6){
    anweisung 1;
    anweisung 2;
    }
    if(wert==7){
    anweisung 1;
    anweisung 2;
    }
    if(wert==8){
    anweisung 1;
    anweisung 2;
    }
    if(wert==9){
    anweisung 1;
    anweisung 2;
    }
    if(wert==10){
    anweisung 1;
    anweisung 2;
    }
    
    jetzt 10 werte mit case:
    
    switch (wert){
    case 1:Anweisung 1;
           Anweisung 2;
           break;
    case 2:Anweisung 1;
           Anweisung 2;
           break;
    case 3:Anweisung 1;
           Anweisung 2;
           break;
    case 4:Anweisung 1;
           Anweisung 2;
           break;
    case 5:Anweisung 1;
           Anweisung 2;
           break;
    case 6:Anweisung 1;
           Anweisung 2;
           break;
    case 7:Anweisung 1;
           Anweisung 2;
           break;
    case 8:Anweisung 1;
           Anweisung 2;
           break;
    case 9:Anweisung 1;
           Anweisung 2;
           break;
    case 10:Anweisung 1;
           Anweisung 2;
           break;
    }
    hmm.. ich denk das ist in erster linie eine entscheidung der vorliebe, ich mag if ganz gern. aber wenns um menüs geht oder so dann wähle ich meist switch/case
    kleinschreibung ist cool!

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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