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

Thema: ir remote control asuro

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.07.2010
    Beiträge
    31

    ir remote control asuro

    Hey Leute,
    wie das topic schon sagt, Suche ich ein programm um meinen asuro mit einer rc5 fernbedienung zu steuern!!
    Jaja, ich weiß es gibt eine sufu, und google ist auch mein freund, aber für die ganzen tuts und so bin ich auf gutdeutschgesagt zu blöd.
    Ich Suche also eine fertige hex datei, mit einfacher erklärung, die ich dann nur noch zu flashen brauche
    vielleicht hilft mir ja jemand

    MfG tortelini66

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Mein Weg sah mal so aus:
    https://www.roboternetz.de/phpBB2/ze...=287750#287750

    Die aktuelle Version der asuro-Library kann auch RC5:
    https://www.roboternetz.de/phpBB2/vi...=275614#275614

    Ich Suche also eine fertige hex datei, mit einfacher erklärung, die ich dann nur noch zu flashen brauche
    Normalerweise empfehle ich die aktuelle Lib nicht, weil sie meiner Meinung nach zu weit von der Hardware des asuro entfernt ist. Aber da dich ja eh nicht interessiert, wie man sowas programmiert, kannst du auch die aktuelle Version der Lib verwenden ;)

    Gruß

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

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    27.07.2010
    Beiträge
    31
    naja, mich interressiert das schon,
    aber ich wollte derne mal was sehen
    probier gleich mal aus wies funzt

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    27.07.2010
    Beiträge
    31
    ahja, okey wenn ich den rc5 test von der lib aufspiele, dann passiert gar nix, also ich kann ihn so nich steuern!
    und über den netterweise gepostetn weg von radbruch, bekomme ich folgende fehlermeldung beim compilieren:



    C:\ASURO_src\FirstTry>make all
    set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
    [ -s test.d ] || rm -f test.d
    -------- begin --------
    avr-gcc --version
    avr-gcc (GCC) 3.3.1
    Copyright (C) 2003 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
    test.c: In function `main':
    test.c:37: warning: implicit declaration of function `PrintInt'
    test.c:61:2: warning: no newline at end of file
    avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
    test.o(.text+0x106): In function `main':
    C:\ASURO_src\FirstTry/test.c:37: undefined reference to `PrintInt'
    make: *** [test.elf] Error 1

    > Process Exit Code: 2

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

    PrintInt() dient hier nur zum Debuggen (=Programmfehler suchen), deshalb kann man das auskommentieren:

    Code:
    #include "asuro.h" // für die CD-LIB mit 72kHz-Timer
    
    #define pow1 150 // Langsame Geschwindigkeit
    #define pow2 200 // Schnelle Geschwindigkeit
    #define taste (!(PINC & (1<<PC4))) // Tastenabfrage
    #define keine_taste (PINC & (1<<PC4))
    
    unsigned int count, temp; // Zaehler, IR-Kommando
    unsigned char daten[14], ir_status; // IR-Datenspeicher, IR-Eingangspegel
    
    int main(void) {
    
    Init();
    do{
       temp=0;
       while (PIND & (1 << PD0)) //warten auf die Flanke des Startbits
          {if keine_taste StatusLED(GREEN); else StatusLED(RED); // Tastenspielerei
           if taste BackLED(ON,ON); else BackLED(OFF,OFF);}
       StatusLED(RED); // Alarmstufe ROT: ein Zeichen ist im Anflug
    
       for (count=0; count<14; count++) { // im Gesamten warten wir auf 14 Bits
    /*
    lt. Spettel-Diagramm betraegt die Bitlaenge 1,778 ms. Bei 36 Takten pro Millisekunde ergibt das 36*1,778 = 64
    */
       Sleep(96); // Information einlesen nach 3/4 der Bitlaenge (96 bei CD-LIB!)
          ir_status=(PIND & (1 << PD0)); // Pegel Speichern
          if (ir_status) daten[count]='1'; else daten[count]='0'; // und merken
          if (ir_status) temp |= (1 << (13-count)); // das MSB(=mostsuefikantbit) zuerst
          while (ir_status == (PIND & (1 << PD0))); // Bit gelesen, warten auf naechste Flanke
       }
       temp=temp/2 & 0xf; // Die Info steht in den Bits 1-4
       StatusLED(YELLOW); // Daten gelesen
    /*
       Msleep(2000); // Zeit um den IR-Transceiver ueber den asuro zu bringen
       SerWrite("\n\r",2);
       SerWrite(daten,14); // Bitmuster zum PC senden
       SerWrite("-",1);
       PrintInt(temp); // erkannte Daten zum PC senden
    */
    /* asuro steuern.
       Mit dem 10er-Block der Fernbedienung kann der asuro nun gesteuert werden:
       Alle anderen Tasten stoppen den asuro
    */
    
       switch (temp) {
          case 1: MotorDir(FWD,FWD); MotorSpeed(pow1,pow2); break;
          case 2: MotorDir(FWD,FWD); MotorSpeed(pow2,pow2); break;
          case 3: MotorDir(FWD,FWD); MotorSpeed(pow2,pow1); break;
          case 4: MotorDir(BREAK,FWD); MotorSpeed(0,pow1); break;
          case 5: MotorDir(BREAK,BREAK); MotorSpeed(0,0); break;
          case 6: MotorDir(FWD,BREAK); MotorSpeed(pow1,0); break;
          case 7: MotorDir(RWD,BREAK); MotorSpeed(pow1,0); break;
          case 8: MotorDir(RWD,RWD); MotorSpeed(pow1,pow1); break;
          case 9: MotorDir(BREAK,RWD); MotorSpeed(0,pow1); break;
          default: MotorDir(BREAK,BREAK); MotorSpeed(0,0); break;
       }
       StatusLED(GREEN); //endlos
       //Msleep(1000);
    
    }while (1);
    return 0;
    }
    (ungetestet)

    Ich hoffe, dass funzt so. Die orginale CD-Lib läuft mit einem anderen Timertakt für Sleep(). Deshalb sollte das verzögerte Auswerten des Eingangs nach Sleep(96) erfolgen.


    naja, mich interressiert das schon,
    aber ich wollte gerne mal was sehen
    Dann versuche doch mal etwas einfacheres. Eine Led einschalten oder blicken lassen, "Hallo Welt"...

    Gruß

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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2010
    Beiträge
    6
    Cool das erste RC5 prog das bei mir funzt.
    Jetzt brauch ich nicht mehr meinen PC dem ASURO hinterher zu Tragen.
    Mein Kater findet das auch Cool.
    Wenn Ich den Code ansehe bleibe ich auch lieber beim Led einschalten.
    gibt es eigentlich nur <<<###>>>'"";:{[]}()==++-- oder auch Befehle
    die etwas aussagen.***GGG

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Schön, dass es auf Anhieb funktioniert :)

    Wie alle Programmiersprachen hat auch C eine Syntax. Die sollte man kennen, wenn man ein Programm schreiben möchte:

    http://openbook.galileocomputing.de/c_von_a_bis_z/
    http://www.mikrocontroller.net/artic...R-GCC-Tutorial

    Das sollte man zumindest mal überflogen haben. Leider ist das so :(

    Eine Abkürzung zum Erfolg ist vielleicht das hier:
    easy-asuro
    (Henk sucht vermutlich noch Tester!)

    Eine RC5-Funktion als Hex-Datei bietet Henk auf seiner asuro-Seite:
    http://home.kpn.nl/winko001/Asuro/So...uSfwPagFrm.htm


    Gruß

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

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    27.07.2010
    Beiträge
    31
    ok funktioniert ganz gut,
    aber welche taste muss ich drücken um was zu tun ?????

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    In der Datei Asuro013.c ist die Zuordnung der Tasten zu den asuro-Funktionen definiert:

    Code:
    #include "asuro.h"
    #include "hvwdefines.h"
    
    //remote control key codes
    #define REMOTE_KEY_STD_BY 12
    #define REMOTE_KEY_VOL_UP 16
    #define REMOTE_KEY_VOL_DW 17
    #define REMOTE_KEY_PRG_UP 32
    #define REMOTE_KEY_PRG_DW 33
    #define REMOTE_KEY_0       0
    
    #define ASURO_FORWARD      REMOTE_KEY_PRG_UP
    #define ASURO_REVERSE      REMOTE_KEY_PRG_DW
    #define ASURO_TURN_LEFT    REMOTE_KEY_VOL_UP
    #define ASURO_TURN_RIGHT   REMOTE_KEY_VOL_DW
    #define ASURO_STOP         REMOTE_KEY_0
    (Warum hier die asurolib und die hvwdefines eingebunden sind ist mir auch nicht ganz klar :)

    Vorwärts, rückwärts, links, rechts und stop sind die Tasten Programm+, Programm-, Lautstärke+, Lautstärke- und die Zifferntaste "0" auf der Fernbedienung. Ob das wirklich so funktioniert weiß ich aber auch nicht, weil ich das nie getestet habe. Meine eigene Lösung reichte mir völlig ;)

    Gruß

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

Berechtigungen

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

Labornetzteil AliExpress