Go Down

Topic: Como converter p/ arduino (decodificar o HT6P20B) (Read 4252 times) previous topic - next topic

antenado-dmz

May 03, 2010, 03:13 am Last Edit: May 03, 2010, 03:15 am by antenado-dmz Reason: 1
Boa Noite, estou tentando implementar um controle remoto, de alarme de casa, no arduino, ja achei o codigo que decodifica o HT6P20B, que é o "SCHIP" do controle remoto, e no arduino estou usando o um receptor semelhante a este da foto,, mas na frequencia de 433Mhz ,quando aperto o botão do controle o arduino, com um codigo simples de leiruta de serial, eu ja estou lendo as informações, mas não estou decodificando ele ai é que entra o codigo abaixo, mas não entendi como adaptalo para o arduino.
Segue o codigo para ler o receptor de RF:

/*
* Simple Receiver Code
* (TX out of Arduino is Digital Pin 1)
* (RX into Arduino is Digital Pin 0)
*/
int incomingByte = 0;
void setup(){
//2400 baud for the 434 model
Serial.begin(2400);
}
void loop(){
// read in values, debug to computer
if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.println(incomingByte, BYTE); //linha original
//Serial.println(incomingByte, DEC); // Modificada por mim, para poder ver o que o arduino esta lendo

}
incomingByte = 0;
}


Segue o codigo para decodificar o HT6P20B:

"ai esta amigo uma rotina bem simples para decodificar o HT6P20B da holtek. qualquer duvida é so escrever . A função retorna verdadeiros se os dados forem recebido corretamente. no primeiro momento ele aguarda o "pilot period". dados são gravado na variavel de DATA.

Obs. Resistor do oscilador 2M2, ou seja frequencia de 2khz "

// INICIO
#define RFIn RB0 //entrada do sinal de RF
#define NBIT 28 // numero de bits
INT32 DATA=0;

int1 decoder(void)
{
byte x=0;
int16 time_aux=0;
DATA=0;
while(!RFIn)
{
time_aux++;
delay_us(10);
}

if((time_aux>1149) || (time_aux<=1151))
{

for(x=0;x<NBIT;x++)
{
while(RFin);
delay_us(250);

if(RFIn)
{
return FALSE;
}

delay_us(500);
if(!RFIn)
{
data|=0x8000000;
data>>=1;
}else data>>=1;
delay_us(500);
if(!RFin)
{
return FALSE;
}


}
return TRUE;
}
else return FALSE;

}
// FIM

achei este codigo neste forum:
w*w.asm51.eng.br/phpBB/viewtopic.php?t=2386&postdays=0&postorder=asc&highlight=ht6p20b&start=15




Desde ja muito obrigado pela ajuda.

Go Up