- Labornetzteil AliExpress         
Seite 3 von 9 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 81

Thema: Wegstreckenzähler: Entfernug einstellen?

  1. #21
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Anzeige

    Powerstation Test
    Ich habe nochmal meinen Code bearbeitet und ausprobiert.
    Beim Ausprobieren habe ich dann auch festgestellt, dass meine Sensoren zur Wegstreckenmessung kaputt sind.
    Aber nach dem, was ich mir über LCD anzeigen lassen konnte sollte es so gehen:
    Code:
    '--------------------------
    '------ 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 GP            byte[6]
    define MAXLIGHT      byte[7]
    define GP1           byte[8]
    define SAMPLE        byte[9]
    define HSAMPLE       byte[10]
    '--- 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)
    
    
    
    
    '---------- INIT---------------
    gosub SUBSYS_PWR_ON
    beep 368,10,0:pause 50
    '---- SYSTEM OPERATION MODE (NO INTERRUPT) ----
    gosub NO_ACS_INT:beep 368,10,0:SYS ACS_MAX
    '------------ ANTRIEB -------------------------
    REV_L=on:REV_R=on:SYS PLM_SLOW
    '--------------------------------------------
    '---         WEGSTRECKENZÄHLER            ---
    '--------------------------------------------
    gosub CLR_DISTANCE:gosub LEDSOFF
    
    #LOOP
    for GP=1 to 100
    SAMPLE=MIC
    if SAMPLE > HSAMPLE then HSAMPLE=SAMPLE
    next
    if HSAMPLE < 10 then gosub LED4ON else gosub LED4OFF
    if HSAMPLE >= 10 then gosub Strecke
    HSAMPLE=0:goto loop
    '----------------------------------------------------------------
    #Strecke
    pause 5:SYS COMNAV_STATUS
    gosub L_DISTANCE                               
    if LBYTE= 25 then gosub stop                    
    goto Strecke
    
    '--------------------------------------------
    #stop
    SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0:beep 368,10,0:end
    #move_fwd
    SYS FWDR:SYS FWDL:SPEED_L=155:SPEED_R=155:gosub Strecke
    '---------------------------------------------
    
    
    
    '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 SYSTEM:pulse 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
    Mir ist auch noch aufgefallen, dass es nicht RBYTE heißt, sondern HBYTE!!
    Meine ich zumindest
    Probiere es bitte mal aus!!

    jon

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    21.08.2006
    Beiträge
    74
    hallo, Jon
    ich glaube auch, dass es HBYTE heißt.
    ich hab dein Prog. ausprobiert aber s'hat nicht funktioniert.ich überprüf nachher mal noch mein Micro ob da alles in ordnung ist.
    Nur so, dass du dir schon mal gedanken machen kannst:
    Es hat gepiept, dann is die grüne LED am kleinen Prozessor angegangen und hat geblinkt, dann is LED4 angegangen.
    Gefahren is er nicht.

    Gruß dj

  3. #23
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Zitat Zitat von dj
    Es hat gepiept,
    Richtig.

    Zitat Zitat von dj
    dann is die grüne LED am kleinen Prozessor angegangen und hat geblinkt,
    Auch richtig.

    Zitat Zitat von dj
    dann is LED4 angegangen.
    Ebenfalls richtig.
    Spiele mal wieder mit dem Wert hinter "HSAMPLE"
    Wenn der Geräuschepegel ausreicht, geht die LED4 aus und er startet die Motoren.
    Geht die LED4 nicht aus, dann fragt er den Geräuschepegel wieder ab.

    Probiere einfach nochmal etwas aus.
    Ich kann mir kaum denken, dass dieser Code jetzt nicht geht.

    jon

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    21.08.2006
    Beiträge
    74
    Sorry, aber es funktioniert immernochnicht.
    Hat alles geklappt wie es soll nur is er nich losgefahren.
    Ich hab was gesagt LED is ausgegangen aber er ist nicht losgefahren.
    Hast du das Prog. schon bei dir ausprobiert?

    Gruß dj

  5. #25
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Ich habe das Programm bei mir schon ausprobiert, mit dem kleinen Problem, dass er bei mir durch die defekten Sensoren immer weiter geradeaus fährt.
    Ich werde es mir aber nochmal genau anschauen.
    Probiere mal den Treiber neu zu laden. Vielleicht hilft es.

    jon

  6. #26
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Code:
    '--------------------------
    '------ 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 GP            byte[6]
    define MAXLIGHT      byte[7]
    define GP1           byte[8]
    define SAMPLE        byte[9]
    define HSAMPLE       byte[10]
    '--- 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)
    
    
    
    
    '---------- INIT---------------
    gosub SUBSYS_PWR_ON
    beep 368,10,0:pause 50
    '---- SYSTEM OPERATION MODE (NO INTERRUPT) ----
    gosub NO_ACS_INT:beep 368,10,0:SYS ACS_MAX
    '------------ ANTRIEB -------------------------
    REV_L=on:REV_R=on:SYS PLM_SLOW
    '--------------------------------------------
    '---         WEGSTRECKENZÄHLER            ---
    '--------------------------------------------
    gosub CLR_DISTANCE:gosub LEDSOFF
    
    #LOOP
    for GP=1 to 100
    SAMPLE=MIC
    if SAMPLE > HSAMPLE then HSAMPLE=SAMPLE
    next
    if HSAMPLE < 10 then gosub LED4ON else gosub LED4OFF
    if HSAMPLE >= 10 then gosub move_fwd
    HSAMPLE=0:goto loop
    '----------------------------------------------------------------
    #Strecke
    pause 5:SYS COMNAV_STATUS
    gosub L_DISTANCE                               
    if LBYTE= 25 then gosub stop                   
    goto Strecke
    
    '--------------------------------------------
    #stop
    SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0:beep 368,10,0:end
    #move_fwd
    SYS FWDR:SYS FWDL:SPEED_L=155:SPEED_R=155:gosub Strecke
    '---------------------------------------------
    
    
    
    '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 SYSTEM:pulse 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
    Ich hatte in der Zeile
    "if HSAMPLE >= 10 then gosub move_fwd"
    erst "then gosub Strecke" stehen. Was dazu führt, dass er die Motoren nicht startet.
    Jetzt sollte es aber funktionieren!!!!!

    jon

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    26.08.2006
    Ort
    Schifferstadt
    Alter
    37
    Beiträge
    13
    Ich hab auch noch n'Prog mit nur if MIC>1 then gosub LED1ON ausprobiert.Das hat funktioniert aber das komische war, dass es auch noch bei if MIC>1000000 geklappt hat.
    Klar, dass das nicht funktioniert hat, denn es kommt zum Variablenüberlauf und er fängt wieder von vorne an zu zählen.

  8. #28
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Funktioniert mein Programm jetzt so?????????

    Ich habe meinen Bot gerade bei Conrad abgegebe, kann also keine weiteren Tests durchführen

    jon

  9. #29
    Benutzer Stammmitglied
    Registriert seit
    21.08.2006
    Beiträge
    74
    Ich kann es auch erst am Mittwoch testen.
    Aber vielleicht kann es ja jemand anderes ausprobieren?
    Aber kann es sein, dass er so nicht anhält?
    Müsste man nicht noch if LBYTE=25 then gosub stop einfügen?

    Gruß dj

  10. #30
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Es steht doch da:
    "if LBYTE =25 then gosub stop"
    Wo ist da dein Problem?
    Oder hast du das einfach nur übersehen? (Passiert mir auch manchmal)

    jon

Seite 3 von 9 ErsteErste 12345 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests