- 3D-Druck Einstieg und Tipps         
Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte
Ergebnis 41 bis 50 von 58

Thema: Probleme mit Tastern

  1. #41
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    Anzeige

    Praxistest und DIY Projekte
    ja, genau das würde ich auch sagen. dazu sollte mein kleines programm da oben taugen. funktioniert es?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  2. #42
    hi

    ich hab jetz das 2. programm von dalmator laufen lassen (da fehlt noch ein ; im code hinter "taster")
    das hyperterminal spuckt aber nur symbole(herzchen usw) aus, wenn ich irgendwelche taster drücke kommen dann ganz unterschiedliche sachen, aber nix womit ich was anfangen könnte!

    @sternthaler ich habe diesen code 1 zu 1 aus dem kollisionstest kopiert, und da funzt es ja! kann es irgendwie mit der "umgebung" also dem rahmen deines multitaskingcodes zu tun haben? sonst kann ich mir nämlich nicht erklären wieso die methode sonst funzt und hier einen (bei mir) reproduzierbaren fehler verursacht.


    julian

  3. #43
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo ElTransistor,
    Kleines Problem ist im 'Prozess' 4 (geradeausfahren von waste). Dort fehlt das Setzen der neuen Zeit mit:
    "v_P4_lasttime = v_time + d_P4_wartezeit;"
    Das allerdings sollte nicht zu deinem Problem führen, da du ja die Ausweichfahrt komplett im 'Prozess' 1 (Tasten auswerten) abhandelst.

    Ich werde dein Programm mal bei mir übersetzen und dann berichten.

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  4. #44
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo
    probier mal das hier. kann da mal einer drüber schauen bitte?
    Code:
    SerWrite(*wert,5);
    sollte
    Code:
    SerWrite(wert,5);
    heißen

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

  5. #45
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Guten Morgen izaseba.
    Wenigstens einer der mal aufpasst.

    Dafür habe ich die Lösung von ElTransistor's Problem.
    Es ist tatsächlich so wie ich schon vermutet hatte, dass der Taster 6 (von vorne gesehen rechts) wie immer spinnt.
    Obwohl ich den Umrechenwert bei mir sehr gut justiert habe, kommt bei Taster 6 eben nicht 32 raus sondern nur 31.
    Und dann ist es so wie ich schon oben geschrieben hatte.

    Was habe ich gemacht:
    Code:
                if (t1 & 0x07) /* Tasten links gedrückt? */
                {
    SerWrite("\n\rL ", 4);
    PrintInt(t1);
                   MotorDir(FWD,RWD);
    ..
    ..
                if (t1 & 0x38) /* Tasten rechts gedrückt? */
                {
    SerWrite("\n\rR ", 4);
    PrintInt(t1);
                   MotorDir(RWD,FWD);
    ..
    ..
    Wie ich schon vorgeschlagen hatte.
    Bei mir kommt dann:
    L 1
    L 2
    L 4
    R 8
    R 16
    L 31
    R 31

    Wobei das letzte "R 31" natürlich dann aus dem "if (t1 & 0x3 /* Tasten rechts gedrückt? */" kommt.

    Lösung:
    Code:
                if (t1 & 0x07) /* Tasten links gedrückt? */
                {
    t1 = 0;
                   MotorDir(FWD,RWD);
    ..
    ..
                if (t1 & 0x38) /* Tasten rechts gedrückt? */
                {
    t1 = 0;  // Das ist hier natürlich Ueberfluessig. Aber wer weiß schon,
             // welche Taste als naechstes abgefragt werden soll.
                   MotorDir(RWD,FWD);
    ..
    ..
    Jubel, es geht nun super.
    Warum der Code aus dem Beispiel funktioniert ist mir nicht klar. Ich vermute, dass der Regler mit seinem ständigen 'gefummel' an der Geschwindigkeitsvorgabe einfach zu viele Störungen in die Tastenmessung bringt.

    So long
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  6. #46
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    35
    Beiträge
    77
    ich habe aus der aktuellen asuro lib das taster-test ptogramm laufen lassen:

    Code:
    #include <stdlib.h>
    #include "asuro.h"
    
    int main(void)
    {
      uint8_t t1, t2;
      unsigned char text[16];
    
      Init();
      SerPrint("\r\nTastsensor Test\r\n");
      while (1)
      {
        t1 = PollSwitch();
        t2 = PollSwitch();
        if (t1 && t2 && t1 == t2)              /* irgendeine Taste gedrueckt */
        {
          itoa(t1, text, 10);     /* Tastenwert senden */
          SerPrint(text);
          SerPrint("\r\n"); /* Zeilenvorschub */
        }
        Msleep(500);
      }
    }
    dabei zeigte das hyperterminal folgende werte:

    taste(von rechts nach links) - ausgabe des hyperterminals
    1 - 1
    2 - 2
    3 - 4
    4 - 8
    5 - 196
    6 - 31

    alle tasten musten mehrmals gedrückt werden bevor sie überhaupt etwas ausgeben.

    sind die werte so richtig? die 196 wirkt etwas fehl am platz.[/list]

  7. #47
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    die 196 ist in der Tat ziemlich Falsch.

    Du kannst Dir auch direkt die ADC Werte auf der Konsole ausgeben lassen,
    da kann man sehen, wie stabil die Messungen denn überhaut sind,
    schau mal in diesem Thread, dort habe ich ein Programm vorgestellt, das die ADC Werte über UART ausgibt.

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

  8. #48
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    35
    Beiträge
    77
    ok, ausgaben in der selben reihenfolge der taster:
    Code:
     1010     
     1010     
     1010     
     1010     
     1010     
     1010     
     1010     
     1010     
     1010     
      994     
      994     
      994     
      994     
      994     
      994     
      994     
      994     
      964     
      964     
      964     
      964     
      964     
      964     
      964     
      912     
      912
      912
      912
      912
      912
      912
      912
      912
        0
        0
        0
        0
        0
        0
        0
      676
      676
      676
      676
      676
      676
      676
     1023

  9. #49
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Ich habe da eine Idee, dafür müßte ich aber wissen, ob der M8 auf dem Asuro den EEPROM Inhalt nach dem erneutem Flashen behält, also ob EEPROM Save Fuse aktiv ist, hat da jemand erfahrungen, wie es so ist ?
    Wenn der EEPROM erhalten bleibt könnte man ja ein kleines Programm schreiben, wo der User dazu aufgefordert wird jede Taste sag ich mal 5 Mal zu drücken, davon einen Mittelwert bilden und den errechneten Wert im EEPROM ablegen.
    Die Pollswitch Funktion müßte nur noch etwas abgeändert werden, damit sie die Werte auf dem EEPROM bezieht und mit dem ist Wert vergeicht, was haltet Ihr davon ?

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

  10. #50
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo Weiti,
    Das sieht ja schonmal gut aus, die Werte sehen ja schön stabil aus,
    nur die 0 mitten drin ist nicht gut, ist das die Taste, die 196 ausgibt ?
    ich vermute da einen kurzschluß gegen Masse ADC Wert von 0 bedeutet ja auch 0V

    Seh Dir mal die Platine Genau an.

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

Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test