Merhaba arkadaşalr,
Forumda bir ihtiyaçtanda olsa gerek bu başlığı açayım dedim. Genelde merak edilen ve kullanılmak isteyen bir özellik. Sony kumanda okumak için 2 yöntem vardır.
1. si PBP ile bu yöntemi pals genişliklerini alarak yapabilrisiniz.
2. si PROTON ile tek bir komut SONYIN ile yapabilirsiniz.
1) PBP ile yapmak için, alttaki altprogramı kullanacaksınız. IRIN alt progtamı ile pals genişlikleri ölçülür ve değer alınır.
Kod:
'****************************************************************
'* Name : SIRC.BAS *
'* Author : Umut Kazanç (PICMAN) *
'* Notice : Copyright (c) 2004 umut_k.sitemynet.com *
'* : All Rights Reserved *
'* Date : 01.11.2004 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
@ DEVICE XT_OSC
define OSC 4
Define LCD_DREG PORTB
Define LCD_DBIT 4
Define LCD_RSREG PORTB
Define LCD_RSBIT 0
Define LCD_EREG PORTB
Define LCD_EBIT 3
'****************************************************************
CMCON = 7
'****************************************************************
IR_Sensor VAR PORTA.4
'****************************************************************
Header Var Word ' Header pulse length
Packet Var Word ' 12-bit IR information
P_Val Var Byte ' The bit length 60us = 0, 120us = 1
IR_But Var Byte ' The BUTTON code returned
IR_Dev Var Byte ' The DEVICE code returned
Sony_LP Var Byte ' Temporary loop variable
'****************************************************************
pause 250
lcdout $fe,1,"SIRC Code View",$fe,$c0,"Design By Umut K"
pause 1000
lcdout $fe,1,"Hazir..."
MAIN:
Gosub IRIN
If IR_Dev=255 then goto main
lcdout $fe,1,"Dev:",dec3 ir_dev," But:",dec3 ir_but,$fe,$c0,"Packet:",dec4 packet
pause 50
goto main
'****************************************************************
IRIN:
IR_Dev=255
IR_But=255
Pulsin IR_Sensor,0,Header
If Header < 200 then Return
If Header > 270 then Return
For Sony_Lp=0 to 11
Pulsin IR_Sensor,0,P_Val
If P_Val > 90 then
Packet.0[Sony_Lp]=1
Else
Packet.0[Sony_Lp]=0
Endif
Next
IR_But=Packet & %01111111
IR_Dev=(Packet >>7) & %00011111
Return
'****************************************************************
end
2) PROTON ile bu iş SONYIN komutu ile yapılır. Alttaki program da Sony kumandayı tek satırda okumuş olursunuz.
Kod:
Device = 16F877
SONYIN_PIN = PORTC.0 ' Choose the port and pin for the infrared sensor
Dim SONYIN_WORD as WORD ' Create a WORD variable to receive the SIRC data
Dim SONY_COMMAND as SONYIN_WORD.Lowbyte
Dim SONY_SYSTEM as SONYIN_WORD.Highbyte
ALL_DIGITAL = ON ' Make all pins digital mode
Cls ' Clear the LCD
While 1 = 1 ' Create an infinite loop
Repeat
SONYIN_WORD = SonyIn ' Receive a signal from the infrared sensor
Until SONY_COMMAND<> 255 ' Keep looking until a valid header found
Print at 1,1,"SYSTEM ",Dec SONY_SYSTEM," " ' Display the SYSTEM value
Print at 2,1,"COMMAND ",Dec SONY_COMMAND," " ' Display the COMMAND value
Wend
Her 2 yöntem için gerekli açıklamaları pdf olarak ekledim.
Kumada kod tablosuna bakarak tuş kodlarını görebilirsiniz...