- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: RP6_TV_ Remote

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ok.. schaut gesund aus. ggf. must Du dein Mapping noch anpassen. Aber ne ganz andere Frage... hast Du das hier gelesen und verstanden?

    * You need to HOLD DOWN the key - then the RP6 will accelerate slowly to the
    * MAX_SPEED values defined in this program. If you release the key again,
    * it starts to deccelerate slowly.

    und

    * (yes it is intentionally that the robot accelerates and decelerates so
    * slow Of course you can change this if you want!)

    Es stammt aus dem dokumentierten File... sprich.. nicht einfach nur kurz drücken und warten das er los fährt sondern gedrückt halten BIS er los fährt....
    Zumindest Dein Log zeigt das so nicht an, würde ich mal sagen...
    LG Rolf
    Sind Sie auch ambivalent?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.12.2008
    Beiträge
    6
    stimmt, ist aus dem Log nicht zu sehen, wollte es übersichtlich halten.
    Gedrückt halten führt leider nicht zum Erfolg....

    Gruß Tom

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    hm... hm... ok. Das war's wohl nicht.
    Nun gut.. also Du bekommst ja offensichtlich RC5 Signale rein da die receiveRC5Data wie gesehen aufgerufen wird und die Zuordnung ist erst mal 2.Frage ...
    Ansich passiert dann nicht mehr viel... berechnen der Accel-Daten für die Antriebe links und rechts... und dann per moveAtSpeed ab auf die MosFets.
    Poweron, initrobotbase und task_rp6sstem werden auch ausgeführt. Den Selbsttest hattest Du gemacht wie Du sagtest...
    Man könnte sich nun noch die errechneten Accel-Werte ausgeben lassen... um zu sehen ob der denn beschleunigen würde.
    Aber irgendwie glaube ich nicht an ein Fehler da... der würde sonst auch bei anderen zuschlagen.

    Hm.. Du Sorry... ich kann Dir nicht helfen Gesetzt den Fall, das alles so ist wie ich vermute und Du ja bestätigst, müsste er losfahren.
    Ich würde vorschlagen, du machst noch mal den Selbsttest - um sicher zu stellen das die Antriebe wirklich ok sind.
    Ich rechne allerdings damit, das der positiv ausgeht... und Dir damit nicht weiter hilft. Eine andere Fernbedienung kann man noch testen aber ob das was bringt....
    Ne Du.. ich bin am Ende mit meinen Tips. Tut mir leid.
    Vielleicht findet sich jemand, der Dir besser helfen kann. Warte mal ein paar Tage. Und wenn Du raus hast wo es dran lag, schreib es mal hier rein. Würd mich ja doch interssieren.
    LG Rolf

    EDIT: Eine Idee hab ich noch... aber wild geraten und ungeprüft.

    In deccelerate(void)
    wird per Timer mit
    if(getStopwatch1() > 250)
    4 mal / sek "gebremst" ... folglich müsste eine Fernbedienung mehr als 4 Impulse leisten?
    Da gibst aber noch die
    #define ACCELERATE_VALUE 8
    #define DECELERATE_VALUE 4
    Das würde dann glaube ich auf 2/sec reduzieren um die Waage zu halten und 3/sek damit man beschleunigt?
    Ich weis es nicht genau aber da in der Ecke könnte man mal etwas genauer gucken... mach mal aus der
    #define ACCELERATE_VALUE 8 eine 12, 16 oder 24 .. je nach dem wie viel Impulse/sek Du reinbekommst.
    Oder kommentier mal die deccelerate(void) versuchsweise ganz aus. Dann weisst Du zumindest, das es der richtige Weg ist.
    Geändert von RolfD (21.03.2011 um 12:55 Uhr)
    Sind Sie auch ambivalent?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.12.2008
    Beiträge
    6
    Hallo Rolf
    #define ACCELERATE_VALUE 8 eine 12, 16 oder 24 .. je nach dem wie viel Impulse/sek Du reinbekommst.
    Das war die Lösung für das Prob.Hab den Wert auf 24 geändert und es fkt.
    Danke für den tollen Einfall.

    Gruß Tom

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hätte auch eine Frage zum RP6 mit TV-Remote:
    Wo wird denn bewerkstelligt, dass der RP6 weiß, dass eine Taste auf der Remote losgelassen wurde?
    In der großen Switch wird zwar die Stopwatch1 gestartet und in der "deccelerate" wird sie ausgelesen, aber wo und wie genau weiß das Programm denn nun, dass nichts mehr kommt? Wird da irgendwo "rc5data.key_code" zurückgesetzt, oder wie?
    Ich bräuchte so etwas wie eine Zurücksetzung von "rc5data.key_code" auf sagen wir "-1", um mehrfach-drücken einbauen zu können.

    Danke Euch

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.700
    Zitat Zitat von fabqu
    ... Wo wird denn bewerkstelligt, dass der RP6 weiß, dass eine Taste auf der Remote losgelassen wurde ...
    Die Antwort hat ja schon die Fernsteuerung parat: im ersten Byte - Start- und Adressbits - ist das dritte Bit (von Bit1 bis Bit 8 ) das Togglebit. Das wird invertiert jedes Mal, wenn eine Taste gelöst und neu gedrückt wird. Damit ist einfach festzustellen, ob die gleiche Taste festgehalten wird => das Togglebit bleibt dabei gleich.
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hmm, danke dir.
    Das geht nun auch, aber ich bin grad am verzweifeln:
    Wenn ich die Abfragen für RC5-Code, -Adresse und -Togglebit drinnen habe, dann geht auf der Base nahzu nix mehr. Sie führt zwar Befehle aus, aber das Senden der Sensordaten der Base durch die M128 an den PC (Licht L/R, Speed L/R, Bumper L/R vorne/hinten, Objekte L/R vorne/hinten, Motorstrom L/R, Register der Status-LEDs) geht überhaupt nicht mehr. Bestenfalls um etliche Sekunden verzögert...
    Streiche ich das Zeug raus, geht wieder alles!!!
    Und wenn ich nur alles für die RC5-Adresse rausnehme, geht alles, bis auf Speed L/R, Strom L/R, Bumper vorne und ACS vorne. Das heißt, ACS hinten, Bumper hinten und Helligkeit geht wieder.
    Was geht da ab???

    Hier mal mein Code ohne RC5-Adr.:
    In der Base:
    Code:
    ...
    #define I2C_REG_LEDS              27
    //#define I2C_REG_RC5_ADR              28
    #define I2C_REG_RC5_DATA          28
    #define I2C_REG_RC5_TOGGLE          29
    #define I2C_REG_BUMP_BACK_L         30
    #define I2C_REG_BUMP_BACK_R         31
    ...
    
            I2CTWI_readRegisters[I2C_REG_LEDS] =              (uint8_t)(statusLEDs.byte);
            //I2CTWI_readRegisters[I2C_REG_RC5_ADR] =          (uint8_t)((lastRC5Reception.device)|(lastRC5Reception.toggle_bit<<5));
            I2CTWI_readRegisters[I2C_REG_RC5_DATA] =          (uint8_t)(lastRC5Reception.key_code);
            I2CTWI_readRegisters[I2C_REG_RC5_TOGGLE] =          (uint8_t)(lastRC5Reception.toggle_bit);
            I2CTWI_readRegisters[I2C_REG_BUMP_BACK_L] =      (uint8_t)(bumper_back_left);
            I2CTWI_readRegisters[I2C_REG_BUMP_BACK_R] =      (uint8_t)(bumper_back_right);
    In der M128:
    Code:
    ...
        status_leds_base = messageBuf[24];
        //RC5_adr = messageBuf[25];
        RC5_data = messageBuf[25];
        RC5_toggle = messageBuf[26];
        bumper_back_left = messageBuf[27];
        bumper_back_right = messageBuf[28];
    
    
     /*print("RC5-Adr:");
                printInteger(RC5_adr);
                print("\n");*/
    
                print("RC5-Code:");
                printInteger(RC5_data);
                print("\n");
    
                print("RC5-Toggle:");
                printInteger(RC5_toggle);
                print("\n");
    
                print("LEDsBase:");
                printInteger(status_leds_base);
                print("\n");
    
                print("BumpHL:");
                printInteger(bumper_back_left);
                print("\n");
    
                print("BumpHR:");
                printInteger(bumper_back_right);
                print("\n");
    Danke Euch

Berechtigungen

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

LiFePO4 Speicher Test