Transmissor e receptor controlado por arduíno

1. Transmissor e receptor controlado por arduíno

leonardo lemos lobato estolano
leothiago

(usa Outra)

Enviado em 08/07/2024 - 21:03h

BOA noite a todos, então, tenho 2 arduino uno .. preciso comunicar os 2 sem fio, por Rf, botei um transmissor e um receptor, a programação do receptor funciona da seguinte forma, aciona um botão e envio um comando para o receptor e aciona o led no outro arduino, e ao clicar novamente ele desliga o led, não consigo modificar para quando estiver pressionado led acende e ao soltar ele apaga, o projeto é um carrinho de controle remoto sem fio... me ajudem... vou enviar o codigo....

– Código (Transmissor):

#include <RH_ASK.h> //INCLUSÃO DE BIBLIOTECA
#include <SPI.h> //INCLUSÃO DE BIBLIOTECA

RH_ASK driver; //CRIA O DRIVER PARA COMUNICAÇÃO

const int pinoBotao = 2; //PINO DIGITAL UTILIZADO PELO PUSH BUTTON

void setup(){
driver.init(); //INICIALIZA A COMUNICAÇÃO RF DO DRIVER
pinMode(pinoBotao, INPUT_PULLUP); //DEFINE O PINO COMO ENTRADA / "_PULLUP" É PARA ATIVAR O RESISTOR INTERNO
//DO ARDUINO PARA GARANTIR QUE NÃO EXISTA FLUTUAÇÃO ENTRE 0 (LOW) E 1 (HIGH)
}
void loop(){
const char *msg = "led"; //VARIÁVEL RECEBE O VALOR (led)

if(digitalRead(pinoBotao) == LOW){ //SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ
driver.send((uint8_t *)msg, strlen(msg)); //ENVIA AS INFORMAÇÕES PARA O RECEPTOR (PALAVRA: led)
driver.waitPacketSent(); //AGUARDA O ENVIO DAS INFORMAÇÕES
delay(200); //INTERVALO DE 200 MILISSEGUNDOS

}
}

– Código (Receptor):

OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.

Arduino
#include <RH_ASK.h> //INCLUSÃO DE BIBLIOTECA
#include <SPI.h> //INCLUSÃO DE BIBLIOTECA

RH_ASK driver; //CRIA O DRIVER PARA COMUNICAÇÃO

const int pinoLed = 4; //PINO DIGITAL UTILIZADO PELO LED
String str = ""; //VARIÁVEL DO TIPO STRING
int statusLed = 0; //VARIÁVEL DO TIPO INT (CONTROLA O ESTADO ATUAL DO LED)

void setup(){
driver.init(); //INICIALIZA A COMUNICAÇÃO RF DO DRIVER
pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA
digitalWrite(pinoLed, LOW); //LED INICIA DESLIGADO
}
void loop(){
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]; //LÊ A MENSAGEM RECEBIDA (PALAVRA: led)
uint8_t buflen = sizeof(buf); //CRIA O COMPRIMENTO DO BUFFER PARA O TAMANHO DE buf

if(driver.recv(buf, &buflen)){ //SE O DRIVER RECEBEU buf(INTEIRO) E buflen (COMPRIMENTO DE DADOS), FAZ
str = ""; //VARIÁVEL RECEBE VAZIO
int i; //VARIÁVEL LOCAL DO TIPO INTEIRO

for(int i = 0; i < buflen; i++){ //PARA i IGUAL A 0, ENQUANTO i MENOR QUE buflen, INCREMENTA i
str += (char)buf[i]; //VARIÁVEL RECEBE OS CARACTERES E FORMA A PALAVRA
}
if((str.equals("led")) && (statusLed == 0)){ //SE str FOR IGUAL A "led" E statusLed FOR IGUAL A 0, FAZ
statusLed = 1; //VARIÁVEL RECEBE 1
digitalWrite(pinoLed, HIGH); //ACENDE O LED
}else{ //SENÃO, FAZ
if((str.equals("led")) && (statusLed == 1)){ //SE str FOR IGUAL A "led" E statusLed FOR IGUAL A 1, FAZ
statusLed = 0; //VARIÁVEL RECEBE 0
digitalWrite(pinoLed, LOW); //APAGA O LED
}
}
}
}



Obr


  


2. Re: Transmissor e receptor controlado por arduíno

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 08/07/2024 - 21:03h

Para alterar o funcionamento do LED para acender quando pressionado e apagar ao soltar, você precisa modificar a lógica implementada no código do receptor.

Para isso, você pode adicionar uma variável booleana para indicar se o botão está pressionado ou não.

Aqui estão algumas alterações que você pode fazer no código do receptor:

```cpp
#include <RH_ASK.h>
#include <SPI.h>

RH_ASK driver;

const int pinoBotao = 2;
String str = "";
int statusLed = 0;
bool botaoPressionado = false;

void setup(){
driver.init();
pinMode(pinoBotao, INPUT_PULLUP);
pinMode(pinoLed, OUTPUT);
digitalWrite(pinoLed, LOW);
}

void loop(){
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
uint8_t buflen = sizeof(buf);

if(driver.recv(buf, &buflen)){
str = "";

for(int i = 0; i < buflen; i++){
str += (char)buf[i];
}

if(str.equals("led")){
if(!botaoPressionado){
statusLed = (statusLed + 1) % 2;
digitalWrite(pinoLed, statusLed);
}
}
}

if(digitalRead(pinoBotao) == LOW){
botaoPressionado = true;
} else






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts