Can someone please help me with the receiver side o/p? I am trying to implement a data transmission circuit using lifi technology, the h/w pic of which I have posted here. The problem I am facing is that my transmitter side is working absolutely fine but on the receiver side the command window shows some garbage value instead of the desired char. I am a bit weak with the Arduino coding so can someone please help me out with the same? I have posted the codes as well
transmitter code:
''''''''''
#define LED_PIN A1
#define BUTTON_PIN A0
#define PERIOD 15
char* string = "This is a test transmission";
int string_length;
void setup()
{
pinMode(LED_PIN, OUTPUT);
//pinMode(BUTTON_PIN, INPUT_PULLUP);
string_length = strlen(string);
}
void loop()
{
for(int i = 0; i < string_length; i ++)
{
send_byte(string[i]);
}
delay(1000);
}
void send_byte(char my_byte)
{
digitalWrite(LED_PIN, LOW);
delay(PERIOD);
//transmission of bits
for(int i = 0; i < 8; i++)
{
digitalWrite(LED_PIN, (my_byte&(0x01 << i))!=0 );
delay(PERIOD);
}
digitalWrite(LED_PIN, HIGH);
delay(PERIOD);
}
''''''''
receiver code:
#define LED_PIN 3
#define LDR_PIN A2
#define THRESHOLD 100
#define PERIOD 15
bool previous_state;
bool current_state;
void setup()
{
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
}
/void loop(){
digitalWrite(LED_PIN, HIGH); // turn the led on
delay(1000); // wait for 1 second
digitalWrite(LED_PIN, LOW); // turn the led off
delay(1000);
}/
void loop()
{
current_state = get_ldr();
if(!current_state && previous_state)
{
print_byte(get_byte());
}
previous_state = current_state;
}
bool get_ldr()
{
int voltage = analogRead(LDR_PIN);
return voltage > THRESHOLD ? true : false;
}
char get_byte()
{
char ret = 0;
delay(PERIOD*1.5);
for(int i = 0; i < 8; i++)
{
ret = ret | get_ldr() << i;
delay(PERIOD);
}
return ret;
}
void print_byte(char my_byte)
{
char buff[2];
sprintf(buff, "%c", my_byte);
Serial.print(buff);
}
''''''''''''''''