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.

Exibições: 1193

Responder esta

Respostas a este tópico

 Procure o Grupo aqui no LDG.

http://labdegaragem.com/group/nrf24l01

Abs.

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.

um começo importante é vc ter em mente que maiúsculas são diferentes de minúsculas (CASE SENSITIVE).

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço