Encender/apagar luz con control remoto

Claro que si meta, ese pic es mas pequeño pero yo publique esto es precisamente por que tu no dabas con pics jejejejeje:D
(Llevo tiempo intentándolo con PIC bajo asm y no me como una rosca, ajajjaja jaj ajajaj ajaj.)
y propusiste arduino como solución, vas a volver a los pics?:unsure: obviamente no voy a utilizar toda la tarjeta, para esto voy a a construir un standalone,http://codigofacilito.com/videos/curso_de_arduino_standalone que es básicamente sacar el solo chip ya programado de la tarjeta arduino, con sus componentes asociados en una pcb hecha a plancha.

Como dato curioso,:confused: este proyecto lo estoy fabricando a petición de mi esposa que estaba cansada de levantarse a media noche (nos quedamos dormidos viendo tv):LOL: y apagar la luz, (acá en BOGOTA hace muchooo frió a esa hora):eek: y pues pensé en hacerlo de esta forma; de hecho lo empece con pic 16f84 pero también me volví un 8:cry: y como tengo arduino uno empece a buscar la info y di con ese proyecto,(y) al cual lo he venido mejorando para que cumpla los deseos de mi MUJERZOTA:aplauso: jejeje!:D
 
Última edición:
Hola:

No he abandonado los PIC, pero me estoy centrando en Arduino porque los PIC en asm me tiene negro, ajjajajajajja.

Hay que hacer su propia PCB si lo quieres como proyecto final, la placa arduino es para prototipos.

Saludo.
 
Debido a un problema que tengo con la pc no puedo subir el video, mas sin embargo realice unas lecturas como indique por el puerto serial y los resultados fueron muy bueno, aunque hay que decir que dependiendo de la distancia los tiempos de los pulsos cambian un poco no se a que puede deberse a la atenuación por la distancia ya que solo ocurre cuando no apunto directamente el control. Anexo el codigo en pbp y el circuito lo subo luego ya que lo hice directo en el protoboard, anexo tambien las lecturas obtenidas en el serial comunicator del microcode.

Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 17/03/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

					
@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC_NOCLKOUT 
@ DEVICE WDT_OFF        
@ DEVICE PWRT_OFF       
@ DEVICE MCLR_OFF       
@ DEVICE BOD_OFF        
@ DEVICE LVP_OFF        
@ DEVICE CPD_OFF        
@ DEVICE PROTECT_OFF 
INCLUDE  "modedefs.bas"
DEFINE OSC 4

CMCON = 0
TRISA = %00000000      
TRISB = %00000010 
PORTA = %00000000
PORTB = %00000000
 

BIT_IR         VAR BYTE(8)
COMANDO	       VAR BYTE
SYMBOL IN_TSOP = PORTB.1
SYMBOL TX      = PORTB.2
CLEAR

INICIO: 

DETECCION_DE_IR:
COMANDO = 0 

PULSIN IN_TSOP,0,BIT_IR(0)  'PRIMER PULSO NEGADO SE GUARDA EN BIT_IR
IF BIT_IR(0) = 0 THEN GOTO DETECCION_DE_IR   'Si no se recibe nada se queda en DETECCION_DE_IR
IF BIT_IR(0) < 240 THEN GOTO DETECCION_DE_IR  'si el pulso no dura 2.4ms se queda en DETECCION_DE_IR


EXTRAE_BITS:
PULSIN IN_TSOP,0,BIT_IR(1) 
IF BIT_IR(1) < 120 THEN  'SI EL BIT 1 DE BIT_IR ES MENOR A 120
COMANDO.bit0 = 0         'EL BIT 0 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bit0 = 1         'EL BIT 0 DE COMANDO ES IGUAL A 1
ENDIF

PULSIN IN_TSOP,0,BIT_IR(2)
IF BIT_IR(2) < 120 THEN  'SI EL BIT 2 DE BIT_IR ES MENOR A 120
COMANDO.bIT1 = 0         'EL BIT 1 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bIT1 = 1         'EL BIT 1 DE COMANDO ES IGUAL A 1
ENDIF

PULSIN IN_TSOP,0,BIT_IR(3)
IF BIT_IR(3) < 120 THEN  'SI EL BIT 3 DE BIT_IR ES MENOR A 120
COMANDO.bit2 = 0         'EL BIT 2 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bit2 = 1         'EL BIT 2 DE COMANDO ES IGUAL A 1
ENDIF

PULSIN IN_TSOP,0,BIT_IR(4)
IF BIT_IR(4) < 120 THEN  'SI EL BIT 4 DE BIT_IR ES MENOR A 120
COMANDO.bit3 = 0         'EL BIT 3 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bit3 = 1         'EL BIT 3 DE COMANDO ES IGUAL A 1
ENDIF

PULSIN IN_TSOP,0,BIT_IR(5)
IF BIT_IR(5) < 120 THEN  'SI EL BIT 5 DE BIT_IR ES MENOR A 120
COMANDO.bit4 = 0         'EL BIT 4 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bit4 = 1         'EL BIT 4 DE COMANDO ES IGUAL A 1
ENDIF

PULSIN IN_TSOP,0,BIT_IR(6)
IF BIT_IR(6) < 120 THEN  'SI EL BIT 6 DE BIT_IR ES MENOR A 120
COMANDO.bit5 = 0         'EL BIT 5 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bit5 = 1         'EL BIT 5 DE COMANDO ES IGUAL A 1
ENDIF

PULSIN IN_TSOP,0,BIT_IR(7)
IF BIT_IR(7) < 120 THEN  'SI EL BIT 7 DE BIT_IR ES MENOR A 120
COMANDO.bit6 = 0         'EL BIT 6 DE COMANDO ES IGUAL A 0
ELSE	                 'SI NO 
COMANDO.bit6 = 1         'EL BIT 6 DE COMANDO ES IGUAL A 1
ENDIF

SEROUT TX,N2400,["COMANDO: "   ,#COMANDO,10]
IF COMANDO < 10 THEN
COMANDO = COMANDO + 1
SEROUT TX,N2400,["BOTON: "   ,#COMANDO,10]
ENDIF

IF COMANDO = 16 THEN
SEROUT TX,N2400,["BOTON: +CANAL",10]
ENDIF
IF COMANDO = 17 THEN
SEROUT TX,N2400,["BOTON: -CANAL",10]
ENDIF
IF COMANDO = 18 THEN
SEROUT TX,N2400,["BOTON: +VOMUMEN",10]
ENDIF
IF COMANDO = 19 THEN
SEROUT TX,N2400,["BOTON: -VOMUMEN",10]
ENDIF
IF COMANDO = 20 THEN
SEROUT TX,N2400,["BOTON: SILENCIO",10]
ENDIF
IF COMANDO = 21 THEN
SEROUT TX,N2400,["BOTON: PODER",10]
ENDIF
IF COMANDO = 59 THEN
SEROUT TX,N2400,["BOTON: PODER",10]
ENDIF 

SEROUT TX,N2400,["PULSO 1 : ",#BIT_IR(1),10]
SEROUT TX,N2400,["PULSO 2 : ",#BIT_IR(2),10]
SEROUT TX,N2400,["PULSO 3 : ",#BIT_IR(3),10]
SEROUT TX,N2400,["PULSO 4 : ",#BIT_IR(4),10]
SEROUT TX,N2400,["PULSO 5 : ",#BIT_IR(5),10]
SEROUT TX,N2400,["PULSO 6 : ",#BIT_IR(6),10]
SEROUT TX,N2400,["PULSO 7 : ",#BIT_IR(7),10]

GOTO DETECCION_DE_IR
Hasta aquí todo bien espero sirva de ayuda para empezar, ya faltaría ponerse con los
demás protocolos RC5, JVA, NEC, etc... Cualquier cosa que correjir me avisan :apreton:
Que tal reyvilla y a todo el foro:
Sobre el protocolo infrarrojo SONY que publicaste tengo algunas dudas sobre las lineas que no estan comentadas como por ejemplo esta linea... ¿porque condicionas COMANDO<10 y luego lo incrementas o sumas 1?,esa es mi duda?
ya desde aqui no le entiendo podran ayudarme?

SEROUT TX,N2400,["COMANDO: " ,#COMANDO,10]
IF COMANDO < 10 THEN
COMANDO = COMANDO + 1
SEROUT TX,N2400,["BOTON: " ,#COMANDO,10]
ENDIF

y la gran preguntota ya teniendo los 7 bits de comando individuales como los unifico?
o basta nada mas con sacar el DEC de comando?esa es mi otra duda.

...y luego aqui porque? o con que fin sacas el valor decimal de los 7 BIT_IR(1) hasta BIT_IR(7)


SEROUT TX,N2400,["PULSO 1 : ",#BIT_IR(1),10]
SEROUT TX,N2400,["PULSO 2 : ",#BIT_IR(2),10]
SEROUT TX,N2400,["PULSO 3 : ",#BIT_IR(3),10]
SEROUT TX,N2400,["PULSO 4 : ",#BIT_IR(4),10]
SEROUT TX,N2400,["PULSO 5 : ",#BIT_IR(5),10]
SEROUT TX,N2400,["PULSO 6 : ",#BIT_IR(6),10]
SEROUT TX,N2400,["PULSO 7 : ",#BIT_IR(7),10]

GOTO DETECCION_DE_IR

Gracias,haber si me pueden contestar porfavor...
 
Bueno volvi a mostrar mi resultado, jejeje despues de un largo tiempo dejo un video demostrativo del dispositivo... ya lo había utilizado y aproveche que tuvo una falla para desmontarlo y hacer un pequeño video.;)
 
Hola:

Ahora con Arduino es muchísimo más fácil de programarlo. Eso si, no usar la placa Arduino UNO, puedes extraer el AVR y hacer tu propia placa.


En cuanto al vídeo de @djsound. Buen trabajo. ;)
 
Claro que si meta,(y) Arduino simplifica las tareas de programación por los codigos abiertos que existen, yo trate de hacer esto con Puertas Logicas, Con un 555 y hasta con un pic y ninguno me fue tan funcional simple y compacto como este final que realice.:D Dejo el vídeo final. ;)Gracias por sus comentarios.:aplauso:
 
Arriba