Você está na página 1de 8

#include <RF24.

h>

#include <Servo.h>

//*************** Controle do RF ***********************

#define radioID 1 //Informar "0" para um dispositivo e "1" para o outro dispositivo

struct estruturaDadosRF

boolean ligando = false; //Esta variavel será usada para solicitar os dados do outro aparelho.
Será útil quando o aparelho solicitante esta sendo ligado, para manter os valores do aparelho
que já esta ligado.

boolean botao1 = false;

boolean botao2 = false;

boolean botao3 = false;

boolean botao4 = false;

boolean botao5 = false;

boolean botao6 = false;

boolean botao7 = false;

boolean botao8 = false;

boolean botao9 = false;

int potenciometro1 = 0;

int potenciometro2 = 0;

};

typedef struct estruturaDadosRF tipoDadosRF;

tipoDadosRF dadosRF;

tipoDadosRF dadosRecebidos;

boolean transmitido = true;

boolean alterado = false;


RF24 radio(7,8);

byte enderecos[][6] = {"1node","2node"};

//*************** Controle do Projeto LOCAL ************

boolean botao1Ant = HIGH;

boolean botao1 = HIGH;

boolean botao2Ant = HIGH;

boolean botao2 = HIGH;

boolean botao3Ant = HIGH;

boolean botao3 = HIGH;

boolean botao4Ant = HIGH;

boolean botao4 = HIGH;

boolean botao5Ant = HIGH;

boolean botao5 = HIGH;

boolean botao6Ant = HIGH;

boolean botao6 = HIGH;

boolean botao7Ant = HIGH;

boolean botao7 = HIGH;

boolean botao8Ant = HIGH;

boolean botao8 = HIGH;

boolean botao9Ant = HIGH;

boolean botao9 = HIGH;

int pot1Ant = 0;

int pot1 = 0;

int pot2Ant = 0;

int pot2 = 0;1


int angulo1 = 0;

int angulo2 = 0;

Servo servo1;

void setup() {

//*************** Controle do RF ***********************

radio.begin();

#if radioID == 0

radio.openWritingPipe(enderecos[0]);

radio.openReadingPipe(1, enderecos[1]);

#else

radio.openWritingPipe(enderecos[1]);

radio.openReadingPipe(1, enderecos[0]);

#endif

//Solicita os dados do outro aparelho, se ele estiver ligado. Tenta a comunicação por 2
segundos.

dadosRF.ligando = true;

radio.stopListening();

long tempoInicio = millis();

while ( !radio.write( &dadosRF, sizeof(tipoDadosRF) ) ) {

if ((millis() - tempoInicio) > 2000) {

break;

dadosRF.ligando = false;

radio.startListening();
//*************** Controle do Projeto LOCAL ************

#if radioID == 1

pinMode(A4, INPUT);

pinMode(2, INPUT_PULLUP);

pinMode(3, INPUT_PULLUP);

pinMode(4, INPUT_PULLUP);

pinMode(6, INPUT_PULLUP);

pinMode(9, INPUT_PULLUP);

pinMode(10, INPUT_PULLUP);

#endif

#if radioID == 0

servo1.attach(5);

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(6, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

#endif

void loop() {

//*************** Controle do RF ***********************

// se houve alteração dos dados, envia para o outro radio

if (alterado || !transmitido) {

radio.stopListening();

transmitido = radio.write( &dadosRF, sizeof(tipoDadosRF) );

radio.startListening();

alterado = false;

}
//verifica se esta recebendo mensagem

if (radio.available()) {

radio.read( &dadosRecebidos, sizeof(tipoDadosRF) );

//verifica se houve solicitação de envio dos dados

if (dadosRecebidos.ligando) {

alterado = true;

} else {

dadosRF = dadosRecebidos;

//*************** Controle do Projeto LOCAL ************

#if radioID == 1

pot1 = analogRead(A4);

if (pot1 != pot1Ant) {

dadosRF.potenciometro1 = pot1;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

pot1Ant = pot1;

botao1 = digitalRead(2);

if (botao1 && (botao1 != botao1Ant)) {

dadosRF.botao1 = !dadosRF.botao1;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao1Ant = botao1;
botao2 = digitalRead(3);

if (botao2 && (botao2 != botao2Ant)) {

dadosRF.botao2 = !dadosRF.botao2;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao2Ant = botao2;

botao3 = digitalRead(4);

if (botao3 && (botao3 != botao3Ant)) {

dadosRF.botao3 = !dadosRF.botao3;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao3Ant = botao3;

botao4 = digitalRead(6);

if (botao4 && (botao4 != botao4Ant)) {

dadosRF.botao4 = !dadosRF.botao4;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao4Ant = botao4;

botao5 = digitalRead(7);

if (botao5 && (botao5 != botao5Ant)) {

dadosRF.botao5 = !dadosRF.botao5;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao5Ant = botao5;

botao6 = digitalRead(8);
if (botao6 && (botao6 != botao6Ant)) {

dadosRF.botao6 = !dadosRF.botao6;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao6Ant = botao6;

botao7 = digitalRead(9);

if (botao7 && (botao7 != botao7Ant)) {

dadosRF.botao7 = !dadosRF.botao7;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao7Ant = botao7;

botao8 = digitalRead(10);

if (botao8 && (botao8 != botao8Ant)) {

dadosRF.botao8 = !dadosRF.botao8;

alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração

botao8Ant = botao8;

#endif

#if radioID == 0

angulo1 = map(dadosRF.potenciometro1, 0, 1023, 0, 180);

servo1.write(angulo1);

digitalWrite(2, dadosRF.botao1);

digitalWrite(3, dadosRF.botao2);

digitalWrite(4, dadosRF.botao3);

digitalWrite(6, dadosRF.botao4);

digitalWrite(7, dadosRF.botao5);

digitalWrite(8, dadosRF.botao6);

digitalWrite(9, dadosRF.botao7);

digitalWrite(10, dadosRF.botao8);
#endif

delay(10);

Você também pode gostar