Então gente, estou tentando criar um controle remoto utilizando esses módulos de baixo custo. Até consegui mandar mensagem, fazer leitura do que chega, mas queria que ao apertar o botão fosse enviado determinada mensagem (para ativar o relé) e ao soltar, outra (para desativar o relé). Consigo fazer isso, mas apenas com um botão e gostaria de saber se teria como fazer em todos quatro.
Segue abaixo o código do Rx e Tx:
Tx:
#include <RFTransmitter.h>
#define NODE_ID 1
#define OUTPUT_PIN 12
RFTransmitter transmitter(OUTPUT_PIN, NODE_ID);
const int frentePin = 2;
int frenteState = 0;
const int trasPin = 3;
int trasState = 0;
const int direitaPin = 4;
int direitaState = 0;
const int esquerdaPin = 5;
int esquerdaState = 0;
void setup()
{
pinMode(frentePin, INPUT_PULLUP);
pinMode(trasPin, INPUT_PULLUP);
pinMode(direitaPin, INPUT_PULLUP);
pinMode(esquerdaPin, INPUT_PULLUP);
}
void loop()
{
frenteState = digitalRead(frentePin);
trasState = digitalRead(trasPin);
direitaState = digitalRead(direitaPin);
esquerdaState = digitalRead(esquerdaPin);
if (frenteState == HIGH && trasState == HIGH && direitaState == HIGH && esquerdaState == HIGH)
{
char *msg = "P";
transmitter.send((byte *)msg, strlen(msg) + 1);
}
if (frenteState == LOW)
{
char *msg = "F";
transmitter.send((byte *)msg, strlen(msg) + 1);
frenteState = digitalRead(frentePin);
}
if (trasState == LOW)
{
char *msg = "T";
transmitter.send((byte *)msg, strlen(msg) + 1);
trasState = digitalRead(trasPin);
}
if (direitaState == LOW)
{
char *msg = "D";
transmitter.send((byte *)msg, strlen(msg) + 1);
direitaState = digitalRead(direitaPin);
}
if (esquerdaState == LOW)
{
char *msg = "E";
transmitter.send((byte *)msg, strlen(msg) + 1);
esquerdaState = digitalRead(esquerdaPin);
}
}
rx:
#include <PinChangeInterruptHandler.h>
#include <RFReceiver.h>
#define M1 2
#define M2 3
#define M3 4
#define M4 5
RFReceiver receiver(12);
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
Serial.begin(9600);
receiver.begin();
}
void loop()
{
char msg[MAX_PACKAGE_SIZE];
byte len = receiver.recvPackage((byte *)msg);
Serial.println("");
Serial.print("");
Serial.println(msg);
while (msg[0] == 'P')
{
digitalWrite(M1, HIGH);
digitalWrite(M2, HIGH);
digitalWrite(M3, HIGH);
digitalWrite(M4, HIGH);
break;
}
while (msg[0] == 'F')
{
digitalWrite(M2, LOW);
digitalWrite(M4, LOW);
break;
}
while (msg[0] == 'T')
{
digitalWrite(M1, LOW);
digitalWrite(M3, LOW);
break;
}
while (msg[0] == 'D')
{
digitalWrite(M2, LOW);
digitalWrite(M3, LOW);
break;
}
while (msg[0] == 'E')
{
digitalWrite(M1, LOW);
digitalWrite(M4, LOW);
break;
}
}