Arduino relay + bluetooth + push botao problema. resolvido (solved)

Boa tarde pessoal

mais uma vez pedindo a ajuda de vcs

vamos la

pessoal estou com um relay para acender e apagar a lampada por um botao

ate ai tudo tranquilo

ai vai o codigo

int rele = 4; //define a porta a ser utilizada para o acionamento do rele

int botao = 2; //Porta utilizada para o botão de acionamento
int leiturabotao; //Armazena informações sobre a leitura do botão
int estadorele = 0; //Armazena o estado do relé (ligado/desligado)

void setup()
{
Serial.begin(9600);
pinMode(rele, OUTPUT); //Define o pino como saida (sinal para o rele)
pinMode(botao, INPUT); //Define o pino como entrada (Pino do botao)
}

void loop()
{


Serial.print("teste");
Serial.println(estadorele);
delay(100);

leiturabotao = digitalRead(botao);
if (leiturabotao != 1)
{
while(digitalRead(botao) != 1)
{
delay(300);
}
estadorele = !estadorele;
digitalWrite(rele, estadorele);
}

}

ai para ligar e desligar via bluetooth

estou usando esse codigo

void setup()

{
Serial.begin(9600);
//Abaixo, as portas quer serão ativadas pelo celular, via Bluetooth
pinMode(4,OUTPUT);

}

void loop()
{
if(Serial.available()>=2)
{
int key=Serial.read();
int val=Serial.read();
digitalWrite(key,val);
}
}

 O que eu querro e ligar e desligar a lampada tanto pelo celular ( bluetooth ) e pelo botao 

desde ja agradeço a todos pela ajuda

Exibições: 1027

Responder esta

Respostas a este tópico

olá Jeferson, nunca utilizei um arduino bluetooth mas sei que é uma comunicação serial transparente...sua dúvida é simples mas muito interessante para projetos inclusive estou usando em um protótipo meu... vai ai a dica:

int x=0;

void setup()

{

 pinMode(2,INPUT);  //Define pino 2 como entrada...botao

 pinMode(4,OUTPUT);  //Define pino 4 como saida...relé

 digitalWrite(2,1);  //Ativa resistor de pull-up

 Serial.begin(9600);  //Iniciando a serial com velocidade de 9600 baud

 Serial.println("Programa iniciado!");

}

void loop()

{

  digitalWrite(4,x);

  if(digitalRead(2)==0) //Se botao for pressionado...

     {

        x!=x; //Invertendo estado do relé

        delay(500);

     }

  if(Serial.available())

    {

       char comando=Serial.read();

       if(comando=='w') //Se comando for igual ao caracter 'w'

         {

            x!=x; //Invertendo estado do relé

            delay(500);

         }

    }

}

 Cara não sei se essa é a melhor forma de fazer isso mas acho que deve funcionar, qualquer duvida é só nos acionar, valeu

Mil perdões, fazia tempo que não usava esse comando agora que eu vi que está invertido, tenta esse programa

int x=0;

void setup()

{

 pinMode(2,INPUT);  //Define pino 2 como entrada...botao

 pinMode(4,OUTPUT);  //Define pino 4 como saida...relé

 digitalWrite(2,1);  //Ativa resistor de pull-up

 Serial.begin(9600);  //Iniciando a serial com velocidade de 9600 baud

 Serial.println("Programa iniciado!");

}

void loop()

{

  digitalWrite(4,x);

  if(digitalRead(2)==0) //Se botao for pressionado...

     {

        x=!x; //Invertendo estado do relé

        delay(500);

     }

  if(Serial.available())

    {

       char comando=Serial.read();

       if(comando=='w') //Se comando for igual ao caracter 'w'

         {

            x=!x; //Invertendo estado do relé

            delay(500);

         }

    }

}

 

ai mano  rhaicmer braulio da costa  vlw mesmo

agora funcionou o codigo ficou assim depois eu melhor


// Programa utilizado para controlar as portas do Arduino via celular
// usando o programa Microcontroller BT (Android)
// O Arduino deve estar desconectado do computador, já que o módulo Bluetooth também usa
// a comunicação serial, o que pode gerar conflito de dados.
int x=0;


void setup()
{
Serial.begin(9600);
//Abaixo, as portas quer serão ativadas pelo celular, via Bluetooth
pinMode(4,OUTPUT);

}

void loop()
{
digitalWrite(4,x);
if(Serial.available()>=2 )
{
int key=Serial.read();
int val=Serial.read();
if (key == 4 & val == 1)
{
// digitalWrite(key,val);
x = HIGH;
//x=!x; //Invertendo estado do relé
}
if (key == 4 & val == 0)
{
// digitalWrite(key,val);
x = LOW;;
//x=!x; //Invertendo estado do relé
}
}
if(digitalRead(2)==1) //Se botao for pressionado...
{
x=!x; //Invertendo estado do relé
delay(500);
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço