Cientificosaficionados.com

Los foros de los científicos aficionados de la red.
Fecha actual Mié Oct 21, 2020 4:59 am

Todos los horarios son UTC [ DST ]




Nuevo tema Responder al tema  [ 24 mensajes ]  Ir a página Anterior  1, 2, 3  Siguiente
Autor Mensaje
NotaPublicado: Sab Jul 20, 2019 11:40 am 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
Al final no era nada de eso, si no un bug de planteamiento con un resultado imprevisto, ya que si la información de 1's y 0's reside en el tiempo entre impulsos, y tenemos 32 bits, debe haber 33 impulsos para delimitarlos, no 32. En mi caso el último lapso de tiempo se quedaba al aire, sin impulso de finalización, y por tanto el algoritmo receptor que comprueba la integridad de los datos conjugando el byte 1 con el 2, y el 3 con el 4, los daba como erróneos.
El porqué a veces interrumpiendo el haz durante la transmisión o interfiriéndolo con otro mando a distancia, los aceptaba como correctos, lo ignoro.

En todo caso, añadiendo en 0 adicional al array "int secuencia[33]" y aumentado de igual forma a 33 el límite del bucle "for" de generación de señal, la cosa se ha puesto a funcionar sin error alguno.

Imagen


Ahora, lo siguiente será ampliar el programa para que pueda ser controlado via serie desde el PC...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Sab Jul 20, 2019 10:52 pm 
Desconectado
Avatar de Usuario

Registrado: Mar May 26, 2009 9:39 pm
Mensajes: 7069
Ubicación: Palma de Mallorca (España)
Buen trabajo Anilandro; te lo voy a copiar para poner un belén dentro de la carcasa de un televisor; con el mando a distancia se producirán el anochecer, el amanecer, truenos, relámpagos; etc.

Para ir bién el mando debería ser de TV.

_________________
Constitución Española:
Todos los españoles tienen el deber de trabajar y el derecho al trabajo.
Todos los españoles tienen derecho a disfrutar de una vivienda digna y adecuada.
y ...han pasado del gris al amarillo, con la mala suerte que trae este color.


Arriba
 Perfil  
 
NotaPublicado: Sab Jul 20, 2019 11:24 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
Pues si algo de esto te sirve, me alegro, Rovellat. Tengo a punto el programa de control IR desde el PC. Lo he montado a base de funciones para que el código pueda trasplantarse fácilmente... Esta primera parte de código no tiene secretos, declaración de variables, configuración de pines, activar comunicación serie y configurar Timer 2 para que dé los 38 Khz...

Imagen


El "loop()" es aún más sencillo, llama a función "datoSerie()", y si ésta devuelve un dato válido, llama a función "montarSec()" que con dicho dato crea la secuencia NEC de 32 bits, y luego llama a función "sendData()", que emite dicha secuencia a través del LED de infrarrojos...

Imagen


Continuará...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Dom Jul 21, 2019 9:23 am 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
La función "datoSerie()" captura uno o dos bytes enviados por el monitor serie del IDE de Arduino en el PC (o de cualquier otro programa monitor serie), y con estos bytes genera un dato de una o dos cifras que carga en la variable global "dato".

Imagen


La función "montarSec()", a partir de "dato" crea la secuencia de 0's y 1's correspondiente al protocolo NEC, de 4 bytes, 1º 00000000, 2º 11111111, 3º dato y 4º inverso de dato. Al final añade un bit adicional de cierre de la secuencia, con valor 0. Estos valores se guardan en el array global "secuencia[]", que luego utilizará la función de envío de datos IR...

Imagen


Debo decir que muchas "funciones" no las utilizo como tales, devolviendo un solo valor, si no como "procedimientos", ya que actúan sobre variables globales que también utilizan otras funciones del programa. Esto no les gusta a los puristas de la programación porque absorbe más memoria y en programas complejos puede dar lugar a resultados inesperados, pero en cosas sencillas como este programa no hay problema alguno, todo está controlado, el programa resulta más simple y se evitan idas y venidas, aparte de no tener que utilizar los famosos punteros de C que siempre me han dado algo de alergia...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Lun Jul 22, 2019 3:34 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
La función "sendData()", que ha quedado bastante compacta, envía por IR la secuencia NEC, modulando la señal de 38Khz del Timer 2 ...Y no hay más, ya podemos controlar la lamparita de Lidl desde Arduino.

Imagen


Sólo recordar que la señal de 38 Khz sale de forma permanente por el "pin-11", y que la modulación se activa al poner a LOW el "pin-7", guardado en la variable "pinCOM", y se detiene con HIGH...
La primera parte de "sendData()" crea la señal de inicio de 9 mS. seguido por un espacio de 4,5 mS. La segunda parte es un bucle for de 33 pasos (de 0 a 32), que lee el array "secuencia[]" donde antes hemos guardado la secuencia de 32+1 bits a transmitir. En cada paso emite primero una señal de 560 uS, seguida de un espacio variable en tiempo de 560 uS si el bit correspondiente es 0, o de 1690 uS si el bit es 1...

El programa completo lo podéis bajar de mi Drive: https://t.co/zezoyJhHHW

Saludos...

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Mar Jul 23, 2019 11:01 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
Bien, entrando en el monitor serie los valores de las teclas del mando de la lámpara:

Imagen

Ésta va a responder de la misma manera como lo haría con su mando a distancia...

En este caso también aprovecho para rescatar un programita de Visual Basic que hice hace algunos años, que llamé "Arduino Remote Control" (ARC) y que permite configurar 10 pulsadores con los valores que queramos, y que al pulsar envía a través del puerto COM seleccionado, que en este caso deberá ser el del Arduino...

Imagen


...El instalador del programa ARC.exe, contenido en un fichero comprimido .rar, se puede bajar desde: https://drive.google.com/file/d/115cd1G ... u-5THzlPqb

En XP se instalará sin más, y en W7 lo tenéis que ejecutar como Administrador, porque en caso contrario dará errores y no cargará los OCX necesarios. Supongo que en W8 y W10 también funciona, pero no lo he probado...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Jue Jul 25, 2019 9:49 am 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
Un último añadido a este tema. Me he metido en mi viejo VBasic 6.0 y he programado un mando de IR concreto para lámpara de Lidl. Con todas sus teclas operativas igual que el mando físico. El archivo de instalación para W7-8-10 (que se debe ejecutar como Administrador) se puede bajar en formato .rar desde: https://t.co/YVR6JnAlZi ...

Imagen

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Vie Ago 02, 2019 1:13 pm 
Desconectado
Avatar de Usuario

Registrado: Jue Dic 03, 2009 3:46 pm
Mensajes: 235
País: España
Ciudad: Sevilla
Muy interesante Anilandro, algo parecido hice yo hace algún tiempo pero usando un receptor de un optoacoplador de barrera.
https://youtu.be/53glcHVtqjs


Arriba
 Perfil  
 
NotaPublicado: Sab Ago 03, 2019 11:43 am 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4906
Ubicación: Islas Baleares, España
Interesante, Joliva68 ¿Utilizas integrados específicos o son uControladores generales? Si es así ¿Cuales son? ¿Puedes colgar el código?...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Sab Ago 03, 2019 1:03 pm 
Desconectado
Avatar de Usuario

Registrado: Jue Dic 03, 2009 3:46 pm
Mensajes: 235
País: España
Ciudad: Sevilla
Anilandro escribió:
Interesante, Joliva68 ¿Utilizas integrados específicos o son uControladores generales? Si es así ¿Cuales son? ¿Puedes colgar el código?...

Saludos

Hola Anilandro uso microcontroladores el 16f628a.

Aquí te dejo el enlace del proyecto:

http://www.picpc.es/mando_distancia.html

En la web hay un error el último es el emisor es que aparecen dos receptores.

Saludos.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 24 mensajes ]  Ir a página Anterior  1, 2, 3  Siguiente

Todos los horarios son UTC [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com