¿Una guía completa de arranque AVRs (7 / 10 paso)

Paso 7: Control remoto IR

Con mi proyecto de alarma de humo, que tenía un plan para que una característica que podría desactivar temporalmente la alarma por control remoto, para cuando el pastel de cumpleaños sale por ejemplo.

Así que empecé por tutorial de IR de siguiendo las ladayada:
http://www.Ladyada.net/Learn/sensors/ir.html

Fue una forma realmente rápida de llegar a IR y estoy variar agradecidos para él, sin embargo se ha diseñado con un amplio arduino en mente y estaba trabajando con un ATtiny2313 que no han en cualquier lugar cerca de suficiente RAM para hacer el trabajo.

Usando su dibujo con un pequeño control remoto que tenía por ahí me registra el botón de encendido y tiene esto:
int PowerSignal [] [2] = {}
ON, OFF (en 10 de microsegundos)
{1138, 574},
76 {66},
78 {66},
{68, 70},
76 {70},
76 {66},
{68, 74},
{68, 78},
{68, 210},
216 {72},
214 {68},
216 {70},
{78, 206},
214 {70},
216 {70},
216 {70},
{68, 72},
72 {74},
{68, 216},
{68, 76},
78 {66},
214 {70},
{68, 78},
72 {66},
74 {70},
{68, 216},
{74, 70},
214 {68},
216 {72},
68 {72},
214 {74},
216 {66},
214 {70},
5014 {72},
{1134, 292},
5532 {62},
{1142, 294},
{58, 0}};

38 encendido/apagado pares, algunos de ellos demasiado grande para un solo byte, por lo que si iba a hacerlo como esta necesito 152 bytes.
Tenía bastante flash, aunque tomaría una buena cantidad de espacio podía repuesto lo, pero si tuviera que grabar las señales entrantes que estallaría mi presupuesto de RAM sin siquiera considerar las otras cosas que necesito memoria RAM para.

Pude haber comprobé el código como sucedió, pero luego es un poco difícil sincronización.

Lo pensé por un rato y he notado un patrón en mi código de infrarrojos.
Las señales eran menos 1ms entonces o eran mayores.
Utilice código de ladyada, tenía una tolerancia del 20%, que significa cualquiera de los números bajos correspondería con uno al otro.
Esencialmente no hubo diferencias entre un microsegundos 680 y 780, con la tolerancia.

Fue un caso similar para el más grande entonces valores de 1ms, allí son algunas excepciones, pero la mayoría forma la regla.

Yo pensé, qué pasa si yo tratarlos como solo pedacitos, un 0 menos entonces 1 MS y un 1 si fuese mayor.

Embalado en que vino para arriba con esto:
11000000 = 0xC0
00000000 = 0 x 00
0x55 = 01010101
0x55 = 01010101
0 x 00000100 = 04
0 x 00010000 = 10
00010001 = 0x11
01000101 = 0x45
01011101 = 0x5D
1100

Después de ignorar el último nibble (medio byte) era capaz de almacenar la señal de entrada a la vez en sólo 9 bytes, y la señal de comparación solo tomaría 9 así!
Si quería más características no se acaba el flash para almacenar códigos y siendo tan pequeña que podrían fácilmente se han almacenado en la EEPROM si necesitaba.

Una ventaja agregada era comprobar si el código emparejado no era más comparaciones de byte simple entonces 9.

Echa un vistazo en el código adjunto.

En la parte superior de que hay un conjunto define para hacer el código más fácil de seguir y mantener.
Es siguiendo el patrón mencionado más arriba, como una matriz de char y entró en hexadecimal.
Todo lo demás es básicamente en la función listenForIR que se llama continuamente desde el bucle principal.
Tenga en cuenta que se trata de una simple demo de código, en un proyecto final que se desea utilizar una interrupción para despertar cuando el IR se detecta algo.
Tengo una versión del código que hace eso.

Así que, ¿cómo funciona listenForIR?
Permite romper hacia abajo.

Comenzamos con un tiempo bucle que intenta obtener 9 bytes de datos de la ir
Empezamos poniendo el temporizador a un prescaler de 256.
En 1MHz esto nos deja tiempo hasta 65ms sin desbordamiento.

Receptores IR mantenga su pin de datos alto por defecto, que baja cuando se recibe una señal modulada.
Así que esperamos hasta que tengamos una baja, y si tomamos más de largo entonces 56ms espera que rescatar.

Una vez que tenemos una baja que necesitamos tiempo, pero no necesitamos a tiempo todo el tiempo como antes, y podríamos utilizar un mayor grado de precisión, para que cambiar el prescaler a 8.
Si la baja se mantiene durante más tiempo entonces 1ms, entonces saltan, de lo contrario el bucle termina temprano como el pin va alta.

El siguiente bit de código tiene un agradable uso de operaciones bit a bit que nos permite hacer un seguimiento de los cambios rápidamente y a buen precio (barato en términos de cpu y uso de la memoria):

current_byte << = 1;
current_byte | = estado;
while(IR_LOW); en el caso de un bajo más largo entonces el tiempo de espera anterior

Empezamos por cambiar todos los bits a la izquierda.
Que luego o en el valor 1 o 0, que agrega su valor al LSB (Bit menos significativo).
Después espere, caso fue un poco largo que nos hemos saltado fuera en anteriores.

Luego hacemos lo mismo para la parte alta del código.

Una vez tengamos todos los 8 bits (4 pares de baja y alta), lo almacenamos y empezar de nuevo.

Suponiendo que tenemos todos 9 bytes, salir del bucle y simplemente compararla contra nuestro código.
Si todos coinciden, nos cambia el LED.

Artículos Relacionados

Cómo hacer una espada: una guía completa de

Cómo hacer una espada: una guía completa de

Escribí la mayoría de esto mientras trabajé en el proyecto. Esta introducción servirá como reflexión general y análisis del proceso, así como una introducción completa como se esperaba.Bueno, aquí es. ¿Que siempre quisiste crear tu propia espada? Y n
Android aplicaciones para usar con un iPhone: una guía completa para instalar 3 aplicaciones en Android usar reloj junto con un iPhone

Android aplicaciones para usar con un iPhone: una guía completa para instalar 3 aplicaciones en Android usar reloj junto con un iPhone

¿Poseer un reloj Android usar con un iPhone?Aprenda cómo puede ampliar sus capacidades mediante la instalación de 3 aplicaciones de partido abajo!Relojes inteligentes son grandes. Tienen un montón de otras características útiles que no puede ofrecer
Etiqueta de polímero de litio: Una guía completa al trabajo con LiPo

Etiqueta de polímero de litio: Una guía completa al trabajo con LiPo

en este Instructable voy sobre los conceptos básicos de la correcta carga, descarga, manejo, uso, almacenamiento y el cuidado de las baterías de polímero de litio por lo que se pueden utilizar con seguridad y eficacia en sus proyectos futuros.  Ahora
Una guía completa de airsoft: principiante / nivel de entrada.

Una guía completa de airsoft: principiante / nivel de entrada.

Mirando el sitio, he visto un montón de instructables. "Airsoft: sobrevivir a la guerra. Guía de airsoft. Una guía para airsoft". Algunos de ellos son buenos, y algunos de ellos parecen que son lanzados juntos en un par de minutos. Por lo tanto,
$2 Arduino. El ATMEGA328 como independiente. Fácil, barato y muy pequeño. Una guía completa.

$2 Arduino. El ATMEGA328 como independiente. Fácil, barato y muy pequeño. Una guía completa.

En este instructable usted aprenderá cómo usar el Arduino ATMEGA328 microcontrolador chip como un microcontrolador independiente.Cuestan sólo 2 dólares, puede hacer lo mismo que tu Arduino y hacer tus proyectos muy pequeños.Cómo cubriremos el esquema
Cómo almacenar su K'nex eficaz: Una guía completa de

Cómo almacenar su K'nex eficaz: Una guía completa de

¡ Hola chicos!¿Quieres hacer tu K'nex construye más rápido, más eficientey mantener una cuenta de tus piezas? Bien, aquí es una manera! Tardará un par de horas, pero esto ahorrará días en su trabajo de construcción.Esta guía completa y sobre todo, te
Cómo obtener una versión completa de minecraft con Mineshafter.

Cómo obtener una versión completa de minecraft con Mineshafter.

Esta guía le mostrará una alternativa al gasto 20 $ por una membresía premium de minecraft.  Este es un servicio gratuito que permite a los usuarios el juego la demo antes de hacer la compra en el sitio minecraft.com. Esta versión de minecraft es idé
Una guía completa de motores K'nex

Una guía completa de motores K'nex

¡ Hola chicos! Ha pasado mucho tiempo desde que publiqué algo, así que decidí compilar información sobre motores de K'nex y poner para arriba para que todos pudieran obtener algún conocimiento acerca de ellos! Este será mi primer y solamente la entra
Construir un cobertizo simple: una guía completa de

Construir un cobertizo simple: una guía completa de

Aquí es un sólido derramado poco construí en el patio de mi casa.Es esencialmente un cubo de 8 pies, que es el tamaño ideal para guardar un montón de bicicletas, una cortadora de césped, carretilla y todas mis herramientas de jardinería.El diseño es
Una guía completa a la observación de aves

Una guía completa a la observación de aves

te has preguntado ¿cómo ver aves sin molestar a su hábitat natural? Esta guía le mostrará cómo.Paso 1: Paso uno: aprender sobre las aves Vivo en el país de América del norte, así que tengo un libro de aves en N.A. aves viven en diferentes regiones, a
Una guía completa de puentes a bordo en el kit del Intel Edison para Arduino

Una guía completa de puentes a bordo en el kit del Intel Edison para Arduino

Kit Intel® Edison para Arduino permite el Edison de Intel® compatible con Arduino shields diseñados para el R3 del UNO. La Junta de expansión de Arduino incluye varias cabeceras de jumper para configurar el tablero con diferentes ajustes como niveles
Una guía completa de vídeo para el cultivo de tomate "Pometa": principio a fin!

Una guía completa de vídeo para el cultivo de tomate "Pometa": principio a fin!

Este video muestra la historia de todo crecimiento de una planta de tomate heirloom 'Krim negro'. Se le mostrará:Cómo transplantar tomatesCómo construir jaulas de casa caliente (para la siembra temprana)Cómo podar los chuponesCómo crear una barrera d
Una guía completa para Airsoft

Una guía completa para Airsoft

han estado jugando Airsoft hace unos 2 años y soy adicto a este deporte. Y sí, es considerado un deporte! No hay suficiente gente lo reconoce como uno, así que quiero mantenerla, Sabe usted. Me encanta Airsoft porque es competitivo, hay mucha estrate
El estudio del galpon. Una reconstrucción completa.

El estudio del galpon. Una reconstrucción completa.

Hi.No soy constructor pero he re-construido nuestras tres casas durante un período de treinta años y a un nivel razonable - ish ;-)Un par de años que decidí hacer proyecto de mi vida a la parte superior de la lista de prioridades - no estoy recibiend