myplexy
22.08.2004, 18:38
Jetzt bekomme ich endlich das Robotersystem von Conrad Elektronik. Daher bin ich schon CCBASIC am lernen. Jetzt habe ich einen kleines Programm geschrieben und wollte fragen, ob es jemand testen kann, denn ich bekomme den Roboter erst.
Hier den Code
'++++++++++++++DEFINITONEN+++++++++++++++++
'--------------subsystem---------------
define LBYTE byte[1]
define HBYTE byte[2]
define SUBCMD byte[3]
define SYSTEM_STATUS byte[5]
define SYSTEM &H01C4
define COMNAV &H0154
define sdio port[1]
define sclio port[3]
define strobe port[4]
define DATALINE port[1]
define CLOCKLINE port[2]
#NO_ACS_INT
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
HBYTE=00:SUBCMD=2:sys COMNAV:return
define EXTPORT byte[4]
#SUBSYS_PWR_ON
sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE) or 8
sys SYSTEM:return
'-------------------acs-------------------
define acsl_f bit[33]
define acsr_f bit[34]
'-----------------antrieb----------------
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 SPEED_L da[1]
define SPEED_R da[2]
define REV_L port[6]
define REV_R port[5]
define PLM_SLOW &H01C4
REV_L=on:REV_R=on:SYS PLM_SLOW
'+++++++++++++++++++PROGRAMM+++++++++++++++++
gosub SUBSYS_PWR_ON
SYS FWDR:SYS FWDL:SPEED_L=255:SPEED_R=255
#loop
IF (acsl_f = on and acsr_f = on) then goto drehen else goto loop
If (acsl_f = on or acsr_f = on) then goto links_rechts_ausw else goto loop
'::::drehen:::::
#drehen
SYS FWDR:SYS REVL:SPEED_L=255:SPEED_R=255
pause 10
SPEED_L=0:SPEED_R=0:goto loop
'::::Auswahl ob ausweichen nach LINKS oder RECHTS:::::
#links_rechts_ausw
IF acsl_f = on then goto nach_rechts
IF acsr_f = on then goto nach_links
':::::::::nach rechts ausweichen::::::::
#nach_rechts
SYS FWDR:SYS REVL:SPEED_L=255:SPEED_R=0
pause 10
SPEED_L=0:SPEED_R=0:goto loop
':::::::::nach rechts ausweichen::::::::
#nach_links
SYS FWDR:SYS REVL:SPEED_R=0:SPEED_R=255
pause 10
SPEED_L=0:SPEED_R=0:goto loop
Hier den Code
'++++++++++++++DEFINITONEN+++++++++++++++++
'--------------subsystem---------------
define LBYTE byte[1]
define HBYTE byte[2]
define SUBCMD byte[3]
define SYSTEM_STATUS byte[5]
define SYSTEM &H01C4
define COMNAV &H0154
define sdio port[1]
define sclio port[3]
define strobe port[4]
define DATALINE port[1]
define CLOCKLINE port[2]
#NO_ACS_INT
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
HBYTE=00:SUBCMD=2:sys COMNAV:return
define EXTPORT byte[4]
#SUBSYS_PWR_ON
sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE) or 8
sys SYSTEM:return
'-------------------acs-------------------
define acsl_f bit[33]
define acsr_f bit[34]
'-----------------antrieb----------------
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 SPEED_L da[1]
define SPEED_R da[2]
define REV_L port[6]
define REV_R port[5]
define PLM_SLOW &H01C4
REV_L=on:REV_R=on:SYS PLM_SLOW
'+++++++++++++++++++PROGRAMM+++++++++++++++++
gosub SUBSYS_PWR_ON
SYS FWDR:SYS FWDL:SPEED_L=255:SPEED_R=255
#loop
IF (acsl_f = on and acsr_f = on) then goto drehen else goto loop
If (acsl_f = on or acsr_f = on) then goto links_rechts_ausw else goto loop
'::::drehen:::::
#drehen
SYS FWDR:SYS REVL:SPEED_L=255:SPEED_R=255
pause 10
SPEED_L=0:SPEED_R=0:goto loop
'::::Auswahl ob ausweichen nach LINKS oder RECHTS:::::
#links_rechts_ausw
IF acsl_f = on then goto nach_rechts
IF acsr_f = on then goto nach_links
':::::::::nach rechts ausweichen::::::::
#nach_rechts
SYS FWDR:SYS REVL:SPEED_L=255:SPEED_R=0
pause 10
SPEED_L=0:SPEED_R=0:goto loop
':::::::::nach rechts ausweichen::::::::
#nach_links
SYS FWDR:SYS REVL:SPEED_R=0:SPEED_R=255
pause 10
SPEED_L=0:SPEED_R=0:goto loop