Sari la conținut
ELFORUM - Forumul electronistilor

PIC12F629 ca decoder telecomanda IR, protocol NEC


kaporalu

Postări Recomandate

Sunt nou-venit in lumea PIC-urilor si nu ma descurc cu timerele si intreruperile lor.

Ma puteti ajuta cu un program pentru a decoda semnalul de la o telecomanda NEC?

 

Ce as vrea eu sa fie: un 12F629, pe INTOSC, calibrat pentru cei 4MHz, sa primeasca semnalul IR de la un receiver

cu logica inversata (iesirea LOW cand primeste IR), sa decodeze semnalul si sa trimita mai departe (I2C sau SPI) adresa si comanda

receptionate, eventual addr.255 si codul 255 pentru "repeat last button".

Mai departe, un alt PIC primind adresa si codul de la telecomanda, decide ce anume trebuie facut (on/off, volume +/-, etc).

 

Telecomenzile NEC sunt foarte raspandite printre chinezarii (vezi MP3 playere FM auto si alte jucarele).

 

Am gasit ceva de vanzare pe net, dar iesirea e seriala:

http://www.sunrom.com/remote-control-in ... serial-out

 

Ar putea fi o tema publica pentru toti cei care ar vrea sa folosesca in proiectele lor telecomanda, eventual si pentru alte protocoale

(SONY sau RC5).

 

Din pacate, m-am "jucat" numai in MikroBasic, codul de asamblare e greoi de inteles. Iar cand vine vorba de temporizari si

intreruperi, s-a terminat cu meseria.

 

Multumesc pentru rabdare.

Link spre comentariu
  • Răspunsuri 10
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • kaporalu

    5

  • Liviu M

    1

  • pegas

    1

  • INCEPATOR21

    1

Top autori în acest subiect

Ar fi elegant de folosit, dimensiuni reduse, ca un modul de interfata, putand fi aplicat in multe domenii.

Eu il vreau pentru o linie audio, dar se poate utiliza si in automatizari casnice.

Folosind acelasi soft, ar fi "gata de pus la treaba" sub un protocol larg utilizat (I2C/SPI),

ca si RTC-urile, ADC, DAC, EEPROM, DDS-urile.

 

Si inca unul gasit pe net, dar tot serial:

 

http://www.sureelectronics.net/goods.php?id=1169

Link spre comentariu
Vizitator calind79

atasez un cod C functional (pt. CCS compiler, foloseste functiile built-in) scris de mine, e si acum "in uz" ca telecomanda pentru un amplificator.in IR_ID1 si IR_ID2 este adresa complementara a telecomenzii. daca vrei sa fct. cu orice telecomanda scoti din cod bucata unde sint testate. codul tastei il ai in key_code, iar valid_key il resetezi tu din main dupa ce ai prelucrat tasta.

Link spre comentariu

Multumesc din suflet, calind79.

 

Nu sunt familiarizat cu C-ul, dar o sa incerc sa-ti "prind" ideea si s-o traduc in fapte.

 

P.S. Salutari pentru toti iesenii (studentie.... ani frumosi...).

Link spre comentariu
Vizitator calind79

tin sa mentionez ca acel cod functioneaza si e testat pe 16F876. am implementat si pe 12F629 (am pus o telecomanda la un CD player) dar e posibil sa trebuiasca foarte mici schimbari.C-ul iti rezolva multe probleme, cu toate ca am programat oleaca si-n asamblare la viata mea (Z80) efortul e incomparabil mai mic odata ce depasesti socul initial. eu am invatat Pascal in liceu si initial C-ul mi s-a parut dracu' in persoana, dar in timp...

Link spre comentariu

buna seara! Ma poate ajuta cineva sa mi faca un program pt 12f675 sau 12f629 sa mi dea pe iesire PWM? As dori sa fac asta din telecomanda ca binecunoscutul IR ON/OFF CU ACEST PIC http://www.ivica-novakovic.from.hr/IrOn ... m#IrOnOff2 . Diferenta este ca vreau sa il folosesc la marirea sau micsorarea volumului unei boxe sau la un bec. nu vreau dimmer doar sa modific din telecomanda pwm. Daca nu cer prea mult as dori sa aibe 2 iesiri pwm sa pot comanda 2 aparate separat. nu stiu sa programez picuri, cu atm8 mi a iesit dar am mai multe picuri si de aceea.va multumesc mult!

Link spre comentariu
  • 4 săptămâni mai târziu...

Pana la urma am reusit sa-l fac in MikroBasic.Deocamdata C-ul e la capitolul "va urma".Atasez fisierele MikroBasic (schimba extensia in *.mbas) si hex-ul (sterge .txt din nume).

Link spre comentariu

am facut si eu o data o rutina de decodare NEC (printre altele), aveam o telecomanda ce emitea coduri de 32 de biti in standard NEC. Programul este in ProtonIDE (Basic):

Device = 16F871		Xtal = 20		All_Digital = TRUE			Dim	IRDATA As Dword		Dim CONTOAR As Byte		Dim TEMP As Word		Dim N As Byte		Symbol IR = PORTB.1		DelayMS 200		Cls		Print At 1,1,"COD NEC = "READIR:	IRDATA = 0MAIN:	If IR = 0 Then 		GoTo IR_DECODE		Else 		GoTo MAIN		EndIfIRDECODE:LOOP1:	If IR = 0 Then GoTo LOOP1 ;asteapta trecerea headeruluiLOOP2:	If IR = 1 Then GoTo LOOP2		For N = 1 To 31		TEMP = PulsIn IR , 1 ;(asteapta un "1" si masoara durata)		If TEMP > 500 Then		   Set IRDATA.31		   IRDATA = IRDATA >> 1		   Else		   Clear IRDATA.31		   IRDATA = IRDATA >> 1		EndIf		Next N		Print At 2,1,Dec3 IRDATA.Byte3," ",Dec3 IRDATA.Byte2		DelayMS 300		GoTo READIR	 	End
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări