Self learning IR vysielač

C

cebrax

Guest
Hey all,
Chcem si urobiť vlastné učenie infračervený vysielač, ktorý sa učí každý infračervený kód.
Ja viem, znie to ako chcem, aby krok príliš veľa rebríky ..Ale je možné, že jo?

I am using Mikroelektronika mikroC PRE kompilátor pre PIC.

Tu je môj kód tak ďaleko, ale som úplne stratený.

Any help?

Kód:trochu infračervené, buffer, zmena, j;

unsigned char opatrenia = 0, ref1 = 0, timepassed;

volatile unsigned char i = 0;

void prerušenia ()

(

if (INTCON.T0IF)

(

opatrenia ;

TMR0 = 0;

INTCON.T0IF = 0;

)

)

void main () (

unsigned char measuretxt [7];

Ansel = 0; / / Konfigurácia pinov ako digitálny I / O

ANSELH = 0;

Portbou = 0;

PORTC = 0;

PORTD = 0;

TRISB = 0;

Smietke = 0;

TRISD = 0x01;

OPTION_REG = 0x80;

TMR0 = 0;

INTCON.T0IE = 1;

INTCON.GIE = 1;

j = 0;

buffer = 0;

while (1)

(

Infračervené = ~ PORTD.F0;

if (buffer == infračervený) change = 0;

iné

(

Zmena = 1;

buffer = infračervený;

)

/ *

|-----| |-----| |-----|

| | | | | |

____| |____| |____| |____* /

if (zmeniť)

(

if (j) (ref1 = opatrenia, j = 1;)

else (timepassed = meranie-ref1;

ref1 = opatrenia;

)

EEPROM_Write (0x00 i, timepassed);

i ;

)

)

)

 
Pre prezeranie týchto tém

Vlastné učenie IR vysielač diaľkového ovládania

http://www.freepatentsonline.com/5691710.html

Sériový port riadené infračervený vysielač na PIC

http://jap.hu/electronic/irtx_pic.html

 
nazdar

Tu to je založené na PIC16F84A

pozdravy
Vôňa
Ospravedlňujeme sa, ale musíte prihlásiť do zobrazenie túto prílohu

 
Zdravím všetkých,
A čo vlastné učenie RF vysielač pre autoalarm?

 
Vôňa napísal:

nazdarTu to je založené na PIC16F84Apozdravy

Vôňa
 
Funguje to teraz budem po záverečnom kód tu potom, čo som znovu zariadiť všetko ..Tu je prototyp kód:

Kód:trochu infračervené, buffer, j, zmena, writetoeeprom, devam;

unsigned char timepassed = 0, eeprombuffer [80];

volatile unsigned char i = 0, ii = 0, k;

volatile unsigned int timer = 0, offtimer = 0;

void prerušenia ()

(

if (INTCON.T0IF)

(

časovača ;

if (! zmene & & i> 5)

(Offtimer ;

if (offtimer> 1000) (PORTC.F0 = ~ PORTC.F0; writetoeeprom = 1; offtimer = 0;)

)

TMR0 = 200;

INTCON.T0IF = 0;

)

)

void main () (

/ / Unsigned char measuretxt [7];

Ansel = 0;

ANSELH = 0;

PORTC = 0;

PORTD = 0;

Smietke = 0;

TRISD = 0x03;OPTION_REG = 0x88;

TMR0 = 200;

INTCON.T0IE = 1;

INTCON.GIE = 1;

j = 0;

/ / LCD_Init ();

buffer = ~ PORTD.F0;

writetoeeprom = 0;

devam = 1;

while (devam)

(

Infračervené = ~ PORTD.F0;

if (buffer! = infračervený)

(

if (j) (timer = 0; j = 1;)

iné

(

timepassed = časovača;

timer = 0;

eeprombuffer = timepassed; / / EEPROM_Write (0x00 i, timepassed);

i ;

)

buffer = infračervený;

Zmena = 1;

)

iné

(

Zmena = 0;

if (writetoeeprom)

(

PORTC.F1 = ~ PORTC.F1;

writetoeeprom = 0;

for (ii = 0; ii <i, ii )

(

EEPROM_Write (0x00 II, eeprombuffer [ii]);

)

devam = 0;

)

)

/ *

|-----| |-----| |-----|

| | | | | |

____| |____| |____| |____* /

)

while (1);

)

 
Sahu Napísal:Vôňa napísal:

nazdarTu to je založené na PIC16F84Apozdravy

Vôňa
 
Hello again!

Dokončil som prijímať a ukladať časť.Ale ja nemôžem prehrať.Any help?

Kód:trochu infračervené, buffer, j, zmena, writetoeeprom, devam, outputmode;

unsigned char timepassed = 0, eeprombuffer [80];

volatile unsigned char i = 0, ii = 0;

volatile unsigned int timer = 0, offtimer = 0;void prijímať (void);

void vysielania (void);void prerušenia ()

(

if (INTCON.T0IF)

(

časovača ;

TMR0 = 200;

if (PORTD.F2)

(

TMR0 = 0xff - eeprombuffer [ii ];

if (ii> = i) (INTCON.T0IE = 0; outputmode = 0; PORTC.F6 = ~ PORTC.F6;)

if (outputmode)

(

PORTC.F5 = ~ PORTC.F5;

CCPR1L = 0x08;

CCP1CON = 0x0C;

)

iné

(

CCPR1L = 0;

CCP1CON = 0;

)

outputmode = ~ outputmode;

)

else if (! zmene & & i> 5 & & devam)

(Offtimer ;

if (offtimer> 1000) (writetoeeprom = 1; INTCON.T0IE = 0;)

))

INTCON.T0IF = 0;

)

void main () (

/ / Unsigned char measuretxt [7];

Ansel = 0;

ANSELH = 0;

PORTA = 0;

PORTC = 0;

PORTD = 0;

Smietke = 0;

TRISD = 0b00000111;OPTION_REG = 0x88;

TMR0 = 200;

INTCON.T0IE = 1;

INTCON.GIE = 1;

/ *

* PWM registre konfigurácia

* Fosco = 20000000 Hz

* Fpwm = 37878,79 Hz (Requested: 38000 Hz)

* Duty Cycle = 25%

* Rozlíšenie je 9 bitov

* Prescaler je 4

* Uistite sa, že vaša pin PWM (RC2) je nastavený ako digitálny výstup

* Zobraziť viac informácií o http://www.micro-examples.com/

* Tento zdrojový kód je poskytovaný ', ako je',

* Použitie na vlastné riziko

* /

PR2 = 0b00100000;

T2CON = 0b00000101;

CCPR1L = 0; / / 0x08, / / 0b00001000;

CCP1CON = 0; / / 0x0C; / / 0b00001100;j = 0;

/ / LCD_Init ();

buffer = ~ PORTD.F0;

writetoeeprom = 0;

devam = 1;

outputmode = 1;

while (1)

(

if (PORTD.F1) príjem ();

if (PORTD.F2) odovzdávajú ();

)

)

void vysielania (void)

(

if (j)

(

i = EEPROM_Read (0x80);

for (ii = 0; ii <i, ii )

(

eeprombuffer [ii] = EEPROM_Read (0x00 ii);

)

j = 1;

ii = 0;

PORTC.F7 = ~ PORTC.F7;

INTCON.T0IE = 1;

TMR0 = 0;

)

)

void prijímať (void)

(

while (devam)

(

Infračervené = ~ PORTD.F0;

if (buffer! = infračervený)

(

if (j) (timer = 0; j = 1;)

iné

(

timepassed = časovača;

timer = 0;

eeprombuffer = timepassed; / / EEPROM_Write (0x00 i, timepassed);

i ;

)

buffer = infračervený;

Zmena = 1;

)

iné

(

Zmena = 0;

if (writetoeeprom)

(

PORTC.F4 = ~ PORTC.F4;

writetoeeprom = 0;

for (ii = 0; ii <i, ii )

(

EEPROM_Write (0x00 II, eeprombuffer [ii]);

)

EEPROM_Write (0x80, i);

devam = 0;

j = 0;

)

)

)

)

 
cebrax Napísal:

Hello again!Dokončil som prijímať a ukladať časť.
Ale ja nemôžem prehrať.
Any help?

 
Už sa stalo, že si myslím ..Myslíte si, že je to problém?

Kód:if (PORTD.F1) príjem ();

if (PORTD.F2) odovzdávajú ();

 
cebrax Napísal:

Už sa stalo, že si myslím ..
Myslíte si, že je to problém?Kód:if (PORTD.F1) príjem ();

if (PORTD.F2) odovzdávajú ();

 
Som absolvoval vzdelávacie časť, môže úspešne uložiť meškanie (dobre, s niektorými 10-20 Segmenty chyby).Teraz prehrávanie je problém ..Nemám osciloskop, preto nemôžem vidieť môj výstup krivky.Môže niekto tam vonku skompilovať a pozrite sa na výstup?
mikroC PRO pre PIC kompilátor

 
cebrax Napísal:

Som absolvoval vzdelávacie časť, môže úspešne uložiť meškanie (dobre, s niektorými 10-20 Segmenty chyby).
Teraz prehrávanie je problém ..
Nemám osciloskop, preto nemôžem vidieť môj výstup krivky.
Môže niekto tam vonku skompilovať a pozrite sa na výstup?

mikroC PRO pre PIC kompilátor
 
Ahoj všetci!
Po dlhé oneskorenia, napísal som nový program.Tahle nie je pracovný real-time, to myslím nie je multi-tasking a tak ...Ale to funguje!
Mám testované na mojej TV (Vestel) a VCR (YUMATU) a ich práca!
Používam TFMS 5360, ktorý je prijímač na 36kHz a pošlem 36 kHz modulované signály ..Možno to je dôvod, prečo nemôžem naklonovať moje Airconditioner diaľkovom ...

Tu to je!Akékoľvek návrhy budú naozaj cool

Kód:trochu infračervené, buffer, zmena, pôvodné, vzorka, slučka, výstup;

volatile unsigned int timer = 0;

volatile unsigned char i = 0, j = 0, harmonogram [70];void prijímať (void);

void prerušenia ()

(

if (INTCON.T0IF)

(

if (časovač <65534) timer ;

TMR0 = 50;

/ / PORTC.F1 = ~ PORTC.F1; / / zmení na 17,8 Segmenty = 1 časovač

INTCON.T0IF = 0;

)

)

void main ()

(

Ansel = 0;

ANSELH = 0;

PORTA = 0;

PORTC = 0;

PORTD = 0;

Smietke = 0;

TRISD = 0b00000011;OPTION_REG = 0x88;

TMR0 = 50;PR2 = 0b00100000;

T2CON = 0b00000101;

CCPR1L = 0x00, / / 0x0F;

CCP1CON = 0b00001100;INTCON.T0IE = 1;

INTCON.GIE = 1;

Počiatočné = 1;

vzorky = 1;

buffer = ~ PORTD.F0;

delay_ms (5000);

while (1)

(

Infračervené = ~ PORTD.F0;

if (buffer! = infračervený) (change = 1; buffer = infračervený; PORTC.F1 = 1;) else change = 0;

if (zmena & & vzorky)

(

if (pôvodné)

(

timer = 0;

Počiatočné = 0;

)

iné

(

harmonogram [i ] = časovač;

timer = 0;

)

)

if (! počiatočné & & merač> = 2000 & & i> 2)

(

for (j = 0; j <= i, j )

(

EEPROM_Write (0x00 j, harmonogram [j]);

)

EEPROM_Write (0x80, i);

PORTC.F0 = 1;

while (1)

(

while (PORTD.F1);

j = 0;

i = EEPROM_Read (0x80);

for (j = 0; j <= i, j )

(

harmonogram [j] = EEPROM_Read (0x00 j);

)

loop = 1;

j = 0;

timer = 0;

CCPR1L = 0x0F;

for (j = 0; j <= i, j )

(

while (časovač <harmonogram [j]);

timer = 0;

output = ~ výstup; / / CCPR1L = 0x0F; CCPR1L = 0x00;

if (výstup) CCPR1L = 0x0F;

else CCPR1L = 0x00;

)

CCPR1L = 0x00;

PORTC.F7 = ~ PORTC.F7;

delay_ms (255);

)

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top