Escolar Documentos
Profissional Documentos
Cultura Documentos
RF Controle Recepitor
RF Controle Recepitor
h>
#include <Servo.h>
#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.
int potenciometro1 = 0;
int potenciometro2 = 0;
};
tipoDadosRF dadosRF;
tipoDadosRF dadosRecebidos;
int pot1Ant = 0;
int pot1 = 0;
int pot2Ant = 0;
int angulo2 = 0;
Servo servo1;
void setup() {
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();
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() {
if (alterado || !transmitido) {
radio.stopListening();
radio.startListening();
alterado = false;
}
//verifica se esta recebendo mensagem
if (radio.available()) {
if (dadosRecebidos.ligando) {
alterado = true;
} else {
dadosRF = dadosRecebidos;
#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);
dadosRF.botao1 = !dadosRF.botao1;
alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração
botao1Ant = botao1;
botao2 = digitalRead(3);
dadosRF.botao2 = !dadosRF.botao2;
alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração
botao2Ant = botao2;
botao3 = digitalRead(4);
dadosRF.botao3 = !dadosRF.botao3;
alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração
botao3Ant = botao3;
botao4 = digitalRead(6);
dadosRF.botao4 = !dadosRF.botao4;
alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração
botao4Ant = botao4;
botao5 = digitalRead(7);
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);
dadosRF.botao7 = !dadosRF.botao7;
alterado = true; //esta variavel controla o envio dos dados sempre que houver uma
alteração
botao7Ant = botao7;
botao8 = digitalRead(10);
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
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);