「RCcontrolプログラム」の編集履歴(バックアップ)一覧はこちら
RCcontrolプログラム - (2006/01/18 (水) 00:04:46) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*RCコントロールのサンプルプログラム
&html(<a href="http://sapporo.txt-nifty.com/sanpo/">ラジコンコントロール</a>)に使っているプログラムのサンプルです。
>あくまでサンプルです。使用改変は自由ですが、動かない、ソースが汚いなどの苦情は>nulへ。
----
'RC PROPO CONTROL PROGRAM BY SHING FOR RD6000
' 2006.1.14 VER 6.1
' Ver 6.1 User motion added.
' Ver 5.1 GWS PG-03 added. Gravity sencor added. Serial communication terminal added.
' Ver 4.1 KRG gyro command test
' Ver 3.3 New Gyro test
' Ver 3 Gyro added
' Ver 2 CONTOROL CODE MODIFIED.
'
'RD6000 DATA
'1ch: L-UD(U+), 2ch R-LR(L+), 3ch R-UD(U+), 4ch L-LR(L+)
'CENTER :0
'UP :1
'DOWN :2
'LEFT :3
'RIGHT :4
'LEFT-UP :5
'RIGHT-UP :6
'LEFT-DOWN :7
'RIGHT-DOWN :8
'RSV :9
'##DEF INPUT RC_CH
DIM RCH1 AS BYTE
DIM RCH2 AS BYTE
DIM RCH3 AS BYTE
DIM RCH4 AS BYTE
'##DEF JUMP VARIABLE
DIM STICKPOS AS BYTE
DIM LSTICK AS BYTE
DIM RSTICK AS BYTE
DIM A16 AS BYTE
DIM A26 AS BYTE
'##DEF WAIT TIME
CONST WAITTIME = 10
'##DEF THURESHOLD VALUE
'1ch: L-UD(U+), 2ch R-LR(R+), 3ch R-UD(U+), 4ch L-LR(L+)
CONST RCH1MIN = 40
CONST RCH1MAX = 140
CONST RCH2MIN = 40
CONST RCH2MAX = 140
CONST RCH3MIN = 40
CONST RCH3MAX = 140
CONST RCH4MIN = 40
CONST RCH4MAX = 140
'##DEF VALUE STICK POS.
CONST TOP = 100
CONST DOWN = 0
CONST LEFT = 0
CONST RIGHT = 100
CONST CENTER = 50
'##DEF GYRO
'For GWS Gyro
GYROSET G6A, 0, 1, 1, 1, 0, 0
GYROSET G6D, 0, 1, 1, 1, 0, 0
GYRODIR G6A, 0, 1, 1, 1, 0, 0
GYRODIR G6D, 0, 1, 1, 1, 0, 0
GYROSENSE G6A, 0, 100, 100, 100, 0, 0
GYROSENSE G6D, 0, 100, 100, 100, 0, 0
'==========================================
'--- AUTO MAIN ---
STICKPOS = 0
PTP SETON
PTP ALLON
'== motor diretion setting
DIR G6A,1,0,0,1,0,0
DIR G6B,1,1,1,1,1,1
DIR G6C,0,0,0,0,0,0
DIR G6D,0,1,1,0,1,0
'== motor start position read
GETMOTORSET G24,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0
TEMPO 230
MUSIC "CDE"
DELAY 2000
'== motor power on
SPEED 5
MOTOR G24
GOSUB standard_pose
'==========================================
'--- MAIN ROUTINE ---
MAIN:
DELAY WAITTIME
GOSUB RCDATACALC
GOSUB CALCSTICKPOS
IF LSTICK = 0 AND RSTICK = 0 THEN
GOTO MAIN
ELSEIF RSTICK = 0 THEN
STICKPOS = LSTICK
ELSEIF RSTICK = 1 THEN
STICKPOS = LSTICK + 10
ELSEIF RSTICK = 2 THEN
STICKPOS = LSTICK + 20
ELSEIF LSTICK = 0 THEN
STICKPOS = RSTICK + 30
ENDIF
'---DECIDE MOTION ---
MUSIC "C"
ON STICKPOS GOTO K0,K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39
GOTO MAIN
'---MAIN ROUTINE EXIT ---
MAIN_EXIT:
STICKPOS = 0
GOTO MAIN
'==========================================
'--- GET STICK POSITION ---
RCDATACALC:
RCH1 = RCIN (0)
RCH2 = RCIN (1)
RCH3 = RCIN (2)
RCH4 = RCIN (3)
'##INPUT VALUE DEPEND ON STICK POSITION
IF RCH1 < RCH1MIN THEN
RCH1 = DOWN
ELSEIF RCH1 > RCH1MAX THEN
RCH1 = TOP
ELSE
RCH1 = CENTER
ENDIF
IF RCH2 < RCH2MIN THEN
RCH2 = RIGHT
ELSEIF RCH2 > RCH2MAX THEN
RCH2 = LEFT
ELSE
RCH2 = CENTER
ENDIF
IF RCH3 < RCH3MIN THEN
RCH3 = DOWN
ELSEIF RCH3 > RCH3MAX THEN
RCH3 = TOP
ELSE
RCH3 = CENTER
ENDIF
IF RCH4 < RCH4MIN THEN
RCH4 = RIGHT
ELSEIF RCH4 > RCH4MAX THEN
RCH4 = LEFT
ELSE
RCH4 = CENTER
ENDIF
RETURN
'==========================================
'--- CALCULATE STICKPOSITION ---
CALCSTICKPOS:
IF RCH1 = CENTER AND RCH4 = CENTER THEN
LSTICK = 0
ELSEIF RCH1 = CENTER AND RCH4 = LEFT THEN
LSTICK = 3
ELSEIF RCH1 = CENTER AND RCH4 = RIGHT THEN
LSTICK = 4
ELSEIF RCH1 = TOP AND RCH4 = CENTER THEN
LSTICK = 1
ELSEIF RCH1 = TOP AND RCH4 = LEFT THEN
LSTICK = 5
ELSEIF RCH1 = TOP AND RCH4 = RIGHT THEN
LSTICK = 6
ELSEIF RCH1 = DOWN AND RCH4 = CENTER THEN
LSTICK = 2
ELSEIF RCH1 = DOWN AND RCH4 = LEFT THEN
LSTICK = 7
ELSEIF RCH1 = DOWN AND RCH4 = RIGHT THEN
LSTICK = 8
ENDIF
IF RCH3 = DOWN AND RCH2 = CENTER THEN
RSTICK = 2
ELSEIF RCH3 = DOWN AND RCH2 = LEFT THEN
RSTICK = 7
ELSEIF RCH3 = DOWN AND RCH2 = RIGHT THEN
RSTICK= 8
ELSEIF RCH3 = TOP AND RCH2 = CENTER THEN
RSTICK = 1
ELSEIF RCH3 = TOP AND RCH2 = LEFT THEN
RSTICK = 5
ELSEIF RCH3 = TOP AND RCH2 = RIGHT THEN
RSTICK = 6
ELSEIF RCH3 = CENTER AND RCH2 = LEFT THEN
RSTICK = 3
ELSEIF RCH3 = CENTER AND RCH2 = RIGHT THEN
RSTICK = 4
ELSEIF RCH3 = CENTER AND RCH2 = CENTER THEN
RSTICK = 0
ENDIF
RETURN
----
#comment
----
&counter()
&html(<a href="http://sapporo.txt-nifty.com/sanpo/">ラジコンコントロール</a>)に使っているプログラムのサンプルです。
>あくまでサンプルです。使用改変は自由ですが、動かない、ソースが汚いなどの苦情は>nulへ。
----
'RC PROPO CONTROL PROGRAM BY SHING FOR RD6000
' 2006.1.14 VER 6.1
' Ver 6.1 User motion added.
' Ver 5.1 GWS PG-03 added. Gravity sencor added. Serial communication terminal added.
' Ver 4.1 KRG gyro command test
' Ver 3.3 New Gyro test
' Ver 3 Gyro added
' Ver 2 CONTOROL CODE MODIFIED.
'
'RD6000 DATA
'1ch: L-UD(U+), 2ch R-LR(L+), 3ch R-UD(U+), 4ch L-LR(L+)
'CENTER :0
'UP :1
'DOWN :2
'LEFT :3
'RIGHT :4
'LEFT-UP :5
'RIGHT-UP :6
'LEFT-DOWN :7
'RIGHT-DOWN :8
'RSV :9
'##DEF INPUT RC_CH
DIM RCH1 AS BYTE
DIM RCH2 AS BYTE
DIM RCH3 AS BYTE
DIM RCH4 AS BYTE
'##DEF JUMP VARIABLE
DIM STICKPOS AS BYTE
DIM LSTICK AS BYTE
DIM RSTICK AS BYTE
DIM A16 AS BYTE
DIM A26 AS BYTE
'##DEF WAIT TIME
CONST WAITTIME = 10
'##DEF THURESHOLD VALUE
'1ch: L-UD(U+), 2ch R-LR(R+), 3ch R-UD(U+), 4ch L-LR(L+)
CONST RCH1MIN = 40
CONST RCH1MAX = 140
CONST RCH2MIN = 40
CONST RCH2MAX = 140
CONST RCH3MIN = 40
CONST RCH3MAX = 140
CONST RCH4MIN = 40
CONST RCH4MAX = 140
'##DEF VALUE STICK POS.
CONST TOP = 100
CONST DOWN = 0
CONST LEFT = 0
CONST RIGHT = 100
CONST CENTER = 50
'##DEF GYRO
'For GWS Gyro
GYROSET G6A, 0, 1, 1, 1, 0, 0
GYROSET G6D, 0, 1, 1, 1, 0, 0
GYRODIR G6A, 0, 1, 1, 1, 0, 0
GYRODIR G6D, 0, 1, 1, 1, 0, 0
GYROSENSE G6A, 0, 100, 100, 100, 0, 0
GYROSENSE G6D, 0, 100, 100, 100, 0, 0
'==========================================
'--- AUTO MAIN ---
STICKPOS = 0
PTP SETON
PTP ALLON
'== motor diretion setting
DIR G6A,1,0,0,1,0,0
DIR G6B,1,1,1,1,1,1
DIR G6C,0,0,0,0,0,0
DIR G6D,0,1,1,0,1,0
'== motor start position read
GETMOTORSET G24,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0
TEMPO 230
MUSIC "CDE"
DELAY 2000
'== motor power on
SPEED 5
MOTOR G24
GOSUB standard_pose
'==========================================
'--- MAIN ROUTINE ---
MAIN:
DELAY WAITTIME
GOSUB RCDATACALC
GOSUB CALCSTICKPOS
IF LSTICK = 0 AND RSTICK = 0 THEN
GOTO MAIN
ELSEIF RSTICK = 0 THEN
STICKPOS = LSTICK
ELSEIF RSTICK = 1 THEN
STICKPOS = LSTICK + 10
ELSEIF RSTICK = 2 THEN
STICKPOS = LSTICK + 20
ELSEIF LSTICK = 0 THEN
STICKPOS = RSTICK + 30
ENDIF
'---DECIDE MOTION ---
MUSIC "C"
ON STICKPOS GOTO K0,K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39
GOTO MAIN
'---MAIN ROUTINE EXIT ---
MAIN_EXIT:
STICKPOS = 0
GOTO MAIN
'==========================================
'--- GET STICK POSITION ---
RCDATACALC:
RCH1 = RCIN (0)
RCH2 = RCIN (1)
RCH3 = RCIN (2)
RCH4 = RCIN (3)
'##INPUT VALUE DEPEND ON STICK POSITION
IF RCH1 < RCH1MIN THEN
RCH1 = DOWN
ELSEIF RCH1 > RCH1MAX THEN
RCH1 = TOP
ELSE
RCH1 = CENTER
ENDIF
IF RCH2 < RCH2MIN THEN
RCH2 = RIGHT
ELSEIF RCH2 > RCH2MAX THEN
RCH2 = LEFT
ELSE
RCH2 = CENTER
ENDIF
IF RCH3 < RCH3MIN THEN
RCH3 = DOWN
ELSEIF RCH3 > RCH3MAX THEN
RCH3 = TOP
ELSE
RCH3 = CENTER
ENDIF
IF RCH4 < RCH4MIN THEN
RCH4 = RIGHT
ELSEIF RCH4 > RCH4MAX THEN
RCH4 = LEFT
ELSE
RCH4 = CENTER
ENDIF
RETURN
'==========================================
'--- CALCULATE STICKPOSITION ---
CALCSTICKPOS:
IF RCH1 = CENTER AND RCH4 = CENTER THEN
LSTICK = 0
ELSEIF RCH1 = CENTER AND RCH4 = LEFT THEN
LSTICK = 3
ELSEIF RCH1 = CENTER AND RCH4 = RIGHT THEN
LSTICK = 4
ELSEIF RCH1 = TOP AND RCH4 = CENTER THEN
LSTICK = 1
ELSEIF RCH1 = TOP AND RCH4 = LEFT THEN
LSTICK = 5
ELSEIF RCH1 = TOP AND RCH4 = RIGHT THEN
LSTICK = 6
ELSEIF RCH1 = DOWN AND RCH4 = CENTER THEN
LSTICK = 2
ELSEIF RCH1 = DOWN AND RCH4 = LEFT THEN
LSTICK = 7
ELSEIF RCH1 = DOWN AND RCH4 = RIGHT THEN
LSTICK = 8
ENDIF
IF RCH3 = DOWN AND RCH2 = CENTER THEN
RSTICK = 2
ELSEIF RCH3 = DOWN AND RCH2 = LEFT THEN
RSTICK = 7
ELSEIF RCH3 = DOWN AND RCH2 = RIGHT THEN
RSTICK= 8
ELSEIF RCH3 = TOP AND RCH2 = CENTER THEN
RSTICK = 1
ELSEIF RCH3 = TOP AND RCH2 = LEFT THEN
RSTICK = 5
ELSEIF RCH3 = TOP AND RCH2 = RIGHT THEN
RSTICK = 6
ELSEIF RCH3 = CENTER AND RCH2 = LEFT THEN
RSTICK = 3
ELSEIF RCH3 = CENTER AND RCH2 = RIGHT THEN
RSTICK = 4
ELSEIF RCH3 = CENTER AND RCH2 = CENTER THEN
RSTICK = 0
ENDIF
RETURN
----
#comment
----
&counter()
表示オプション
横に並べて表示:
変化行の前後のみ表示: