-         

Ergebnis 1 bis 10 von 10

Thema: asuros taster

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.11.2006
    Alter
    24
    Beiträge
    88

    asuros taster

    Anzeige

    hallo,
    ich wollte frage, wie man beim Asuro die Taster Programmieren kann! in der Anleitung steht darüber nichts genaueres!!!
    danke schon im vorraus
    t

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    01.10.2006
    Beiträge
    23

    Taster

    Die Taster sind sehr einfach auszuwerten. Am besten verwendest du die if Funktion.
    Bsp. if (PollSwitch>0) {Anwendung}
    wenn Taster >0 soll er dieses oder jenes tun.
    sehr simple
    Wenn dir dies nicht weiter hilft, solltest du am besten einige Beispielprogramme von der Asuro CD anschauen.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.11.2006
    Alter
    24
    Beiträge
    88
    ja hab ich aber da wurde ich nicht recht schlau draus! aber danke!!!
    mfg
    t

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    wenn du die erweiterte lib hernimmst kannst du auch einfach
    if (!switched) {
    }

    schreiben.
    das geht einfacher, weil switched über ein interrupt gesetzt wird.

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    Du kannst nicht direkt eine Funktion auf einen der Taster legen. Das einzige was du machen kannst ist folgendes:

    Mit der Funktion PollSwitch() kannst du abfragen, ob ein taster gedrückt wurde. Die Funktion gibt einen Wert Zurück, also eine einzige Zahl. Was diese Zahl bedeutet, steht in der Anleitung, du muss mithilfe dieser Zahl "ausrechen" welche/r taster gedrückt wurde/n. Wenn du das herausgefunden hast, dann kannst du mit dieser Information arbeiten und z.B. durch eine If-prüfung eine funktion ausführen lassen.
    kleinschreibung ist cool!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    21.11.2006
    Ort
    Mainz
    Beiträge
    13
    Hallo

    Pollswitch liefert bitweise den Zustand der Schalter.
    In Demo.c ist eine einfache Abfrage:

    sw = PollSwitch();
    if (sw == 0x01) LineDemo();
    if (sw == 0x02) RechteckDemo();
    if (sw == 0x04) PCDemo();
    if (sw == 0x0 IRDemo();

    Nach dieser Methode darf man nur einzelne Schalter drücken, sonst geht es nicht. Will man mehrere Schalter gleichzeitig abfragen, muß man schreiben:

    sw & 0x01, ...
    Gruß

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    aber diese hex zahlen bringen doch gar nix oder?
    man kann genauso gut die zwei nullen un das x weglassen. das müsste genauso gehen.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    12.11.2006
    Beiträge
    15
    @EDH:

    Doch, die 0x vor den Zahlen bringt was. Auch wenn nicht auf den ersten Blick. Wenn man mit Bitoperationen arbeitet, ist es für die Lesbarkeit von Programmen vorteilhaft Zahlen im Quellcode in Binär oder Hexadezimalschreibweise zu benutzen. Auch führende Nullen zu verwenden hilft ungemein.

    In diesem Beispiel waren die Zahlen alle kleiner als dezimal 10 , so dass mit 0x und ohne keinen Unterschied macht. Aber man sollte sich angewöhnen, die Zahlensysteme nicht innerhalb eines logischen Blocks zu mischen. Am besten sogar innerhalb des gesamten Codes nicht.

    Andere Leute, die Deinen Code lesen, werden es Dir danken. Du selbst auch, wenn Du mal nach 6 Monaten Deinen eigenen Code wieder liest.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Doch, die 0x vor den Zahlen bringt was.
    Den Vorteil sieht man an besten bei gepackten BCD Zahlen.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    also um das mal alles zusammenzufassen:

    dezimalzahlen schreibt man so:
    12345
    Hexadeziamlzahlen so:
    0x12FF3
    Binäre zahlen so:
    0b10100101001

    um die taster abzufragen kann man also folgendes machen:
    Taster eins gedrückt in binär ist 000001 = 0x01 = 1
    Taster zwei gedrückt in binär ist 000010 = 0x02 = 2
    Taster drei gedrückt in binär ist 000100 = 0x04 = 4
    Taster vier gedrückt in binär ist 001000 = 0x08 = 8
    Taster fünf gedrückt in binär ist 010000 = 0x10 (nicht 0x0F) = 16
    Taster sechs gedrückt in binär ist 100000 = 0x20 = 32

    pollswitch gibt die SUMME aller gedrückten taster zurück. wenn taster 1,3 und 4 gedrückt werden dann wird 1+4+8=13=0x0D=0b001101 zurückgegeben. was man damit macht muss man selbst überlegen. möglichkeiten sind:

    Ist Genau dieser eine Taster bzw diese Tastenkombination gedrückt worden?
    --> if(PollSwitch()==[gewünschte tastenkombination]){...
    wobei die gewünschte tastenkombination als dezimal, hexadezimal und ich glaub auch als binäre zahl angegeben werden darf.

    Ist diese Taste (unter anderem oder auch allein) gedrückt worden?
    --> if((PollSwitch()&[gew.Taste])){...
    Wobei wieder die Taste Als Hex, dez, oder binäre zahl angegeben werden muss. Hintergrund:
    Beispielsweise Gibt Pollswitch 0b110011 zurück.
    geprüft soll werden ob die taste 0b010000 gedrückt wurde.
    Es wird bitweise verglichen, aus PollSwitch()&0b010000 wird also 0b010000.
    0b010000 ist ungleich 0, und alle werte ungleich 0 gelten als "WAHR". also ist die if-bedingung erfüllt.
    PollSwitch()&0b001000 würde in diesem falle 0b000000 zurückgeben, und 0b000000 ist gleich 0 und damit "FALSCH".

    Ebenso wird verfahren, wenn gefragt wird ob eine von Mehreren bestimmten tasten gedrückt wurde, unabhängig davon ob noch mehr gedrückt sind:
    --> if((PollSwitch()&[Summe aller gew. Tasten])){...

    und wenn man rausfinden will ob überhaupt irgend eine taste gedrückt wurde, muss man nur fragen on PollSwitch größer als 0 ist.
    --> if(PollSwitch()>0){...

    abschliessend ist zu sagen:
    Da man (aufgrund der kürzeren schreibweise) meist nur dezi-oder hexadezimalzahlen nutzt, sollte man immer 0x davorschreiben wenn es hex zahlen sind.

    für alle zahlen < 10 ist das zwar völlig egal, hilft aber dem verständnis doch sehr.

    davon abgesehen sollten hexzahlen immer zweistellig angegeben werden, bei dezimalen ist das egal, und bei binärzahlen werden eigentlich immer 8 ziffern verwendet (weil 2 hex- und 8 bin-zahlen genau ein byte abdecken). der übersicht halber (es gibt ja nur 6 tasten) habe ich die führenden nullen oben weggelassen.
    Auch das dient nur dem verständnis und ist (meist) für den Programmablauf unerheblich.
    kleinschreibung ist cool!

Berechtigungen

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