- LiTime Speicher und Akkus         
Ergebnis 1 bis 7 von 7

Thema: Geht das so... oder ist das UNSCHÖN

  1. #1

    Geht das so... oder ist das UNSCHÖN

    Anzeige

    Powerstation Test
    Bitte um kommentare von jedem...

    Kann man das Programm für den Robby so lassen.. was fehlt was ist überflüssig, was kann mna schöner besser schreiben?

    Wir sind soweit gekommen... und es läuft doch nun bitte eure verbesserungs vorschläge.

    '--------------------------
    '------ I/O PORTS ---------
    '--------------------------

    '- INTERFACE LCD/EXTPORT --
    define sdio port[1]
    define sclio port[3]
    define strobe port[4]

    '-- INTERFACE COM/NAV -----
    define DATALINE port[1]
    define CLOCKLINE port[2]


    '--------------------------
    '------ SENSORS ---------
    '--------------------------
    define LIGHT_L ad[7]
    define LIGHT_R ad[6]
    define SYS_VOLTS ad[3]
    define CHRG_CURRENT ad[2]
    define SYS_CURRENT ad[1]
    define MIC ad[4]
    define TOUCH ad[5]


    '---------------------------
    '------ DRIVE -------------
    '---------------------------
    define SPEED_L da[1]
    define SPEED_R da[2]
    define REV_L port[6]
    define REV_R port[5]


    '--------------------------
    '---- SYSTEM MEMORY -------
    '--------------------------

    '--- INTERFACE BUFFER ----
    define LBYTE byte[1]
    define HBYTE byte[2]
    define SUBCMD byte[3]

    '---- OPERATION DATA ------
    define EXTPORT byte[4]
    define LED1_F bit[29]
    define LED2_F bit[30]
    define LED3_F bit[31]
    define LED4_F bit[32]
    define SYSTEM_STATUS byte[5]
    define ACSL_F bit[33]
    define ACSR_F bit[34]
    define IR_F bit[35]


    '--------------------------
    '---- USER MEMORY -------
    '--------------------------
    define TIM byte[6]
    define PGM byte[7]

    '--- SYSTEMROUTINEN -----------
    define PLM_SLOW &H01C4
    define SYSTEM &H01C9
    define COMNAV &H0154

    '- ERWEITERTE SYSTEM ROUTINEN -
    define REVR &H0101 'ANTRIEB RECHTS RÜCKWÄRTS
    define REVL &H0106 'ANTRIEB LINKS RÜCKWÄRTS
    define FWDR &H010B 'ANTRIEG RECHTS VORWÄRTS
    define FWDL &H0110 'ANTRIEB LINKS VORWÄRTS
    define ROTR &H0115 'RECHTS DREHEN
    define ROTL &H0119 'LINKS DREHEN
    define REV &H011D 'RÜCKWÄRTS
    define FWD &H0121 'VORWÄRTS
    define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER
    define ACS_LO &H01E1 'ACS POWER LO
    define ACS_HI &H01E9 '
    define ACS_MAX &H01F1 '
    define SEND_TLM &H014A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
    define SEND_SPEEDR &H0134 'SENDET TLM KANAL 8,PLM RECHTS
    define SEND_SPEEDL &H013A 'SENDET TLM KANAL 7,PLM LINKS
    define SEND_SYSSTAT &H0144 'SENDET TLM KANAL 0,SYSTEM STATUS
    '(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX)

    '-----------------------------------------
    'Declaration------------------------------
    '-----------------------------------------

    define GESCHW_L byte
    define GESCHW_R byte

    define GeschRev byte
    define GeschFwd byte


    '################################################# ################################################## #############



    'Initialisation-------------------------------
    gosub SUBSYS_PWR_ON
    beep 368,10,20

    '---- SYSTEM OPERATION MODE (NO INTERRUPT) ----
    'gosub NO_ACS_INT:beep 368,10,0

    '------------ ANTRIEB -------------------------
    REV_L=on:REV_R=on:SYS PLM_SLOW


    '--------------------------------------------
    'Endlosschleife-loop-------------------------
    '--------------------------------------------
    #loop
    GeschFwd=100
    SYS COMNAV_STATUS
    pause 10

    ' SYS ACS_HI ';ACS HI POWER (SEHBEREICH ca. 60cm)
    ' SYS ACS_LO ';ACS LO POWER (SEHBEREICH ca. 30cm)
    SYS ACS_MAX ';ACS MAX POWER(SEHBEREICH ca. 100cm)


    SYS FWDR:SPEED_R=GeschFwd
    SYS FWDL:SPEED_L=GeschFwd

    'LEDs
    if ACSL_F=on then gosub LED1ON else gosub LED1OFF
    if ACSR_F=on then gosub LED4ON else gosub LED4OFF

    'Sensoren
    SYS COMNAV_STATUS
    pause 10
    if (ACSR_F=off and ACSL_F=off) then goto loop
    if (ACSL_F=on and ACSR_F=on) then goto move_back
    if (ACSL_F=on and ACSR_F=off) then goto move_left
    if (ACSR_F=on and ACSL_F=off) then goto move_right
    beep 368,10,20


    '-------- AUSWEICHEN NACH RECHTS -------------
    #move_right
    SYS FWDR:SPEED_R=0
    SYS FWDL:SPEED_L=250
    pause 50
    goto loop
    beep 368,10,20

    '-------- AUSWEICHEN NACH LINKS --------------
    #move_left
    SYS FWDR:SPEED_R=250
    SYS FWDL:SPEED_L=0
    pause 50
    goto loop
    beep 368,10,20


    '---------- Beide LED on = RÜCKWÄRTS ----
    #move_back
    GeschRev=100
    SYS REVR:SPEED_R=GeschRev
    SYS REVL:SPEED_L=GeschRev
    pause 50
    goto moveBackRight
    beep 368,10,20


    '--------------------
    #moveBackRight
    SYS REVR:SPEED_R=0
    SYS REVL:SPEED_L=250
    pause 50
    SYS COMNAV_STATUS
    pause 10
    if (ACSL_F=on and ACSR_F=on) then goto moveBackLeft else goto loop
    beep 368,10,20

    '--------------------
    #moveBackLeft
    SYS REVR:SPEED_R=250
    SYS REVL:SPEED_L=0
    pause 50
    SYS COMNAV_STATUS
    pause 10
    if (ACSL_F=on and ACSR_F=on) then goto moveBackRight else goto loop
    beep 368,10,20


    'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
    #LED1ON
    LED1_F=on:goto EXTPORT_WRITE
    #LED1OFF
    LED1_F=off :goto EXTPORT_WRITE
    #LED2ON
    LED2_F=on:goto EXTPORT_WRITE
    #LED2OFF
    LED2_F=off:goto EXTPORT_WRITE
    #LED3ON
    LED3_F=on:goto EXTPORT_WRITE
    #LED3OFF
    LED3_F=off:goto EXTPORT_WRITE
    #LED4ON
    LED4_F=on:goto EXTPORT_WRITE
    #LED4OFF
    LED4_F=off:goto EXTPORT_WRITE
    #LEDSOFF
    EXTPORT=EXTPORT and &H0F:goto EXTPORT_WRITE
    #EXTPORT_WRITE
    SYS SYSTEMulse STROBE:RETURN

    'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII

    #GET_IRDATA
    SUBCMD=1:sys COMNAV:return
    #SEND_IRDATA
    SUBCMD=0:sys COMNAV:return
    #RC5
    SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #RC5_INT
    SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #REC80
    SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and&HFD
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #REC80_INT
    SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03)
    HBYTE=00:SUBCMD=2:sys COMNAV:return

    'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
    #NO_ACS_INT
    SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
    HBYTE=00:SUBCMD=2:sys COMNAV:return
    #ACS_INT_200
    SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04
    HBYTE=50:SUBCMD=2:sys COMNAV:return
    #SUBSYS_PWR_ON
    sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
    sys SYSTEM:return
    #SUBSYS_PWR_OFF
    EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
    deact sdio:deact sclio:return
    #CLR_DISTANCE
    SUBCMD=3:sys COMNAV:return
    #L_DISTANCE
    SUBCMD=6:sys COMNAV:return
    #R_DISTANCE
    SUBCMD=7:sys COMNAV:return
    es wurde viel mit copy & paste gearbeitet...
    also kann es sein dass einiges zuviel definiert wurde...

    und warum leuchtet LED2 und 3 ständig?
    und wie steuer ich die blauen LED´s an?

    Danke schon mal im Vorraus

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    67
    Beiträge
    531
    Hallo Wüstenfuchs

    in prinzip sollte es laufen,

    mahl eine aufmerkung von dieser seite...

    Code:
    -------- AUSWEICHEN NACH LINKS -------------- 
    #move_left 
    SYS FWDR:SPEED_R=250 
    SYS FWDL:SPEED_L=0 
    pause 50 
    goto loop                   <<=== hier geht das program irgenwo anders hin
    beep 368,10,20          <<=== und wass denkst du was hier mit geschied?
    ich denk die beep wird niemahl ausgefuht werden, oder?

    gruss

    Henk

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Prog für Robby

    Hi Wüstenfuchs,

    Dein Prog sieht doch so ganz gut aus. Schön muss ein Programm primär erst einmal nicht sein, sondern funktionieren und eher gut dokumentiert sein. Du solltest aber bei der Programmlogik beachten, dass Du nicht zuviel rückwärts fährst, weil der Robby ja hinten blind ist. Ich würde nur wenig zurücksetzen, sondern eher auf der Stelle drehen, um die Richtung zu wechseln.

    Zu Deinen Fragen:
    Die 4 LEDs solltest Du mit "gosub LEDSOFF" am Anfang des Progs ausschalten.
    Die blauen LEDs vorn am Robby sind die IR-LEDs für das ACS und werden vom internen ACS-System selbst angesteuert. Du kannst da programmtechnisch nichts mit machen. Die blauen LEDs oben auf dem Robby gehören zum IR-Kommunikationssystem.

    Viel Spaß weiter mit dem Robby

    Dirk

  4. #4
    Zitat Zitat von Arexx-Henk
    Hallo Wüstenfuchs

    in prinzip sollte es laufen,

    mahl eine aufmerkung von dieser seite...

    Code:
    -------- AUSWEICHEN NACH LINKS -------------- 
    #move_left 
    SYS FWDR:SPEED_R=250 
    SYS FWDL:SPEED_L=0 
    pause 50 
    goto loop                   <<=== hier geht das program irgenwo anders hin
    beep 368,10,20          <<=== und wass denkst du was hier mit geschied?
    ich denk die beep wird niemahl ausgefuht werden, oder?

    gruss

    Henk
    Der beep befehl war nur ein test befehl, der mir sagen sollte, ob meine gedankengänge richtig waren.

    Kommt öfters drin vor oder kam öfters drin vor.

    Nochmal zu den Blauen LEDs.. kann ich die also nicht ansteuern? oder blinken lassen?

    gosub LED2OFF am anfang des programms... wollt ich, aber ging nicht wirklich. Wo ist der anfang?

    DA dahinter.. oder?


    Code:
    '----------------------------------------- 
    'Declaration------------------------------ 
    '----------------------------------------- 
    
    define GESCHW_L byte 
    define GESCHW_R byte 
    
    define GeschRev byte 
    define GeschFwd byte

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Wohin mit LEDSOFF

    Hi Wüstenfuchs,

    du kannst das gosub LEDSOFF direkt vor dem Label #loop einfügen.
    Die blauen LEDs sind Infrarot (IR)-LEDs, deren Licht man eh nicht sehen kann. Also macht das Blinken nicht sooo viel Sinn.
    Wenn Du eine "Frontbeleuchtung" bauen willst, kauf Dir 2 weiße LEDs und bau sie auf die Experimentierplatine. Mit einem Transistor kannst Du die dann sogar per Programm ein- und ausschalten.

    Gruß Dirk

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    67
    Beiträge
    531
    Hallo Wüstenfuchs,

    die Anfang der Program is ganz oben, mann kann die 'define' uberall
    schreiben (immer vorangehend beim eigentlichen gebrauch) aber ist schoner alle 'defines' zusammen zu grupieren.

    gosub LED2OFF am anfang sollte OK sein

    die blauwen leds sind infrarot leds

    Wenn du mehr uber Robby wissen wilst, guck mahl hier

    http://home.planet.nl/~winko001/Robb...nden/frame.htm

    nicht vergessen lautsprecher ein zu schalten und die maus uber ein Teil an zu halten

    gruss

    Henk

  7. #7
    Danke euch allen...

    Greetings Achim

Berechtigungen

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

LiTime Speicher und Akkus