Olá pessoal, tontentando fazer um controle acionado via dtmf discando de um celular ou telefone qualquer  para outro celular conectado com o arduino, consegui um cadigo que está funcionando perfeitamente mas eu queria incremeta-lo. Quero poder modificar a senha do telefone que estou discando e tbm quero um retorno como um bip prara comando aceito e 2 para comando errado se alguem poder me ajudar sou grato.

segue o codigo que estou usando.

 

int numero;

#define RELE2 8

#define RELE1 2

#define PASSWORD 1234 // Define a senha

int RELE1_STATE = LOW;

int RELE2_STATE = LOW;

//=======================================================

// ENTRADAS DTMF DIGITAIS  //=======================================================

int pinBit01 = 3;

int pinBit02 = 4;

int pinBit03 = 5;

int pinBit04 = 6;

int pinBitSts= 7;

int bit01 = 0;  

  int bit02 = 0; 

  int bit03 = 0; 

  int bit04 = 0; 

int bitSts= 0; 

boolean proceed = false; //Flag que habilita o funcionamento dos comandos mediante senha digitada corretamente - inicializa falso!

String tmpPass =' '; //Armazenamento da senha digitada no celular!   String password = "1234"; // Defina sua senha aqui - pode ser de quaisquer números de digitos!

void setup() {   

  Serial.begin(9600);    

pinMode(RELE1, OUTPUT);   

pinMode(RELE2, OUTPUT);  

digitalWrite(RELE1, LOW);   

digitalWrite(RELE2, LOW);

  Serial.println("Aguardando comando...");

}

void loop() {   

bitSts= digitalRead(pinBitSts);

bit01 = digitalRead(pinBit01);   

bit02 = digitalRead(pinBit02);  

bit03 = digitalRead(pinBit03);  

bit04 = digitalRead(pinBit04);  

numero   = (bit01 * 1) + (bit02 * 2) + (bit03 * 4) + (bit04 * 8);

if (bitSts == HIGH && numero < 13) { 

  Serial.print("Recebido: ");  

switch (numero){    

    case 1:  

       Serial.println("1");       

  tmpPass += '1'; //Adiciona o número digitado em tmpPass                

/* COMANDO PARA RELE1 */      

   if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!         

{     

      RELE1_STATE = !RELE1_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.          

digitalWrite(RELE1, RELE1_STATE); //Liga-desliga Relé.      

   }              

  break;           

     case 2:        

Serial.println("2");      

   tmpPass += '2'; //Adiciona o número digitado em tmpPass      

  /* COMANDO PARA RELE2 */     

    if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!         

{        

   RELE2_STATE = !RELE2_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.        

   digitalWrite(RELE2, RELE2_STATE); //Liga-desliga Relé.        

}              

  break;             

  case 3:         Serial.println("3");          tmpPass += '3'; //Adiciona o número digitado em tmpPass         break;              

case 4:         Serial.println("4");         tmpPass += '4'; //Adiciona o número digitado em tmpPass          break;            

   case 5:         Serial.println("5");         tmpPass += '5'; //Adiciona o número digitado em tmpPass         break;             

  case 6:         Serial.println("6");          tmpPass += '6'; //Adiciona o número digitado em tmpPass         break;    

           case 7:         Serial.println("7");         tmpPass += '7'; //Adiciona o número digitado em tmpPass          break;      

         case 8:         Serial.println("8");         tmpPass += '8'; //Adiciona o número digitado em tmpPass         break;      

         case 9:         Serial.println("9");          tmpPass += '9'; //Adiciona o número digitado em tmpPass         break;    

           case 10:         Serial.println("0");         tmpPass += '0'; //Adiciona o número digitado em tmpPass          break;    

           case 11: // Caractere '*'    

     Serial.println("*");     

    tmpPass =' '; //Limpa para armazenar a senha novamente!     

    proceed = false; //Desabilita todos os comandos até que a senha seja digitada novamente!          break;

              case 12: // Caractere '#'       

  Serial.println("#");           

      tmpPass = tmpPass.trim();//Retira os espaços em branco - ver caractere '*'!    

        if (tmpPass == password) { // Se a senha digitada for igual a senha armazenada...           Serial.println("Senha correta!");    

       proceed = true; //Habilita todos os comandos via telemóvel         

}else{       

    Serial.println("Senha ERRADA!");         

  proceed = false; //Desabilita todos os comandos via telemóvel      

   }               

  /*         //Caso queira ver a saida da senha é só descomentar        

  Serial.print("tmpPass= ");   

      Serial.println(tmpPass);     

    Serial.print("password= ");   

      Serial.println(password);        

*/              

   break;  

  }

     // Zeram todas as variáveis   

  numero = 0;   bit01 = 0;   

  bit02 = 0;     bit03 = 0;    

bit04 = 0;     bitSts= 0;   

delay (500);

  }

}

 

esse é o esquema de ligação só que ao inves do mega to usando o duamilanove

valeu galera?!!! dsculpa ai os erros sou novato em programação mas me esforçando pra aprender

Exibições: 3103

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço