I am using an RF Receiver to receive data. The data is being printed to the serial monitor. But along with that data it is printing garbage values like this:
0
° ×
0
° ×
0
° ×
0
° ×
0
° ×
0
° ×
0
° × --> this is the garbage value (in python it shows like this: b'\xb0\t\xd7\r\n')
I am not sure how this is coming, and not sure if it is a software or hardware issue. I have also changed both the transmitter and receiver modules but same result.
Is there any way I can avoid printing the garbage value?
Here is my code:
Transmitter:
#include <RH_ASK.h>
#include <SPI.h>
RH_ASK rf_driver(2000,8,7,4,false);
int buttonPin1 = 30;
int buttonPin2 = 26;
int buttonPin3 = 28;
int buttonPin4 = 32;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
void setup()
{
// Initialize ASK Object
rf_driver.init();
pinMode(buttonPin1,INPUT);
pinMode(buttonPin2,INPUT);
pinMode(buttonPin3,INPUT);
pinMode(buttonPin4,INPUT);
Serial.begin(9600);
}
void loop()
{
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
buttonState4 = digitalRead(buttonPin4);
const char *msg1 = "1";
const char *msg2 = "2";
const char *msg3 = "3";
const char *msg4 = "4";
const char *msg0 = "0";
if(buttonState1 == HIGH){
rf_driver.send((uint8_t *)msg1, strlen(msg1));
rf_driver.waitPacketSent();
delay(100);
}
else if(buttonState2 == HIGH){
rf_driver.send((uint8_t *)msg2, strlen(msg2));
rf_driver.waitPacketSent();
delay(100);
}
else if(buttonState3 == HIGH){
rf_driver.send((uint8_t *)msg3, strlen(msg3));
rf_driver.waitPacketSent();
delay(100);
}
else if(buttonState4 == HIGH){
rf_driver.send((uint8_t *)msg4, strlen(msg4));
rf_driver.waitPacketSent();
delay(100);
}
else{
rf_driver.send((uint8_t *)msg0, strlen(msg0));
rf_driver.waitPacketSent();
delay(100);
//Serial.println("Done");
}
}
Receiver
#include <RH_ASK.h>
// Include dependant SPI Library
#include <SPI.h>
// Create Amplitude Shift Keying Object
RH_ASK rf_driver(2000,8,7,4,false);
void setup()
{
// Initialize ASK Object
rf_driver.init();
// Setup Serial Monitor
Serial.begin(9600);
}
void loop()
{
// Set buffer to size of expected message
uint8_t buf[1];
uint8_t buflen = sizeof(buf);
// Check if received packet is correct size
if(rf_driver.recv(buf, &buflen)){
// Message received with valid checksum
//Serial.print("Message Received: ");
//if((char*)buf == "0")
Serial.println((char *)buf);
}
}