Hola buenas estoy haciendo un proyecto que controla un step motor y consta de dos partes.
Una de las partes es controlar el motor con un ordenador esta parte ya la tengo casi terminada solo me quedan unos pequeyos retoques.
La segunda que es con la que ahora estoy empezando es el control del step motor un un mando a distancia.
Tengo un mando a distancia Philips rc5991 del cual solo uso tres botones:
- encender y las teclas del volumen que son para girar hacia la izquierda y hacia la derecha. He buscado por internet y el codigo que he encontrado para el control de las teclas del volumen esta en la siguiente pagina:
http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htmdonde por ejemplo tengo del bit1 al bit14 la siguiente secuencia para el volumen +
110 00000 010000
y para el volumen menos
110 00000 010001
Hasta aqui creo que lo interpreto bien.
Ahora me he mirado la pagina de nocturno66 y he cogido solo la parte del del programa del dimer que creo que me vale, xo yo no quiero memorizar la tecla porque supuestamente siempre voy a usar la misma y se el codigo.
Mi pregunta es de que forma tengo que me morizar la variable volumen + y volumen -, para ello tengo declarado long izqalta y long izqbaja(esto por ejemplo es para el volumen +)
#include <16f877A.h>
#use delay(4000000)
#use fast_io(A)
#bit MANDO = PORTA.0
long izqalta = ???;
long izqbaja = ???;
long decalta = ???;
long decbaja = ???;
long lectura1, lectura2, antirrebotes;
int recibiendo, pasos, par;
void teclapulsada()
{
if(lectura1 == izqalta & lectura2 == izqbaja)
{
movimientodelmotoraizqdas;
}
else if(lectura1 == deralta & lectura2 == derbaja)
{
movimientodelmotoraderecha;
}
#INT_TIMER0
void temp()
{
set_timer0(86);
//circuito antirrebotes:
if(!recibiendo)
if(antirrebotes<2000)
antirrebotes++;
if(MANDO == 0 & !recibiendo) // Aqui estamos detectando una pulsacion de la tecla
{
recibiendo = 1;
pasos = 0;
};
if(recibiendo == 1 & (par%8)== 0)
{
if(pasos < 16)
lectura1 = lectura1*2 + MANDO;
else
lectura2 = lectura2*2 + MANDO;
pasos = pasos + 1;
if(pasos == 32)
{
//si no hay ruido continuamos
if (lectura1 != 0XEFFF & lectura2 != 0xFFFF)&(lectura1 !=0 & lectura2 != 0)
{
teclapulsada();
}
recibiendo = 2;
lectura1 = 0;
lectura2 = 0;
pasos = 0;
antirrebotes = 0;
}
};
if (recibiendo > 1 & (par%8)==0)
{
recibiendo ++;
if(recibiendo >= 4)
recibiendo = 0;
};
par++
}
void main()
{
set_tris_A(0b00011000);
OPTIONREG=OPTIONREG & 0x7F; // activa las pullups internas
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2);
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
set_timer0(86);
while(1);
}
Un saludo a todos