- 3D-Druck Einstieg und Tipps         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Wie deklariere ich die Pollswitches beim ASURO

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.10.2005
    Ort
    Mainz
    Beiträge
    27

    Wie deklariere ich die Pollswitches beim ASURO

    Anzeige

    Praxistest und DIY Projekte
    Code:
     #include "asuro.h"
    #define POLLSWITCH KNOPF
    
    int main(void)
    {
    	 Init ();
    	
    	 
    	 start:
    	 
    	 MotorDir(FWD,FWD);
    	 MotorSpeed(250,233);
    	 StatusLED(GREEN);
    	 FrontLED(ON);
    	 
    	 
    	 
    	 if (PollSwitch()>0);
    	 else if (PollSwitch()>0) {goto stop;}
    	 else {goto start;}
    	 
    	 stop:
    	 MotorSpeed(0,0);
    	 
    	 
    	
    	while(1);
    	return 0;
    }

    -----

    das mein code für grade aus fahren und stehen bleiben wenn er irgendwo anstößt.
    nur wie bestimm ich jetzt die PollSwitches?

    also wenn K1 gedrückt wrd dreht er links rum bei K2 spielt er musik bei K3 fährt er rückwärts usw

    eben für jeden einzelnen Taster eine einzelne Funktion.

    in der Anleitung find ich es nicht.
    ich hab mir aber gedacht:


    Code:
     if (PollSwitch(1,2,3)>0);
    	 else if (PollSwitch(1,2,3)>0) {goto stop;}
    	 else {goto start;}
    eben für K1=1 für K2=2 K3=3 usw in die erste klammer nur da kommt en fehler der sagt mir

    error: too many arguments to function `PollSwitch'

    schon mal danke im vorraus.....

    gruß xyphrox

  2. #2
    die fkt Pollswitch bekommt keine argumente übergeben, sondern die klammer bleibt leer, dh du musst mit dem wert arbeiten, den sie zurückgibt.

    wenn nur schalter 1 gedrückt ist, liefert sie 1, bei 2 2, bei 3 4, bei 4 8, bei 5 16 und bei 6 32. sind mehrere schalter gleichzeitig gedrückt, bekommt man die entsprechende summe

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    10.10.2005
    Ort
    Mainz
    Beiträge
    27
    also angenommen

    K1 und K2 werden gedrückt
    dann hab ich den wert " 3 " da K1 1 und K2 2 liefert ?
    und addiert gibt das 3 ...

    hab ich das richtig verstanden ?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    10.10.2005
    Ort
    Mainz
    Beiträge
    27
    @ Flab

    hab das was du geschrieben hast in der anleitung gefunden....
    du hast einen fehler gemacht
    K6 liefert den wert 1 und K1 liefert den wert 32
    k1 - 32
    k2 - 16
    k3 - 8
    k4 - 4
    k5 - 2
    k6 - 1

    [ Seite 71 oben ]

    trotzdem bin ich dem ergebnis noch nit näher gekommen

    ich hab probiert :

    if (PollSwitch()>73)

    die 73 s die zahl die maximal eliefert werden kann wenn alle gleichzeitig gedrückt werden
    da wir aber die bedingung größer als > haben kann er also im prinzip nie ausgehen
    er geht aber aus wenn nur einer gedrückt wird

    ich weiß noch nicht ganz wie ich mit den werten arbeiten muß.....

  5. #5
    sorry, hab ich mich vertan

    du aber auch, denn
    1+2+4+8+16+32=63

    ist aber auch egal, da scheint bei dir irgendwo anders noch ein wurm drin zu sein... sicher das er das richtige programm compiliert und geflasht hat?

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    10.10.2005
    Ort
    Mainz
    Beiträge
    27
    hupsala

    63 stimmt geb ich dir recht
    irren is nun mal männlich

    mit den werten hast du mir ja nun schon geholfen.
    danke

    nur wie setze ich die wo richtig ein...?

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.04.2005
    Ort
    Weilburg
    Beiträge
    676
    Meine Version:
    Code:
    	sw = PollSwitch();
    	// PrintInt(sw);	/* will wissen was da  kommt */
    	if (sw & 0x01) 
    		{
    			tu_dies();
                    }
    	if (sw & 0x02)
    		{
    			tu_das();
    		}
    	if (sw & 0x04)
    		{	
    			mach_was();
    		}
    	if (sw & 0x08)
    		{
    			mach_nix();
    		}
    	if (sw & 0x10)
    		{
    			tu_nochwas();
    		}
    	if (sw & 0x20)
    		{
    			fetich();
    		}
    So geht es auch wenn mehrere Taste gleichzeitig gedrückt werden.

    Oft bringt aber Pollswitch() falsche werte. Dann muss man noch in der asuro.c ändern:
    https://www.roboternetz.de/phpBB2/ze...=106332#106332
    Prostetnic Vogon Jeltz

    2B | ~2B, That is the Question?
    The Answer is FF!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    10.10.2005
    Ort
    Mainz
    Beiträge
    27
    mhh ok danke

    du schreibst da in jedem abschnitt:

    & 0xXX

    wofür steht z.b. die 10 und die 20 ?
    das sind doch nicht diese zahlen die von einem taster ausgegeben werden oder etwa doch ...?

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

    die Zahlen 0xXX stehen für Hexadezimalzahlen.
    Dezimal bedeutet 0x01=1, 0x02=2 0x04=4, 0x08=8, 0x10=16, 0x20=32.

    Das & Zeichen ist eine logische UND-Verknüpfung und dient zur Verknüpfung des gelesenen Tastenwertes mit der entsprechenden Zahl.
    Ist das Ergebnis des Vergleichs nicht 0 ist die Bedingung wahr.

    Dadurch werden auch Tastenkombinationen erfaßt:
    z.B Tastenwert 7 (Taste K6, K5 und K4 gedrückt) besteht aus 1+2+4.
    Bei der Abfrage werden nacheinander die Funktionen tu_dies(), tu_das() und mach_was() aus vogons Beispiel aufgerufen, weil die Bedingung jeweils wahr ist.

    Alles klar?

    Gruß Peter

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    10.10.2005
    Ort
    Mainz
    Beiträge
    27
    Code:
    #include "asuro.h"
    #define POLLSWITCH sw
    // PrintInt(sw);   /* will wissen was da  kommt */
    
    int main(void)
    {
         Init ();
         
         
         start:
         
         MotorDir(FWD,FWD);
         MotorSpeed(250,233);
         StatusLED(GREEN);
         FrontLED(ON);
         
    	 if (sw & 0x01)
          {
             MotorSpeed(0,0);
    		 else {goto start;}
    		 }
       
        
        stop:
        MotorSpeed(0,0);
       
       
       
       while(1);
       return 0;
    }
    ---

    ok es geht immer noch nicht....
    wo liegt mein fehler....?
    danke marvin

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen