![]() |
Sample Program
' '********************************************************* ' ' R/C Transmitter Control Program for PPF-08i Ver.0.1 ' ' rctr01.bas 2000/7/25 by K. Hirata ' '********************************************************* ' ' PIC16F84 20MHz用 ' Futaba, T4VF, SKYSPORT4用 ' '*********************** ' 初期設定 '*********************** ' Symbol ONtime=W0 Symbol T1=W1 Symbol T2=W2 Symbol T3=W3 Symbol Freq=W4 Symbol LL=W5 Symbol RR=W6 Symbol SpeedStep=W7 Symbol ModeNum=W8 Symbol Amplitude=W9 Symbol ONtime_int=W10 Symbol i=W11 Symbol Ptime=18 'パルス周期(18ms) Symbol ONtime_min=250 '350 'ONの時間の最小値(375/(20/4)/100=0.70ms) Symbol ONtime_cent=575 'ONの時間の中立値(550/(20/4)/100=1.10ms) Symbol ONtime_max=870 '800 'ONの時間の最大値(562/(20/4)/100=1.60ms) ' input 0: input 1: input 2: input 3 input 4: input 5: input 6: output 7 ' Poke $81,0 'プルアップ抵抗の設定 ' '************************************ ' 初期設定 '************************************ ' Freq=200 '周波数(/100Hz) Amplitude=30 '振幅(0-100) 'Goto HighSpeed 'Goto SmallAmp ' '************************************ ' メインルーチン(運動設定モード) '************************************ ' Loop: ' ' 運動の設定 ' If pin0=0 then LeftL: If pin1=0 then Center: If pin2=0 then RightR: Goto StopMotion '何も押されていない場合 Leaning: ' ' 周波数の設定 ' If pin5=0 then HighSpeed: If pin6=0 then LowSpeed: Speed: ' ' 振幅の設定 ' If pin3=0 then LargeAmp: If pin4=0 then SmallAmp: Amp: ' ' 尾ひれの往復運動 ' For ONtime=T1 to T2 step SpeedStep 'ONの時間(/2.5usec) Pulsout 7, ONtime Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,150 'ONの時間(/2.5usec=0.6msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) ONtime_int=5850-ONtime ''ONの時間(11.7ms-ONtime) Pulsout 7, ONtime_int Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Next ONtime T2=T2-1: T1=T1+1 For ONtime=T2 to T1 step -SpeedStep 'ONの時間(/2.5usec) Pulsout 7, ONtime Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,150 'ONの時間(/2.5usec=0.6msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) ONtime_int=5850-ONtime ''ONの時間(11.7ms-ONtime) Pulsout 7, ONtime_int Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Next ONtime T2=T2+1: T1=T1-1 Goto Loop End ' '****************************** ' 静止・サブルーチン '****************************** ' StopMotion: Pulsout 7, ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,ONtime_cent 'ONの時間(/2.5usec=1.1msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Pulsout 7,150 'ONの時間(/2.5usec=0.6msec) Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) ONtime_int=5850-ONtime_cent 'ONの時間(11.7ms-ONtime) Pulsout 7, ONtime_int Pause 2 'OFFtime 'OFFの時間(2/5=0.4msec) Goto Loop ' '****************************** ' 振幅設定・サブルーチン '****************************** ' ' 振幅・大 ' LargeAmp: Amplitude=60 '振幅(0-100) Goto Amp ' ' 振幅・小 ' SmallAmp: Amplitude=30 '振幅(0-100) Goto Amp ' '****************************** ' 周波数設定・サブルーチン '****************************** ' LowSpeed: Freq=150 '周波数(/100Hz) Goto Speed ' HighSpeed: Freq=250 '周波数(/100Hz) Goto Speed ' '****************************** ' 傾き設定・サブルーチン '****************************** ' LeftL: RR=Amplitude LL=0 Gosub Mode_set Goto Leaning ' RightR: RR=100 LL=100-Amplitude Gosub Mode_set Goto Leaning ' Center: RR=Amplitude/2 RR=50+RR LL=Amplitude/2 LL=50-LL Gosub Mode_set Goto Leaning ' '****************************** ' モードセット・サブルーチン '****************************** ' Mode_set: T1=ONtime_max-Ontime_min T1=T1/100 T1=T1*LL T1=ONtime_min+T1 ' T2=ONtime_max-Ontime_min T2=T2/100 T2=T2*RR T2=ONtime_min+T2 ' T3=T2-T1 '1/2周期のデータ数 T3=2*T3 '1周期のデータ数(4の倍数) SpeedStep=10000/Freq/Ptime*10 '設定した周波数に対応するデータ数 SpeedStep=T3/SpeedStep '刻み幅(ステップ) Return |
[ Microcomputer ] [ Hirata HOME ] [ Power and Energy Engineering Division ] [ NMRI HOME ] |
![]() |
Contact khirata@nmri.go.jp |