Criado em outubro de 2016, Oficina de Ideias é uma empresa registrada, que busca construir conhecimentos nas áreas da eletrônica, programação e mecânica clássica, unindo a prática com a teoria.
EMISSOR DE SERIAL E RECEPTOR RF
//***** TRANSMISSOR DE SERIAL VIA RF E RECEPTOR RF INTEGRADOS ***************
/* Este programa foi escrito para controlar por meio de um mesmo arduino,
* um emissor RF e um transmissor RF. Mas o objetivo deste programa é
* estabelecer comunicação entre dois arduinos, que por sua vez podem
* transmitir de um para o outro as informações que recebem do computador
* por meio da comunicação serial. Para isso, basta fazer a montagem do
* circuito exatamente igual nos dois arduinos. Um modelo da
* montagem deste circuito pode ser encontrado em:
* www.oficinadeideiasrg.blogspot.com.br
* a biblioteca rc-switch está em:
* http://www.mediafire.com/file/fl66qblf717n0n9/rc_switch-2.6.2.zip
*/
#include <RCSwitch.h> // inclui a biblioteca que opera o emissor e o receptor
RCSwitch Transmissor = RCSwitch(); // instancia um objeto para o transmissor
RCSwitch Receptor = RCSwitch(); // instancia um objeto para o receptor
int dadoEnv = 4321; // dado que será enviado pelo transmossor
int dadoRec = 3; // dado que será recebido pelo receptor
int DadoRecebido; // variável de verificação
int espera = 50; // variável para ajustar tempo de delay
int enviado; // variável de verificação
char EntradaSerial[0]; // array que receberá oque entrar como istring na porta serial
int NcaracEnv = 5; // número de caracteres que a string gerará ao ser convertida em inteiro
int Numero; // recebe o valor da string convertido em inteiro. pode conter de 1 até 32766
boolean EstadoBotao; // variável de controle do estado do botão ( boolean: só pode assumir 0 ou 1)
boolean EstadoLed; // variável de controle do estado do led ( boolean: só pode assumir 0 ou 1)
void setup() {
Serial.begin(9600); // estabelece uma comunicação serial entre arduino e pc
Transmissor.enableTransmit(3); // define pino 3 como pino de dados do transmissor
Receptor.enableReceive(0); // define pino 2 (vai entender...) como pino de dados do receptor
pinMode(8, INPUT); // define pino 8 como entrada do sinal do interruptor
pinMode(13, OUTPUT); // define pino 13 como controle do led
}
void loop() {
if (Serial.available()) {
for (int i = 0; i < NcaracEnv; i++) {
EntradaSerial[i] = Serial.read(); //Armazena na string (array de char)
}
Numero = atoi(EntradaSerial);
Transmissor.send(Numero, 24); // envia o valor lido na porta serial. 24 é a codificação da biblioteca para números inteiros
}
EstadoBotao = digitalRead(8); // faz a leitura do sinal que está chegando no pino 8 e carrega este valor em "EstadoBotao"
if ( EstadoBotao == 1) { // se EstadoBotao for igual a 1
Transmissor.send(dadoEnv, 24); // envia o valor da variável "DadoEnviado. 24 é a codificação da biblioteca para números inteiros
delay(espera); // para o programa pelo tempo em milissegundos contido na variável "espera"
enviado = dadoEnv; // carrega o valor de "dadoEnv" em "enviado"
}
if ( EstadoBotao == 0) { // se EstadoBotao for igual a zero
//Transmissor.send(0,24); // 24 codificação da biblioteca para inteiros;
delay(espera); // para o programa pelo tempo em milissegundos contido na variável "espera"
enviado = 0; // carrega 0 em "enviado"
}
if (Receptor.available()) { // se o receptor estiver recebendo alguma informação
DadoRecebido = Receptor.getReceivedValue(); // o dado recebido pelo receptor é carregado em "Dado Recebido
digitalWrite(13, HIGH); // liga o led que está conectado ao pino 13
delay(500); // para o programa por meio segundo
digitalWrite(13, LOW); // desliga o led
//Serial.print("EstadoBotao: "); // imprime no monitor serial o texto "EstadoBotao: "
//Serial.print(EstadoBotao); // imprime no monitor serial o valor contido em "EstadoBotao"
Serial.print(" Transmitido: "); // imprime no monitor serial o texto "Transmissor: "
Serial.print(enviado); // imprime no monitor serial o valor contido em "enviado"
Serial.print(" Recebido: "); // imprime no monitor serial o texto "Receptor: "
Serial.println(DadoRecebido); // imprime no monitor serial o valor contido em "DadoRecebido"
DadoRecebido = 0; // carrega 0 em "DadoRecebido
}
Receptor.resetAvailable(); // reseta a variável "Receptor"
}
Assinar:
Postagens (Atom)
Nenhum comentário:
Postar um comentário