'****************************************
'***** 메탈파이터 기초 프로그램 *******
'****************************************
'******* 변수선언 ***********************
DIM A AS BYTE
DIM A_old AS BYTE
DIM X AS BYTE
DIM Y AS BYTE
'**** 기울기센서포트 설정
CONST 앞뒤기울기AD포트 = 2
CONST 좌우기울기AD포트 = 3
CONST MIN = 105 '앞으로넘어졌을때
CONST MAX = 145 '뒤로넘어졌을때
'*******모터방향설정*********************
DIR G6A,1,0,0,1,0,0 '왼쪽다리:모터0~5번
DIR G6D,0,1,1,0,1,0 '오른쪽다리:모터18~23번
DIR G6B,1,1,1,1,1,1 '왼쪽팔:모터6~11번
DIR G6C,0,0,0,0,0,0 '오른쪽팔:모터12~17번
'*******모터동시제어설정****************
PTP SETON '단위그룹별 점대점동작 설정
PTP ALLON '전체모터 점대점 동작 설정
'*******모터위치값피드백****************
GOSUB MOTOR_GET
'*******모터사용설정********************
GOSUB MOTOR_ON
'*******피에조소리내기******************
TEMPO 220
MUSIC "O23EAB7EA>3#C"
'***** 초기자세로 **********************
SPEED 5
GOSUB 기본자세
'***** 메인 반복루틴 **************
MAIN:
ERX 4800,A,MAIN
A_old = A
IF A = 1 THEN ' 1버튼
GOTO 왼쪽턴10
ELSEIF A = 3 THEN ' 3버튼
GOTO 오른쪽턴10
ELSEIF A = 4 THEN ' 4버튼
GOTO 왼쪽턴20
ELSEIF A = 6 THEN ' 6버튼
GOTO 오른쪽턴20
ELSEIF A = 7 THEN ' 7버튼
GOTO 왼쪽턴45
ELSEIF A = 9 THEN ' 9버튼
GOTO 오른쪽턴45
ELSEIF A = 22 THEN ' *:버튼
GOTO 왼쪽턴60
ELSEIF A = 24 THEN ' #:버튼
GOTO 오른쪽턴60
ELSE
MUSIC "F"
ENDIF
GOTO MAIN
'************************************************
'**********************************************
왼쪽턴10:
SPEED 5
MOVE G6A,97, 86, 145, 83, 103, 100
MOVE G6D,97, 66, 145, 103, 103, 100
WAIT
SPEED 12
MOVE G6A,94, 86, 145, 83, 101, 100
MOVE G6D,94, 66, 145, 103, 101, 100
WAIT
SPEED 6
MOVE G6A,101, 76, 146, 93, 98, 100
MOVE G6D,101, 76, 146, 93, 98, 100
MOVE G6B,100, 30, 80
MOVE G6C,100, 30, 80
WAIT
GOSUB 기본자세
GOTO MAIN
'**********************************************
오른쪽턴10:
SPEED 5
MOVE G6A,97, 66, 145, 103, 103, 100
MOVE G6D,97, 86, 145, 83, 103, 100
WAIT
SPEED 12
MOVE G6A,94, 66, 145, 103, 101, 100
MOVE G6D,94, 86, 145, 83, 101, 100
WAIT
SPEED 6
MOVE G6A,101, 76, 146, 93, 98, 100
MOVE G6D,101, 76, 146, 93, 98, 100
MOVE G6B,100, 30, 80
MOVE G6C,100, 30, 80
WAIT
GOSUB 기본자세
GOTO MAIN
'**********************************************
'**********************************************
왼쪽턴20:
GOSUB Leg_motor_mode2
SPEED 8
MOVE G6A,95, 96, 145, 73, 105, 100
MOVE G6D,95, 56, 145, 113, 105, 100
MOVE G6B,110
MOVE G6C,90
WAIT
SPEED 12
MOVE G6A,93, 96, 145, 73, 105, 100
MOVE G6D,93, 56, 145, 113, 105, 100
WAIT
SPEED 6
MOVE G6A,101, 76, 146, 93, 98, 100
MOVE G6D,101, 76, 146, 93, 98, 100
MOVE G6B,100, 30, 80
MOVE G6C,100, 30, 80
WAIT
GOSUB 기본자세
GOSUB Leg_motor_mode1
GOTO MAIN
'**********************************************
오른쪽턴20:
GOSUB Leg_motor_mode2
SPEED 8
MOVE G6A,95, 56, 145, 113, 105, 100
MOVE G6D,95, 96, 145, 73, 105, 100
MOVE G6B,90
MOVE G6C,110
WAIT
SPEED 12
MOVE G6A,93, 56, 145, 113, 105, 100
MOVE G6D,93, 96, 145, 73, 105, 100
WAIT
SPEED 6
MOVE G6A,101, 76, 146, 93, 98, 100
MOVE G6D,101, 76, 146, 93, 98, 100
MOVE G6B,100, 30, 80
MOVE G6C,100, 30, 80
WAIT
GOSUB 기본자세
GOSUB Leg_motor_mode1
GOTO MAIN
'**********************************************
왼쪽턴45:
GOSUB Leg_motor_mode2
SPEED 8
MOVE G6A,95, 106, 145, 63, 105, 100
MOVE G6D,95, 46, 145, 123, 105, 100
MOVE G6B,115
MOVE G6C,85
WAIT
SPEED 10
MOVE G6A,93, 106, 145, 63, 105, 100
MOVE G6D,93, 46, 145, 123, 105, 100
WAIT
SPEED 8
GOSUB 기본자세
GOSUB Leg_motor_mode1
GOTO MAIN
'**********************************************
오른쪽턴45:
GOSUB Leg_motor_mode2
SPEED 8
MOVE G6A,95, 46, 145, 123, 105, 100
MOVE G6D,95, 106, 145, 63, 105, 100
MOVE G6C,115
MOVE G6B,85
WAIT
SPEED 10
MOVE G6A,93, 46, 145, 123, 105, 100
MOVE G6D,93, 106, 145, 63, 105, 100
WAIT
SPEED 8
GOSUB 기본자세
GOSUB Leg_motor_mode1
GOTO MAIN
'**********************************************
왼쪽턴60:
SPEED 15
MOVE G6A,95, 116, 145, 53, 105, 100
MOVE G6D,95, 36, 145, 133, 105, 100
WAIT
SPEED 15
MOVE G6A,90, 116, 145, 53, 105, 100
MOVE G6D,90, 36, 145, 133, 105, 100
WAIT
SPEED 10
GOSUB 기본자세
GOTO MAIN
'**********************************************
오른쪽턴60:
SPEED 15
MOVE G6A,95, 36, 145, 133, 105, 100
MOVE G6D,95, 116, 145, 53, 105, 100
WAIT
SPEED 15
MOVE G6A,90, 36, 145, 133, 105, 100
MOVE G6D,90, 116, 145, 53, 105, 100
WAIT
SPEED 10
GOSUB 기본자세
GOTO MAIN
'************************************************
'************************************************
'******************************************
'***************************************
MOTOR_ON: '전포트서보모터사용설정
MOTOR G24
RETURN
'***********************************
MOTOR_OFF: '전포트서보모터설정해제
MOTOROFF G6B
MOTOROFF G6C
MOTOROFF G6A
MOTOROFF G6D
RETURN
'***********************************
MOTOR_GET: '위치값피드백
GETMOTORSET G6A,1,1,1,1,1,0
GETMOTORSET G6B,1,1,1,0,0,1
GETMOTORSET G6C,1,1,1,0,0,0
GETMOTORSET G6D,1,1,1,1,1,0
RETURN
'*******기본자세관련*****************
기본자세:
MOVE G6A,100, 76, 145, 93, 100, 100
MOVE G6D,100, 76, 145, 93, 100, 100
MOVE G6B,100, 30, 80, 100, 100, 100
MOVE G6C,100, 30, 80, 100, 100, 100
WAIT
RETURN
'*************************************
차렷자세:
MOVE G6A,100, 56, 182, 76, 100, 100
MOVE G6D,100, 56, 182, 76, 100, 100
MOVE G6B,100, 20, 90, 100, 100, 100
MOVE G6C,100, 20, 90, 100, 100, 100
WAIT
RETURN
'**************************************
앉은자세:
MOVE G6A,100, 143, 28, 142, 100, 100
MOVE G6D,100, 143, 28, 142, 100, 100
MOVE G6B,100, 30, 80
MOVE G6C,100, 30, 80
WAIT
RETURN
'***************************************
'************************************************
All_motor_Reset:
MOTORMODE G6A,1,1,1,1,1
MOTORMODE G6D,1,1,1,1,1
MOTORMODE G6B,1,1,1, , ,1
MOTORMODE G6C,1,1,1
RETURN
'************************************************
All_motor_mode2:
MOTORMODE G6A,2,2,2,2,2
MOTORMODE G6D,2,2,2,2,2
MOTORMODE G6B,2,2,2, , ,2
MOTORMODE G6C,2,2,2
RETURN
'************************************************
All_motor_mode3:
MOTORMODE G6A,3,3,3,3,3
MOTORMODE G6D,3,3,3,3,3
MOTORMODE G6B,3,3,3, , ,3
MOTORMODE G6C,3,3,3
RETURN
'************************************************
Leg_motor_mode1:
MOTORMODE G6A,1,1,1,1,1
MOTORMODE G6D,1,1,1,1,1
RETURN
'************************************************
Leg_motor_mode2:
MOTORMODE G6A,2,2,2,2,2
MOTORMODE G6D,2,2,2,2,2
RETURN
'************************************************
Leg_motor_mode3:
MOTORMODE G6A,3,3,3,3,3
MOTORMODE G6D,3,3,3,3,3
RETURN
'************************************************
Leg_motor_mode4:
MOTORMODE G6A,3,2,2,1,3
MOTORMODE G6D,3,2,2,1,3
RETURN
'************************************************
Leg_motor_mode5:
MOTORMODE G6A,3,2,2,1,2
MOTORMODE G6D,3,2,2,1,2
RETURN
'************************************************
'************************************************
Arm_motor_mode1:
MOTORMODE G6B,1,1,1
MOTORMODE G6C,1,1,1
RETURN
'************************************************
Arm_motor_mode2:
MOTORMODE G6B,2,2,2
MOTORMODE G6C,2,2,2
RETURN
'************************************************
Arm_motor_mode3:
MOTORMODE G6B,3,3,3
MOTORMODE G6C,3,3,3
RETURN
'************************************************
RX_EXIT: '수신값을 버리는루틴
ERX 4800, A, MAIN
GOTO RX_EXIT
'************************************************