Boa Tarde!
Estou com muita dificuldade em acionar um Led através dos módulos NRF24, já pesquisei e estudei diversos códigos e sites.
Preciso para fazer o meu TCC da faculdade, estamos construindo um medidor inteligente, onde atraves de um APP o usurário poderá comandar algumas tomadas da casa.
a comunicação do servidor com a tomada será por esses módudos, o meu servidor será um UNO e a tomada um Pro Mini.
Até o momento consegui efetuar a comunicação entre os dois utilizando a biblioteca do RF24 GettingStartted, porém o comando não estou conseguindo.
eu quero mandar um comando via Serial para ligar e um outro comando tbm via serial para desligar. consegui com o código abaixo fazer ligar o led, mas não consigo fazer ele desligar.
Alguém pode me ajudar???
Código do transmissor:
#include <SPI.h>
#include <nRF24L01p.h>
nRF24L01p transmitter(10,9);//CSN,CE
// Armazena caractere digitado na serial
char valor[1];
// Armazena os dados enviados
int dados[1];
void setup(){
delay(150);
Serial.begin(115200);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
transmitter.channel(90);
transmitter.TXaddress("Artur");
transmitter.RXaddress("Paulo");
transmitter.init();
}
void loop(){
if(Serial.available()>0){
valor[0]=Serial.read();
char character=valor[0];
if(character=='L')
{transmitter.txPL("L");
transmitter.send(SLOW);
Serial.println("Enviado : Liga led");}
if(character=='D')
{transmitter.txPL("D");
transmitter.send(SLOW);
Serial.println("Enviado : Desliga led");}
}}
Código do Receptor
#include <SPI.h>
#include <nRF24L01p.h>
nRF24L01p receiver(10,9);//CSN,CE
int rele = 8;
char l;
char d;
String comando;
String valor[1];
String dados;
void setup(){
delay(150);
Serial.begin(115200);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
receiver.channel(50);
receiver.RXaddress("Artur");
receiver.TXaddress("Paulo");
receiver.init();
pinMode(rele, OUTPUT);
}
void loop(){
if (receiver.available()){
receiver.read();
receiver.rxPL(comando);
receiver.send(SLOW);
if (comando=="l"){
delay(100);
Serial.println(" -> Acende led");
digitalWrite(rele, HIGH);}
if (comando=="d"){
delay(100);
Serial.println(" -> Apaga led");
digitalWrite(rele, LOW);}
}}
Estou desesperado atras de uma solução.
Tags:
o ihmugo tem razão, coloque um || no if para deixar:( if 'X ' II 'x') executa tal coisa, ( Aonde X seria a letra a ser usada) desta forma se digitar maiúscula ou minúscula vai ter o mesmo efeito.
Abs.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por