Hi
Also ich wollte das der bot auf eine Lichtquelle zufährt, aber trotzdem hindernissen ausweichen kann.
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]
'
'-------------------- 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_LO
'
'--------------------- ANTRIEB --------------------------
REV_L=on:REV_R=on:SYS PLM_SLOW
'
'
'
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'III Programm III
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'
#loop
pause 5:SYS COMNAV_STATUS
if ACSL_F=on then gosub LED4ON else gosub LED4OFF
if ACSR_F=on then gosub LED1ON else gosub LED1OFF
if (ACSL_F and ACSR_F)=on then goto rotate
if ACSL_F=on then goto move_right
if ACSR_F=on then goto move_left
'
if (LIGHT_L-LIGHT_R) >10 then goto rotleft_fast
if (LIGHT_R-LIGHT_L)>10 then goto rotright_fast
if (LIGHT_L-LIGHT_R) >2 then goto rotleft
if (LIGHT_R-LIGHT_L)>2 then goto rotright
SYS FWDR:SYS FWDL:SPEED_L=100:SPEED_R=100:goto loop
'
#rotleft
SYS ROTL:SPEED_L=100:SPEED_R=100:goto loop
#rotleft_fast
SYS ROTL:SPEED_L=150:SPEED_R=150:goto loop
#rotright
SYS ROTR:SPEED_L=100:SPEED_R=100:goto loop
#rotright_fast
SYS ROTR:SPEED_L=150:SPEED_R=150:goto loop
'
#move_right
SPEED_R=100:SPEED_L=255:goto loop
#move_left
SPEED_L=100:SPEED_R=255:goto loop
#rotate
SPEED_L=150:SPEED_R=150:SYS ROTR:goto loop
'
'
'
'---------------------------------------------------------
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'---------------------------------------------------------
'
'IIIIIIIIIIIIIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIIIIIIIII
'
#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
'
'IIIIIIIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIIIIIIIIII
#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
'
'IIIIIIIIIIIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIIIIIIII
#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
'----------------COM/NAV GERÄTEREIBER --------------------
'syscode "p5driv.s19"
Und noch mal danke für die schnellen antworten!!!
Lesezeichen