Quando nos foi passado esse trabalho referente ao módulo 3, buscamos juntar o útil ao agradável, visto que já estávamos com um projeto envolvendo o arduino em andamento.
O nosso projeto visa controlar o acendimento de um led utilizando um Módulo RF por meio de transmissão e recepção. Tivemos bastante dificuldade no entendimento de algumas bibliotecas e funções do arduino, que até então eram desconhecidas para nós, como a do módulo (virtualwire), bibliotecaessa que descobrimos na internet. Porém, apesar da dificuldade, conseguimos executar o programa.


Código Transmissão:
#include <VirtualWire.h> //Define pinos Led e Botao const int ledPin = 13; const int pino_botao = A0; int valor_botao; char Valor_CharMsg[4]; //Armazena estado led = ligar/desligar int estado = 0; void setup() { Serial.begin(9600); pinMode(ledPin,OUTPUT); pinMode(pino_botao,INPUT); //Pino ligado ao pino DATA do transmissor RF vw_set_tx_pin(4); //Velocidade de comunicacao (bits por segundo) vw_setup(5000); Serial.println("Trasmissao modulo RF - Acione o botao..."); } void loop() { //Verifica o estado do push-button valor_botao = digitalRead(pino_botao); //itoa(valor_botao,Valor_CharMsg,10); //Caso o botao seja pressionado, envia dados if (valor_botao == 0) { //Altera o estado do led estado = !estado; //Converte valor para envio itoa(estado,Valor_CharMsg,10); //Liga o led da porta 13 para indicar envio dos dados digitalWrite(13, true); //Envio dos dados vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg)); //Aguarda envio dos dados vw_wait_tx(); //Desliga o led da porta 13 ao final da transmissao digitalWrite(13, false); Serial.print("Valor enviado: "); Serial.println(Valor_CharMsg); delay(500); } }

Código Recepção:
#include <VirtualWire.h> //Define pino led int ledPin = 5; int valor_recebido_RF; char recebido_RF_char[4]; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); //Pino ligado ao pino DATA do receptor RF vw_set_rx_pin(7); //Velocidade de comunicacao (bits por segundo) vw_setup(5000); //Inicia a recepcao vw_rx_start(); Serial.println("Recepcao modulo RF - Aguardando..."); } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) { int i; for (i = 0; i < buflen; i++) { //Armazena os caracteres recebidos recebido_RF_char[i] = char(buf[i]); } recebido_RF_char[buflen] = '\0'; //Converte o valor recebido para integer valor_recebido_RF = atoi(recebido_RF_char); //Mostra no serial monitor o valor recebido Serial.print("Recebido: "); Serial.print(valor_recebido_RF); //Altera o estado do led conforme o numero recebido if (valor_recebido_RF == 1) { digitalWrite(ledPin, HIGH); Serial.println(" - Led aceso !"); } if (valor_recebido_RF == 0) { digitalWrite(ledPin, LOW); Serial.println(" - Led apagado !"); } } }
Grupo G2
Nenhum comentário:
Postar um comentário