Sei sulla pagina 1di 3

Cdigo do controle 01

boto 1 - 147062437

boto 2 - 147062421

Cdigo Fonte

/*
>>>>> Criando Rob Com Arduino <<<<<
##### Robs, Projetos e Tutoriais! #####
.:: Site principal: http://www.CriandoRoboComArduino.com/
.:: Site secundrio: http://www.TestCriandoRoboComArduino.com/
========== IMPORTANTE ==========
O cdigo est livre para usar, citar, alterar e compartilhar,
desde que mantenha o site como referncia.
Obrigado.

-----------------------------------------------------------------------------------
---------------
Projeto: Como receber sinal do controle de alarme e porto PPA com o mdulo
Wireless RF 433Mhz

-----------------------------------------------------------------------------------
----------------
*/
/*
ARDUINO DECODIFICADOR HT6P20B COM RESISTOR DE 2M2 NO OSC.
ESTE CDIGO NO USA TIMER, INTERRUPO EXTERNA E NEM PINO DEFINIDO DE ENTRADA.

ELE MEDE O TEMPO DO PILOT PERIOD E COMPARA SE EST DENTRO DA FAIXA DEFINIDA,
SE TIVER ELE PASSA PARA CODE PERIOD E FAZ AS MEDIDES DE TEMPO EM NIVEL ALTO
SE TIVER DENTRO DA FAIXA ACRECENTA BIT 1 OU 0 NA VARIAVEL _DATA CASO NO ZERA AS
VARIVEIS E RE-INICIA
APOS RECEBER TODOS OS BITS ELE PEGA OS 4 BITS DO ANTE CODE E TESTA PARA SABER SE
O CDIGO FOI RECEBIDO
CORRETAMENTE, CASO RECEBIDO CERTO ELE COLOCA A VARIAVEL ANTCODE EM 1.
CRIADO POR: JACQUES DANIEL MORESCO
DATA: 28/02/2012 USANDO ARDUINO 0022.
FONES:54 3324 2251 54 9206 7168
E-MAIL: ibisul@ibisul.com.br
Permitido o uso pblico, mas deve-se manter o nome do autor.
**** Modificado por Criando Robo Com Arduino *****
*/
int
x,startbit,ctr,dataok,t1,larpulso,larpulso1,larpulso2,larpulso3,larpulso4,bt1,bt2,a
ntcode=0;
unsigned long _data=0; // DATA o Cdigo recebido do HT6p20 todos os 28 BITS
onde, 22 do coodigo+2 dos botes+4 do anti-codigo;
unsigned long _dur,_dur1; // Durao do Pulso
byte _pin; // PINO receber o sinal RF digital 2
int liga_desliga = 1; //varivel para saber se o led/alarme est ligado ou
desligado
int resultado = 0; //resultado do mdulo (%) da diviso, se restar ele 1, se
no restar 0

// dados para rele


int porta_rele1 = 5;
void setup(){
_pin=2;
Serial.begin(9600);
pinMode(2, INPUT);// pino 2 DATA do receptor Rx 433mhz
pinMode(13,OUTPUT); //led

// Dados para rele


//Define pinos para o rele como saida
pinMode(porta_rele1, OUTPUT);

}
void loop(){
digitalWrite(3, digitalRead(2)); //Pisca o LED conforme o valor da entrada
digital, testar interferencias.
if (startbit==0)
{// Testa o tempo piloto at o Bit de inicio;
_dur = pulseIn(_pin, LOW);
if(_dur > 8000 && _dur < 12000 && startbit==0)
{
larpulso=_dur/23;
larpulso1=larpulso-50;
larpulso2=larpulso+50;
larpulso3=larpulso+larpulso-50;
larpulso4=larpulso+larpulso+50;
startbit=1;
_dur=0;
_data=0;
dataok=0;
ctr=0;
}
}
// Se o Bit de inicio OK ENTO Inicia a medio do tempo em Nivel ALTO dos
sinais, e testa se o tempo est na faixa.
if (startbit==1 && dataok==0 && ctr < 28)
{
++ctr;
_dur1 = pulseIn(_pin, HIGH);
if(_dur1 > larpulso1 && _dur1 < larpulso2) // Se a largura de pulso entre
1/4000 e 1/3000 segundos
{
_data = (_data << 1) + 1; // anexar um * 1 * para a extremidade mais direita
do buffer
}
else if(_dur1 > larpulso3 && _dur1 < larpulso4) // Se a largura de pulso entre
2/4000 e 2/3000 segundos
{
_data = (_data << 1); // anexar um * 0 * para a extremidade mais direita do
buffer
}
else
{
/* fora finalizao do lao */
startbit=0;
}
}
if (ctr==28){
if (bitRead(_data,0)==1)
{
if (bitRead(_data,1)==0)
{
if (bitRead(_data,2)==1)
{
if (bitRead(_data,3)==0)
{
antcode=1;
}
}
}
}
if (antcode==1)
{// Se foram recebidos todos os 28 Bits, o valor vai para a variavel _data e
pode ser usada como exemplo abaixo.
dataok=1;
Serial.println(_data,DEC);//Alterao de binrio (BIN) para decimal(DEC) para
conseguir fazer a comparao
//Serial.println(_data,BIN); //Caso queira ver o cdigo em binrio e s retirar
o comentrio dessa linha
ctr=0;
startbit=0;
antcode=0;
delay(100);
//Comparao dos cdigos
// Colocar cdigo no boto ligar
if (_data==147062437){
resultado = liga_desliga % 2;//v o resultado do mdulo (resto da diviso)
if (resultado == 0) {//se da diviso no restar nada, ele ligar o led/alarme

digitalWrite(13, LOW);
// Dados para liar rele
digitalWrite(porta_rele1, LOW); //Liga rele 1
}else{//se no, ele desliga
digitalWrite(13, HIGH);
// Dados para desliar rele
digitalWrite(porta_rele1, HIGH); //Desliga rele 1
}
liga_desliga++;
}
}//fim do decodificador
}//fim do if (ctr==28)}
}//fim do loop
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

>>>>> Acesse os sites: <<<<<


.:: Robs, Projetos e Tutoriais
http://www.CriandoRoboComArduino.com/
.:: Testes dos robs, noticias sobre robtica e muito mais
http://www.TestCriandoRoboComArduino.com/
>>>>> Inscreva-se nos canais no Youtube: <<<<<
.:: Vdeos dos robs, projetos e tutoriais
Criando Rob Com Arduino
https://www.youtube.com/CriandoRoboComArduin
.:: Mostrando os testes dos robs e projetos
Test Criando Rob Com Arduino
https://www.youtube.com/TestCriandoRoboComAr
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::*/

Potrebbero piacerti anche