「RCcontrolプログラム」の編集履歴(バックアップ)一覧はこちら

RCcontrolプログラム」(2006/01/18 (水) 10:27:45) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

&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()

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー