電子工作 21 - 赤外線リモートコントロール事始2 – 調光器をコントロール

概要

前の電子工作 20で作製した送・受信装置やプログラムを、ずっと以前に作成した電子工作 1調光器を赤外線リモコンでモータ駆動する回路”と組合わせてみることにした。はたして、実用になるのか、試してみようというものである。

 

回路

送信側:

入力スイッチは、SW1 と SW2 の2個にし、SW1を押すと、調光器のAC出力が低下し、SW2を押すと、調光器のAC出力が上昇するという単純なものである。電源はパワーが出る4.5Vにした。右側の写真は製作した送信装置である。下の白いのが電源スイッチ、その上方にSW1とSW2が見える。左手の透明な2ピンのLED風のものが、赤外線LEDである。そして、基板全体が電池ボックスの上に乗っている。

 


 


受信側:

図から分かる様に、調光器を制御するために、12F629から出ている2本のI/Oピン(GP0とGP1)を使っている。ノイズの影響を考えて、フォトリレー2個を使って、モーター駆動の電源を別にした(単三2本)。モーターの回転方向の変換は、2連のメカニカルリレーを使って行っている。このモーターは、調光器の外に取り出した250KWのボリュームを機械的に正転・逆転させ、調光器のAC出力を変える。右手の写真が受信側の全体図である。2個の白いものがフォトリレー、その脇にあるのがメカニカルリレー、5V電源もここで作り出している。右手の穴あきアルミ板に乗っているのが、モーターの回転を落とし、模型自動車用のゴムタイヤ(直径25mm)を回転させるためのギアーボックス(タミヤUniversal Gearbox No.103)である。このゴムタイヤがボリュームに装着されたアルミ製の溝付きノブを回す。ゴムタイヤとノブ間の接触は簡単にスリップするように調節した。


 


 

 


プログラム  

送信プログラム

SW1を押すと、100ms の中に変調された8−9本のパルスが入った信号を送り続け、SW2を押すと、100ms の中に変調された12−13本のパルスが入った信号を送り続ける。これが送信側の基本動作である。

 

'FanTrpr.bas  2007.6.20 This works together with FanRcpr.bas.

 

'************** Pin connection **********************

'12F629, 4MHz Internal Clock used

'Pin 1: Vdd (5.0V)

'Pin 8: Vss (GND)

'Pin 6: GPIO.1: input - connected to SW1 lowering brightness (brtness)

'Pin 5: GPIO.2: input - connected to SW2  Increasing brightness

'Pin 3: GPIO.4: output - connected to IR LED via 100 ohm resistor

 

'*********** Main body of program ******************

CMCON=7 'Comparator not used

TRISIO=%000110  'GPIO.1 and GPIO.2 = Input, others = Output

GPIO=0 'ALL LOW

OPTION_REG.7=0  'Pull-up for GPIO.1 and GPIO.2

WPU=%000111

 

DEFINE OSCCAL_1K 1 'Set OSCCAL for 1K device

X var byte

SW1 var GPIO.1

SW2 var GPIO.2

 

X = 0

 

START:

SWFIND: 'Key search routine

If SW1=0 Then CHANNEL1  'lowering brtness

If SW2=0 Then CHANNEL2  'increasing brtness

Goto SWFIND

 

CHANNEL1:

High GPIO.4

High GPIO.4

Low GPIO.4

X=X+1

IF X > 66 Then SPACE1  '66 = 1.8 ms-long modulated-wave length

Goto START

 

SPACE1:

X=0

Pause 10 '10 ms

Goto START

 

CHANNEL2:

High GPIO.4

@Nop

Low GPIO.4

X=X+1

IF X > 45 Then SPACE2  '45 = 1.2 ms-long modulated-wave length

Goto START

 

SPACE2:

X=0

Pause 7 '7 ms as space

Goto START

 

'********** End of program ***************

'Note:

   'AKI Programmer's configurations:

   'FOSC  INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

   'MCLR - Internal ; BODEN - Enable; CD - Disable; CDP - Disable

 

 

受信プログラム

送信側から送られてくるSW1とSW2の信号を区別し、SW1ならGP0をHighにして、モーターを調光器からのAC出力が低下する方向に回転させ、SW2ならGP1をHighにして、モーターを逆転させ調光器からのAC出力が増加する方向に回転させる。いずれかのSWを押している間は、断続的に約200ms(Pause 200)間モーターに電流が供給される。SWを放せば、モーターは停止し、ボリュームの回転も停止して、その時のAC出力が維持される。

 

'FanRcpr.bas  2007.6.19 Receiver side for fan control program

'IF X = 12 OR X = 13 Then XXX newly added - worked OK! 6.20

 

'************** Pin connection **********************

'12F629, 4MHz Internal Clock used

'Pin 1: Vdd (5.0V)

'Pin 8: Vss (GND)

'Pin 7: GPIO.0: output - connected to P.Relay1 via 100 ohm R

'Pin 6: GPIO.1: output - connected to P.Relay2 via 100 ohm R

'Pin 4: GPIO.3: output - connected to MCLR via 4.7 K R

'Pin 3: GPIO.4: input - connected to IR rec. module's output

 

'*********** Main body of program *****************

CMCON = 7 'Comparator not used

TRISIO = %011000 'GPIO.3/4 INPUTs FROM MCLR and IR RCVR

DEFINE OSCCAL_1K 1 ' Set OSCCAL for 1K device

 

X VAR BYTE

 

START:

Low GPIO.0

Low GPIO.1

 

MEASURE:

Count GPIO.4, 100, X 'demodulated pulses read into GPIO.4: counts/100ms

IF X = 8 OR X = 9 Then ONCEMORE1    'Lowering brtness (=brightness)

IF X = 12 OR X = 13 Then ONCEMORE2  'Increasing brtness

Goto START

 

'2nd count routines to eliminate false triggering  important

 

ONCEMORE1:

Pause 10

Count GPIO.4, 100, X

IF X = 8 OR X = 9 Then

Pause 10

Else

GoTo MEASURE

Endif

Count GPIO.4, 100, X

IF X = 8 OR X = 9 Then LowerBrtness

GoTo MEASURE

 

ONCEMORE2:

Pause 10

Count GPIO.4, 100, X

IF X = 12 OR X = 13 Then

Pause 10

Else

GoTo MEASURE

Endif

Count GPIO.4, 100, X

IF X = 12 OR X = 13 Then IncreaseBrtness

GoTo MEASURE

 

LowerBrtness:

X=0

High GPIO.0  'Lower brightness

Pause 200

Low GPIO.0

GoTo START

 

IncreaseBrtness:

X=0

High GPIO.1  'Increase brightness

Pause 200

Low GPIO.1

GoTo START

 

'********** End of program **************

'Note:

   'AKI Programmer's configurations:

   'FOSC  INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

   'MCLR - Enable ; BODEN - Enable; CD - Disable; CDP  Disable

 

分かった事など

     AC100Vのファンをつなげてテストしたところ、その回転を軽快にコントロールすることが分かった。

     但し、回転の増減は、プログラムの性質上断続的である。

     IF X = 12 OR X = 13 Then ONCEMORE2  の部分は、最初 X = 12のみであった。SW2に反応しないことがあったので、オシロで見たらパルスが13本に増えていた。そこで OR X = 13を加え、問題を解決した。

     遠隔コントロール出来る距離は、10メートル以上。

 

余談

ノイズの影響など、しばらく使ってみないと分からないとは言え、PICBasic Proコンパイラの”COUNT”というパルスをカウントするコマンドを使って、赤外線コントロールが出来ることは興味深い。

暑さが予想されるこの夏、長屋の2台目換気用ファンのコントロールに活躍しそう。

 

<後で分かったこと−やっぱり電球型蛍光灯からノイズを拾う> 2007.6.27

そこで、SW1を押した時の変調されたパルス数8−9本(in 100ms)を20−21本に、また、SW2を押した時の変調されたパルス数12−13本を30−31本に増やした。つまり、ノイズパルスのパターンが、より一致し難くした訳である。これで、大分ノイズに強くなったような気がするが使い続けてみないと分からない。当然だが反応時間が多少長くなった。

また、送信側で38KHz変調波を発生させるルーチンも少し変えて、より精度を高めた(注:周波数とDuty比が送信プログラム中に示してある)。

以下に、改良した送・受信プログラムを示す。

 

送信プログラム

'FanTrpr2.bas  2007.6.27  Increase pulse numbers to avoid errors

'*********** Main program ******************

CMCON=7 'Comparator not used

TRISIO=%000110  'GPIO.1 and GPIO.2 = Input, others = Output

GPIO=0 'ALL LOW

OPTION_REG.7=0  'Pull-up for GPIO.1 and GPIO.2

WPU=%000111

 

DEFINE OSCCAL_1K 1 'Set OSCCAL for 1K device

X var byte

SW1 var GPIO.1

SW2 var GPIO.2

 

X = 0

 

START:

SWFIND: 'Key search routine

If SW1=0 Then CHANNEL1  'lowering brtness

If SW2=0 Then CHANNEL2  'increasing brtness

Goto SWFIND

 

CHANNEL1:

High GPIO.4  'revised 2007.6.26 - Freq=38.59 kHz, Duty Ratio=30.85

High GPIO.4    

Low GPIO.4   

@Nop         

@Nop         

X=X+1

IF X > 66 Then SPACE1  '66 = 1.8 ms-long modulated-wave length

Goto START

 

SPACE1:

X=0

Pause 3 '3 ms 2007.6.27  shortened from 5 ms

Goto START

 

CHANNEL2:

High GPIO.4  'revised 2007.6.26 - Freq=38.62 kHz, Duty Ratio=26.97

@Nop

@Nop

@Nop

Low GPIO.4

X=X+1

IF X > 45 Then SPACE2  '45 = 1.2 ms-long modulated-wave length

Goto START

 

SPACE2:

X=0

Pause 2 '2 ms 2007.6.27  shortened from 3 ms

Goto START

 

'********** End of program ***************

'Note:

   'AKI Programmer's configurations:

   'FOSC  INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

   'MCLR - Internal ; BODEN - Enable; CD - Disable; CDP – Disable

 

受信プログラム 

'FanRcpr2.bas  2007.6.27  Increase pulse numbers to avoid errors.

'*********** Main program *****************

CMCON = 7 'Comparator not used

TRISIO = %011000 'GPIO.3/4 INPUTs FROM MCLR and IR RCVR

DEFINE OSCCAL_1K 1 ' Set OSCCAL for 1K device

 

X VAR byte

 

START:

'X=0     'added 2007.6.27

Low GPIO.0

Low GPIO.1

 

MEASURE:

Count GPIO.4, 100, X 'demodulated pulses read into GPIO.4: counts/100ms

IF X=20 OR X=21 Then ONCEMORE1    'Lowering brtness (=brightness)

IF X=30 OR X=31 Then ONCEMORE2    'Increasing brtness

Goto START

 

'2nd count routines to eliminate false triggering  important

 

ONCEMORE1:

Pause 10

Count GPIO.4, 100, X

IF X=20 OR X=21 Then

Pause 10

Else

GoTo MEASURE

Endif

Count GPIO.4, 100, X

IF X=20 OR X=21 Then LowerBrtness

GoTo MEASURE

 

ONCEMORE2:

Pause 10

Count GPIO.4, 100, X

IF X=30 OR X=31 Then

Pause 10

Else

GoTo MEASURE

Endif

Count GPIO.4, 100, X

IF X=30 OR X=31 Then IncreaseBrtness

GoTo MEASURE

 

LowerBrtness:

X=0

High GPIO.0  'Lower brightness

Pause 200

Low GPIO.0

GoTo START

 

IncreaseBrtness:

X=0

High GPIO.1  'Increase brightness

Pause 200

Low GPIO.1

GoTo START

 

'********** End of program **************

'Note:

   'AKI Programmer's configurations:

   'FOSC  INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

'MCLR - Enable ; BODEN - Enable; CD - Disable; CDP  Disable

 

 

<追加 – 上記の調光器にAC100Vライン用ON/OFFスイッチを追加し、電子工作22のプログラムでコントロールする> 2007.7.11

 Pulsinを使う電子工作22のプログラムが、干渉により強いようなので、このプロジェクトの送信器と調光器のドライブ回路の一部を改造して、これまでの調光器モーターの正転、逆転の制御の外に、外部のAC100VラインのON/OFF(コマンドToggle を使ったラッチ動作)出来るように改造した。具体的には、

送信側

a) 送信ボードの12F629のGPIO.0(ピン7)にSW3を追加した。

受信側

a)     受信ボードの12F629のGPIO.2(ピン5)にトランジスタを介して、SSR (Solid State Relay)を加え、AC100Vを直接ON/OFF出来るようにした(送信ボードのSW3を押すとON、次に押すとOFF、という動作を繰返す)


 


プログラム

  実際に電子工作22のプログラムをそのまま調光器の送信、受信ボードの12F629に載せて動かしたところ、100円ショップで購入した電球型蛍光灯から、ひどくノイズを拾って誤動作することが分かった。そこで、パルスのビット数を5から8に増やし、しかも、“H”と“L”の組合せをより複雑にした。 しかし、やはり時折、受信ボードの上方約1メートルの電球型蛍光灯からノイズを拾い誤動作することが分かった。 問題解決のため、パルスのビット数を8から12に増やしてみた。その結果、かなり安定して動作するようになった。操作感やレスポンスもあまり変わらない。これから使ってみて、動作状態を観察したい。うまく行けば、アッセンブラのコマンドを使わない、PICBasic Proのコマンドだけによるリモコンソフトの作成が可能になる。なにしろ、ロジックが簡単なのが良い。

 

送信側: PulsinT1.bas

'PulsinT1.bas 2007.7.11 Increase the bit number to 12 from 8 to avoid

'noise interference

'PulsinTp.bas 2007.7.10 Increased the number of bits to 8 from 5 and made

'the bit-combination more complex to avoid noise interference - Works Better!

'PulsinTm.bas 2007.7.8  modified in use for Proj21

'PulsinT.bas 2007.7.1     2007.6.30   Pulsin proj.

 

'************** Pin connection **********************

'12F629, 4MHz Internal Clock used

'Pin 1: Vdd (5.0V)

'Pin 8: Vss (GND)

'Pin 7: GPIO.0: input - connected to SW3   2007.7.8

'Pin 6: GPIO.1: input - connected to SW1   2007.7.8

'Pin 5: GPIO.2: input - connected to SW2   2007.7.8

'Pin 3: GPIO.4: output - connected to IR LED via 100 ohm resistor

 

'*********** Main program ******************

CMCON=7 'Comparator not used

TRISIO=%000111  'GPIO.0, GPIO.1 and GPIO.2 = Input, others = Output

OPTION_REG.7=0  'Use of weak pull-up

WPU=%000111     'Pull-up for GPIO.0, GPIO.1 and GPIO.2

DEFINE OSCCAL_1K 1 'Set OSCCAL for 1K device

 

X var byte

SW1 var GPIO.1

SW2 var GPIO.2

SW3 var GPIO.0

GPIO.0=0

GPIO.1=0

GPIO.2=0

GPIO.4=0

 

SWINR:  'SW search routine  キー入力待ちルーチン

IF SW1=0 THEN SW1R   'SW1

IF SW2=0 THEN SW2R   'SW2

IF SW3=0 THEN SW3R   'SSR drive newly added

GOTO SWINR

 

SW1R: 'Code HLHL HHHH LHLH =%1010 1111 0101=2805 (dec) 12ビットのコード作成 SW1用、 HとLの組合せは適当に決めた

X=0

GOSUB Startbit  '3 ms

GOSUB Sepbit   'Separate bit=2 ms

GOSUB Hbit  '"H" '2 ms

GOSUB Sepbit

GOSUB Lbit  '"L" '1 ms

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Hbit  '"H" 'following 3 bits newly added

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"  'following 4 bits newly added 7.11

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

Goto SWINR

 

SW2R: 'Code HLHL HLHL HLHH =%1010 1010 1011=2731 (dec)  SW2用

X=0

GOSUB Startbit  '3 ms

GOSUB Sepbit   'Separate bit=2 ms

GOSUB Hbit  '"H" '2 ms

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"  'following 3 bits newly added

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"  'following 4 bits newly added 7.11

GOSUB Sepbit

GOSUB Hbit  '"H" 

GOSUB Sepbit

GOSUB Lbit  '"L" 

GOSUB Sepbit

GOSUB Hbit  '"H" 

GOSUB Sepbit

Goto SWINR

 

SW3R: 'Code HLHH HLHL LHHH =%1011 1010 0111=2983 (dec)  SW3用

X=0

GOSUB Startbit  '3 ms

GOSUB Sepbit   'Separate bit=2 ms

GOSUB Hbit  '"H" '2 ms

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Lbit  '"L"  '1 ms

GOSUB Sepbit

GOSUB Hbit  '"H"  'following 3 bits newly added

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Hbit  '"H"  'following 4 bits newly added 7.11

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

GOSUB Lbit  '"L"

GOSUB Sepbit

GOSUB Hbit  '"H"

GOSUB Sepbit

Goto SWINR

 

Startbit:      ‘Startbitの作成

High GPIO.4 'GETTING 38KHZ WITH THIS SUBROUTINE 実際は43KHz位

High GPIO.4

Low GPIO.4

Low GPIO.4

X = X + 1

IF X < 99 Then STARTBIT '99 GIVES 3MS START PULSE  3msは実際には2.2-2.4ms

Return

 

Sepbit:      ‘Separatebitの作成

Pause 2    '2 ms この値はオシロ実測値とほぼ一致

X=0

Return

 

Hbit:       ‘Hビットの作成

High GPIO.4

High GPIO.4

Low GPIO.4

Low GPIO.4

X= X + 1

IF X < 66 Then Hbit '2MS CODEBIT 2msは実際には1.4-1.6ms

Return

 

Lbit:       ‘Lビットの作成

High GPIO.4

High GPIO.4

Low GPIO.4

Low GPIO.4

LET X= X + 1

IF X < 33 Then Lbit '1MS CODEBIT  1msは実際には0.65-0.75ms

Return

 

'********** End of program ***************

'Note:

   'AKI Programmer's configurations:

   'FOSC  INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

'MCLR - Internal ; BODEN - Enable; CD - Disable; CDP – Disable

 

 

受信側: PulsinR1.bas

'PulsinR1.bas 2007.7.11 Increase the bit number to 12 from 8 to avoid

'noise interference

'PulsinRp.bas 2007.7.10 Increased the number of bits to 8 from 5 made

'the bit-combination more complex to avoid noise interference - Works Better!

'PulsinRm.bas 2007.7.10  2007.7.9 Found to pick up noises (fluo lamp) and

'initial erroneous functioning when power plug inserted

'PulsinRm.bas 2007.7.8 (Paired with PulsinTm.bas) Works well.

''PulsinRt.bas 2007.7.5 "Toggle" introduced, which repeatedly turns ON/OFF when

'SW1 is pressed (every 0.5 sec). Succeeded!

'PulsinR.bas 2007.7.2  Worked at last. Pulsin proj.

'Frequency of Moduleted pulses - Designed 38KHz/Measured 43KHz

'Length of pulses:

'Startbit - Desined 3ms/Measured 2.3ms

'Separatelength - Desined 2ms/Measured 1.95ms

'Codes - "H" Desined 2ms/Measured 1.57ms; "L" Desined 1ms/Measured 0.83ms

 

'************** Pin connection **********************

'12F629, 4MHz Internal Clock used

'Pin 1: Vdd (5.0V)

'Pin 8: Vss (GND)

'Pin 7: GPIO.0: output - connected to P.Relay1 via 100 ohm R

'Pin 6: GPIO.1: output - connected to P.Relay2 via 100 ohm R

'Pin 5: GPIO.2: output - connected to SSR (solid State Relay) via Tr1815

'Pin 4: GPIO.3: input - connected to MCLR via 4.7 K R

'Pin 3: GPIO.4: input - connected to IR rec. module's output

 

'*************** Main program ***********************

CMCON=7  'Comparator off

TRISIO=%011000  'all others except GP3&4 are outputs.

DEFINE OSCCAL_1K 1

Codelength var Byte

Code var word  'for 12 code bits  byte -> word 2007.7.11 12ビットなのでWord

X var Byte

Clear  'Content of all variables -> 0

Pause 500  'Settle down PIC & IR receiver module

GPIO.0=0

GPIO.1=0

GPIO.2=0

Pause 500

 

Startpulse:

GPIO.0=0

GPIO.1=0

 

Pulsin GPIO.4,0,Codelength 'Measure low pulse (IR LED On time) パルス幅の測定

IF Codelength < 200 Then Startpulse  'Searching 3 ms pulse Startbitの到着待ち

IF Codelength > 300 Then Startpulse  ‘300は3000ms(3ms)に相当

 

'Checkpulse  12-bit code 2007.7.11 パルスを測定して12ビットのコード作成

'Checking Bit0

Pulsin GPIO.4,0,Codelength  ‘最下位ビットの作成

IF Codelength > 100 Then Code.bit0=1 '2 ms pulse is 1  initial 150->100 changed

IF Codelength < 100 Then Code.bit0=0 '1 ms pulse is 0

 

'Checking Bit1

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit1=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit1=0 '1 ms pulse is 0

 

'Checking Bit2

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit2=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit2=0 '1 ms pulse is 0

 

'Checking Bit3

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit3=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit3=0 '1 ms pulse is 0

 

'Checking Bit4

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit4=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit4=0 '1 ms pulse is 0

 

'Checking Bit5

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit5=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit5=0 '1 ms pulse is 0

 

'Checking Bit6

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit6=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit6=0 '1 ms pulse is 0

 

'Checking Bit7

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit7=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit7=0 '1 ms pulse is 0

 

'Checking Bit8

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit8=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit8=0 '1 ms pulse is 0

 

'Checking Bit9

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit9=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit9=0 '1 ms pulse is 0

 

'Checking Bit10

Pulsin GPIO.4,0,Codelength

IF Codelength > 100 Then Code.bit10=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit10=0 '1 ms pulse is 0

 

'Checking Bit11

Pulsin GPIO.4,0,Codelength  ‘最上位ビットの作成

IF Codelength > 100 Then Code.bit11=1 '2 ms pulse is 1

IF Codelength < 100 Then Code.bit11=0 '1 ms pulse is 0

 

Pause 20  ‘作成されたCode の送信値とのマッチング、分岐

IF Code=2805 Then RELAY1  '=%1010 1111 0101 Lower brightness

IF Code=2731 Then RELAY2  '=%1010 1010 1011 Increase brightness

IF Code=2983 Then SWONOFF '=%1011 1010 0111 External power switch NO/OFF

 

CLEAR

Goto Startpulse

 

RELAY1:    ‘明るさが低下する方向にVR軸を回す

High GPIO.0  'P.Relay1 ON (momentary operation)

Pause 100

Low GPIO.0

Goto Startpulse

 

RELAY2:    ‘明るさが増す方向にVR軸を回す

High GPIO.1  'P.Relay2 ON (momentary operation)

Pause 100

Low GPIO.1

Goto Startpulse

 

SWONOFF:     'External SW ON/OFF (latch operation) ACラインをON/OFFする

Toggle GPIO.2  ‘Toggleによって、SW3を押す毎に、GPIO.2のH/L状態が反転する

Pause 500

Goto Startpulse

 

'********** End of program ***************

'Note:

   'AKI Programmer's configurations:

   'FOSC  INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

   'MCLR - Enable ; BODEN - Enable; CD - Disable; CDP - Disable

 

 

Menu Pageへ戻る    

Topへ戻る