Uz pomoc Arduina i UNO plocice uspio sam otkriti sto jedan daljinski upravljac salje i to poslati, i to funkcionira. Sada zelim napisati program u PICBasic-u za neki PIC, s tim da kod za Arduino imam i on radi.
Evo kako on izgleda:
Code: Select all
int IRledPin = 13;
int tipka = 2;
#define NumIRsignals 68
int stanje = 0;
int IRsignal[] = {
900, 422,
72, 40,
68, 40,
68, 42,
66, 46,
60, 50,
60, 50,
60, 50,
58, 50,
60, 50,
58, 52,
56, 54,
56, 52,
58, 164,
54, 166,
54, 54,
56, 54,
56, 54,
54, 164,
56, 56,
54, 54,
56, 54,
56, 54,
54, 56,
54, 54,
56, 166,
54, 54,
56, 164,
56, 164,
54, 166,
54, 166,
54, 166,
54, 164,
56, 0};
void setup(void) {
pinMode(IRledPin, OUTPUT);
pinMode(tipka, INPUT);
digitalWrite(IRledPin, LOW);
}
void loop() {
stanje = digitalRead(tipka);
delay(1000);
if(stanje == 1){
for (int i = 0; i < NumIRsignals; i+=2) {
pulseIR(IRsignal[i]*10);
delayMicroseconds(IRsignal[i+1]*10);
}
}
}
void pulseIR(long microsecs) {
while (microsecs > 0) {
digitalWrite(IRledPin, HIGH);
delayMicroseconds(10);
digitalWrite(IRledPin, LOW);
delayMicroseconds(10);
microsecs -= 26;
}
}
Code: Select all
define OSC 4
symbol IRLED = PORTB.3
SYMBOL TIPKA = PORTB.0
INPUT TIPKA
OUTPUT IRLED
LOW IRLED
paljenje var byte[33]
gasenje var byte[33]
i var byte
i = 0
j var byte
j = 0
stanka var word
stanka = 0
mikrosekunde var word
PALJENJE[0] = 72 : PALJENJE[1] = 68 : PALJENJE[2] = 68 : PALJENJE[3] = 66 : PALJENJE[4] = 60 : PALJENJE[5] = 60 : PALJENJE[6] = 60 : PALJENJE[7] = 58 : PALJENJE[8] = 60 : PALJENJE[9] = 58 : PALJENJE[10] = 56 : PALJENJE[11] = 56 : PALJENJE[12] = 58 : PALJENJE[13] = 54 : PALJENJE[14] = 54 : PALJENJE[15] = 56 : PALJENJE[16] = 56 : PALJENJE[17] = 54 : PALJENJE[18] = 56 : PALJENJE[19] = 54 : PALJENJE[20] = 56 : PALJENJE[21] = 56 : PALJENJE[22] = 54 : PALJENJE[23] = 54 : PALJENJE[24] = 56 : PALJENJE[25] = 54 : PALJENJE[26] = 56 : PALJENJE[27] = 56 : PALJENJE[28] = 54 : PALJENJE[29] = 54 : PALJENJE[30] = 54 : PALJENJE[31] = 54 : PALJENJE[32] = 56
GASENJE[0] = 40 : GASENJE[1] = 40 : GASENJE[2] = 42 : GASENJE[3] = 46 : GASENJE[4] = 50 : GASENJE[5] = 50 : GASENJE[6] = 50 : GASENJE[7] = 50 : GASENJE[8] = 50 : GASENJE[9] = 52 : GASENJE[10] = 54 : GASENJE[11] = 52 : GASENJE[12] = 164 : GASENJE[13] = 166 : GASENJE[14] = 54 : GASENJE[15] = 54 : GASENJE[16] = 54 : GASENJE[17] = 164 : GASENJE[18] = 56 : GASENJE[19] = 54 : GASENJE[20] = 54 : GASENJE[21] = 54 : GASENJE[22] = 56 : GASENJE[23] = 54 : GASENJE[24] = 166 : GASENJE[25] = 54 : GASENJE[26] = 164 : GASENJE[27] = 164 : GASENJE[28] = 166 : GASENJE[29] = 166 : GASENJE[30] = 166 : GASENJE[31] = 164 : GASENJE[32] = 0
pause 1000
cekaj:
if tipka = 0 then
pause 300
goto main
endif
goto cekaj
main:
mikrosekunde = paljenje[i] * 10
while (mikrosekunde > 0 or mikrosekunde <> 0)
high IRLED
pauseus 10
low IRLED
PAUSEUS 10
mikrosekunde = mikrosekunde - 26
wend
stanka = gasenje[i]
for j = 1 to stanka
pauseus 10
next j
i = i + 1
if i = 33 then
i = 0
goto cekaj
else
goto main
endif
end