li-fi guidance system

Hello Arduino community, am currently doing my final year project on a guidance system which uses LEDs.for the transmission section I have 5 pairs of LEDs, each pair representing one transmitter, one LED is for setting up the communication, the other led is for sending data.Here is my transmitter code(it works perfectly, but I could use a little help incorporating the mills function)

int led2pin = 2;
int led3pin = 3;
int led4pin =4;
int led5pin=5;
int led6pin = 6;
int led7pin = 7;
int led8pin =8;
int led9pin=9;
int led10pin =10;
int led11pin=11;
int delayTime = 50;
char value;
String values;
String stringValues;
int zerosLeft;
String zeros;
int length;
boolean shouldSend;


void setup() {
  pinMode(led2pin,OUTPUT);
  pinMode(led3pin, OUTPUT);
  pinMode(led4pin, OUTPUT);
  pinMode(led5pin, OUTPUT);
  pinMode(led6pin, OUTPUT);
  pinMode(led7pin, OUTPUT);
  pinMode(led8pin, OUTPUT);
  pinMode(led9pin, OUTPUT);
  pinMode(led10pin, OUTPUT);
  pinMode(led11pin,OUTPUT);
  }


void loop() 
{ tx1();
 tx2();
 tx3();
 tx4();
 tx5();
  }
  void tx1(){
    value ='a';
    
    // Convert ASCII to binary
    zerosLeft = 8 - String(value, BIN).length();
    for (int i = 0; i < zerosLeft; i++) {
      zeros = zeros + "0";
    }
    stringValues = stringValues + String(value);
    
    // Build string
    values = values + zeros + String(value, BIN);
    zeros = "";
    delay(300);
     if (values != "") {
 length = values.length();
    shouldSend = true;
     if (shouldSend) {
    // OOK modulation
    for (int i = 0; i < length; i++) {
      digitalWrite(led3pin, HIGH);
      if (i != length - 1) {
        if (values.charAt(i) == '0') {
          digitalWrite(led2pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led2pin, HIGH);
          delay(delayTime);
        }
      }
      else {
        // Turn off at the end
        if (values.charAt(i) == '0') {
          digitalWrite(led2pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led2pin, HIGH);
          delay(delayTime);
          digitalWrite(led2pin, LOW);
        }
      }      
    }
    
    // Reset variables
    values = "";
    stringValues = "";
    digitalWrite(led3pin, LOW);
    shouldSend = false;
  }
}
}
 void tx2(){
    value = 'b';
    
    // Convert ASCII to binary
    zerosLeft = 8 - String(value, BIN).length();
    for (int i = 0; i < zerosLeft; i++) {
      zeros = zeros + "0";
    }
    stringValues = stringValues + String(value);
    
    // Build string
    values = values + zeros + String(value, BIN);
    zeros = "";
    delay(250);
     if (values != "") {
 length = values.length();
    shouldSend = true;
     if (shouldSend) {
    // OOK modulation
    for (int i = 0; i < length; i++) {
      digitalWrite(led5pin, HIGH);
      if (i != length - 1) {
        if (values.charAt(i) == '0') {
          digitalWrite(led4pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led4pin, HIGH);
          delay(delayTime);
        }
      }
      else {
        // Turn off at the end
        if (values.charAt(i) == '0') {
          digitalWrite(led4pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led4pin, HIGH);
          delay(delayTime);
          digitalWrite(led4pin, LOW);
        }
      }      
    }
    
    // Reset variables
    values = "";
    stringValues = "";
    digitalWrite(led5pin, LOW);
    shouldSend = false;
  }
}
}
void tx3(){
    value = 'c';
    
    // Convert ASCII to binary
    zerosLeft = 8 - String(value, BIN).length();
    for (int i = 0; i < zerosLeft; i++) {
      zeros = zeros + "0";
    }
    stringValues = stringValues + String(value);
    
    // Build string
    values = values + zeros + String(value, BIN);
    zeros = "";
    delay(200);
     if (values != "") {
 length = values.length();
    shouldSend = true;
     if (shouldSend) {
    // OOK modulation
    for (int i = 0; i < length; i++) {
      digitalWrite(led7pin, HIGH);
      if (i != length - 1) {
        if (values.charAt(i) == '0') {
          digitalWrite(led6pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led6pin, HIGH);
          delay(delayTime);
        }
      }
      else {
        // Turn off at the end
        if (values.charAt(i) == '0') {
          digitalWrite(led6pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led6pin, HIGH);
          delay(delayTime);
          digitalWrite(led6pin, LOW);
        }
      }      
    }
    
    // Reset variables
    values = "";
    stringValues = "";
    digitalWrite(led7pin, LOW);
    shouldSend = false;
  }
}
}void tx4(){
    value = 'd';
    
    // Convert ASCII to binary
    zerosLeft = 8 - String(value, BIN).length();
    for (int i = 0; i < zerosLeft; i++) {
      zeros = zeros + "0";
    }
    stringValues = stringValues + String(value);
    
    // Build string
    values = values + zeros + String(value, BIN);
    zeros = "";
    delay(150);
     if (values != "") {
 length = values.length();
    shouldSend = true;
     if (shouldSend) {
    // OOK modulation
    for (int i = 0; i < length; i++) {
      digitalWrite(led9pin, HIGH);
      if (i != length - 1) {
        if (values.charAt(i) == '0') {
          digitalWrite(led8pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led8pin, HIGH);
          delay(delayTime);
        }
      }
      else {
        // Turn off at the end
        if (values.charAt(i) == '0') {
          digitalWrite(led8pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led8pin, HIGH);
          delay(delayTime);
          digitalWrite(led8pin, LOW);
        }
      }      
    }
    
    // Reset variables
    values = "";
    stringValues = "";
    digitalWrite(led9pin, LOW);
    shouldSend = false;
  }
}
}void tx5(){
    value = 'e';
    
    // Convert ASCII to binary
    zerosLeft = 8 - String(value, BIN).length();
    for (int i = 0; i < zerosLeft; i++) {
      zeros = zeros + "0";
    }
    stringValues = stringValues + String(value);
    
    // Build string
    values = values + zeros + String(value, BIN);
    zeros = "";
    delay(200);
     if (values != "") {
 length = values.length();
    shouldSend = true;
     if (shouldSend) {
    // OOK modulation
    for (int i = 0; i < length; i++) {
      digitalWrite(led11pin, HIGH);
      if (i != length - 1) {
        if (values.charAt(i) == '0') {
          digitalWrite(led10pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led10pin, HIGH);
          delay(delayTime);
        }
      }
      else {
        // Turn off at the end
        if (values.charAt(i) == '0') {
          digitalWrite(led10pin, LOW);
          delay(delayTime);
        }
        else if (values.charAt(i) == '1') {
          digitalWrite(led10pin, HIGH);
          delay(delayTime);
          digitalWrite(led10pin, LOW);
        }
      }      
    }
    
    // Reset variables
    values = "";
    stringValues = "";
    digitalWrite(led11pin, LOW);
    shouldSend = false;
  }
}
}

for the receiver section I have a pair of photodiodes,one receiving the data and the other(connected to A1) to establish communication.using this code,i able to successfully receive the data and display it on the serial monitor.the receiver is mobile and the for example for transmitter one (pin 2,3),pin 2 should be facing the photodiode connected to A0 and pin 3 should be facing the photodiode connected to A1.

// Arduino variables
int photoPin = A0;
int photo2Pin = A1;
int delayTime = 50;
int analogValue;
int analog2Value;
int lowThreshold = 5;
int highThreshold= 10;
char v;

// Serial variables
int i = 0;
char value;
String values;
int binStrings;
String binString;
String asciiString;

void setup() {
  // Serial comm
  Serial.begin(9600);
  

}

void loop() {
  // Read photo while photo2 is receiving light
  analog2Value = analogRead(photo2Pin);
  if (analog2Value > highThreshold) {
    while (analog2Value > highThreshold) {
      // OOK demodulation
      analogValue = analogRead(photoPin);
      if (analogValue < lowThreshold) {
        value = '0';
      }
      else if (analogValue > highThreshold) {
        value = '1';
      }
      
      // Build string
      values = values + String(value);
      
      // Loop
      delay(delayTime);
      analog2Value = analogRead(photo2Pin);
    }
  }
  
  if (values != "") {
    
    
    // Print ASCII
    
      binStrings = values.length() / 8;
      for (int i = 0; i < binStrings; i++) {
        binString = values.substring(0 + 8*i, 8 + 8*i);
        asciiString = asciiString + String(binToASCII(binString));
      }
      if (asciiString.indexOf('|') == -1) {
        Serial.println(asciiString);
      }
   // Reset variables
    values = "";
    asciiString = "";
  }
}

// Convert binary to ACII ("tables")
char binToASCII(String binString) {
  // Symbols
  if (binString == "00100000") {
    v= ' ';
  }  
  else if (binString == "01100110") {
    v= 'f';
  }  
  else if (binString == "00100001") {
    v= '!';
  }  
  else if (binString == "00100010") {
    v= '"';
  }  
  else if (binString == "00100011") {
   v= '#';
  }  
  else if (binString == "00100100") {
    v= '

;
 }  
 else if (binString == "00100101") {
   v='%';
 }  
 else if (binString == "00100110") {
   v= '&';
 }  
 else if (binString == "00100111") {
   v= ''';
 }  
 else if (binString == "00101000") {
   v= '(';
 }  
 else if (binString == "00101001") {
   v= ')';
 }  
 else if (binString == "00101010") {
   v= '*';
 }  
 else if (binString == "00101011") {
   v= '+';
 }  
 else if (binString == "00101100") {
   v=',';
 }  
 else if (binString == "00101101") {
   v= '-';
 }  
 else if (binString == "00101110") {
   v= '.';
 }  
 else if (binString == "00101111") {
   v='/';
 }  
 else if (binString == "00111010") {
   v= ':';
 }  
 else if (binString == "00111011") {
   v= ';';
 }  
 else if (binString == "00111100") {
   v= '<';
 }  
 else if (binString == "00111101") {
   v= '=';
 }  
 else if (binString == "00111110") {
   v= '>';
 }  
 else if (binString == "00111111") {
   v= '?';
 }  
 else if (binString == "01000000") {
   v= '@';
 }
 
 // Lowercase
 else if (binString == "01100001") {
   v='a';
 }
 else if (binString == "01100010") {
   v= 'b';
 }
 else if (binString == "01100011") {
   v= 'c';
 }
 else if (binString == "01100100") {
   v= 'd';
 }
 else if (binString == "01100101") {
   v= 'e';
 }  
 else if (binString == "01100110") {
   v= 'f';
 }
 else if (binString == "01100111") {
   v= 'g';
 }
 else if (binString == "01101000") {
   v= 'h';
 }
 else if (binString == "01101001") {
   v= 'i';
 }
 else if (binString == "01101010") {
   v= 'j';
 }
 else if (binString == "01101011") {
   v= 'k';
 }
 else if (binString == "01101100") {
   v= 'l';
 }  
 else if (binString == "01101101") {
   v= 'm';
 }
 else if (binString == "01101110") {
   v= 'n';
 }
 else if (binString == "01101111") {
   v= 'o';
 }  
 else if (binString == "01110000") {
   v= 'p';
 }
 else if (binString == "01110001") {
   v= 'q';
 }
 else if (binString == "01110010") {
   v= 'r';
 }
 else if (binString == "01110011") {
   v= 's';
 }
 else if (binString == "01110100") {
   v= 't';
 }
 else if (binString == "01110101") {
   v= 'u';
 }
 else if (binString == "01110110") {
   v= 'v';
 }
 else if (binString == "01110111") {
   v= 'w';
 }
 else if (binString == "01111000") {
   v= 'x';
 }
 else if (binString == "01111001") {
   v= 'y';
 }
 else if (binString == "01111010") {
   v= 'z';
 }

// Capital
 else if (binString == "01000001") {
   v= 'A';
 }
 else if (binString == "01000010") {
   v= 'B';
 }
 else if (binString == "01000011") {
   v= 'C';
 }
 else if (binString == "01000100") {
   v= 'D';
 }  
 else if (binString == "01000101") {
   v= 'E';
 }  
 else if (binString == "01000110") {
   v= 'F';
 }  
 else if (binString == "01000111") {
   v= 'G';
 }
 else if (binString == "01001000") {
   v= 'H';
 }
 else if (binString == "01001001") {
   v= 'I';
 }
 else if (binString == "01001010") {
   v= 'J';
 }
 else if (binString == "01001011") {
   v= 'K';
 }
 else if (binString == "01001100") {
   v= 'L';
 }
 else if (binString == "01001101") {
   v= 'M';
 }
 else if (binString == "01001110") {
   v= 'N';
 }
 else if (binString == "01001111") {
   v= 'O';
 }
 else if (binString == "01010000") {
   v= 'P';
 }
 else if (binString == "01010001") {
   v= 'Q';
 }
 else if (binString == "01010010") {
   v= 'R';
 }
 else if (binString == "01010011") {
   v= 'S';
 }
 else if (binString == "01010100") {
   v= 'T';
 }
 else if (binString == "01010101") {
   v= 'U';
 }
 else if (binString == "01010110") {
   v= 'V';
 }
 else if (binString == "01010111") {
   v= 'W';
 }
 else if (binString == "01011000") {
   v= 'X';
 }
 else if (binString == "01011001") {
   v= 'Y';
 }
 else if (binString == "01011010") {
   v= 'Z';
 }
 
 // Numbers
 else if (binString == "00110000") {
   v= '0';
 }
 else if (binString == "00110001") {
   v= '1';
 }
 else if (binString == "00110010") {
   v= '2';
 }
 else if (binString == "00110011") {
   v= '3';
 }
 else if (binString == "00110100") {
   v= '4';
 }
 else if (binString == "00110101") {
   v= '5';
 }
 else if (binString == "00110110") {
   v= '6';
 }
 else if (binString == "00110111") {
   v= '7';
 }
 else if (binString == "00111000") {
   v= '8';
 }
 else if (binString == "00111001") {
   v= '9';
 }
 
 // Error
 else {
   v= '|';
 }
 
}

now the area where I need help is, I want to add a Bluetooth module (hc06) to the receiver. I want to modify the receiver code so that when the receiver is switched on, it waits for an input from the android phone via the Bluetooth module, the inputs should be either room 1 or room 2.
CASE ROOM 1,after the receiver gets the Bluetooth input, it checks what the photodiodes are receiving, if its receiving 'a' from transmitter one it should print move forward on the serial monitor,that is one "move forward " for each 'a' received. When it receives a 'b' from transmitter two, it should print "turn right",when it receives a 'c' it should print "room 1" on the serial monitor.
I tried with code below but it just prints "move forward" continuously after I say "room 1" to the Bluetooth module.

#include <SoftwareSerial.h>
SoftwareSerial BLU(0, 1);
String voice;
int photoPin = A0;
int photo2Pin = A1;
int delayTime = 50;
int analogValue;
int analog2Value;
int lowThreshold = 5;
int highThreshold = 10;
char v;
int i = 0;
char value;
String values;
int binStrings;
String binString;
String asciiString;


void room1() {

  if (v = 'a') {
    Serial.println("turn right");
  }
  else  if (v = 'b') {
    Serial.println("turn right");
  }
  else if (v = 'c') {
    Serial.println("room 1");
  }

}
void room2() {
  if (v = 'a') {
    Serial.println("move forward");
  }
  else  if (v = 'b') {
    Serial.println("move forward");
  }
  else if (v = 'd') {
    Serial.println("turn left");
  }
  else if (v = 'e') {
    Serial.println("room 2");
  

}
void setup()
{
  Serial.begin(9600);
  BLU.begin(9600);
}
void loop()
{
  analog2Value = analogRead(photo2Pin);
      if (analog2Value > highThreshold) {
        while (analog2Value > highThreshold) {
          // OOK demodulation
          analogValue = analogRead(photoPin);
          if (analogValue < lowThreshold) {
            value = '0';
          }
          else if (analogValue > highThreshold) {
            value = '1';
          }

          // Build string
          values = values + String(value);

          // Loop
          delay(delayTime);
          analog2Value = analogRead(photo2Pin);
        }
      }

      if (values != "") {


        // Print ASCII

        binStrings = values.length() / 8;
        for (int i = 0; i < binStrings; i++) {
          binString = values.substring(0 + 8 * i, 8 + 8 * i);
          asciiString = asciiString + String(binToASCII(binString));
        }
        if (asciiString.indexOf('|') == -1) {
          Serial.println(v);
        }
        // Reset variables
        values = "";
        asciiString = "";
      }

  while (Serial.available())
    //Check if there is an available byte to read
  {
    delay(10);
    //Delay added to make thing stable

    char c = Serial.read();
    //conduct a serial read

    if (c == '#')
    {
      break;    //Exit the loop when the  # is detected after the word
    }
    voice += c;
  }

  if  (voice.length() > 0)
  {
    if (voice == "room 1")
    { 
      room1();
    }
    
  
  else if (voice == "room 2")
  {
 ;
    
    room2();
  }
  
}
}


char binToASCII(String binString) {
  // Symbols
  if (binString == "00100000") {
    v = ' ';
  }
  else if (binString == "01100110") {
    v = 'f';
  }
  else if (binString == "00100001") {
    v = '!';
  }
  else if (binString == "00100010") {
    v = '"';
  }
  else if (binString == "00100011") {
    v = '#';
  }
  else if (binString == "00100100") {
    v = '

thank you very much, am new to the Arduino community, that would explain the coding errors,;
 }
 else if (binString == "00100101") {
   v = '%';
 }
 else if (binString == "00100110") {
   v = '&';
 }
 else if (binString == "00100111") {
   v = ''';
 }
 else if (binString == "00101000") {
   v = '(';
 }
 else if (binString == "00101001") {
   v = ')';
 }
 else if (binString == "00101010") {
   v = '*';
 }
 else if (binString == "00101011") {
   v = '+';
 }
 else if (binString == "00101100") {
   v = ',';
 }
 else if (binString == "00101101") {
   v = '-';
 }
 else if (binString == "00101110") {
   v = '.';
 }
 else if (binString == "00101111") {
   v = '/';
 }
 else if (binString == "00111010") {
   v = ':';
 }
 else if (binString == "00111011") {
   v = ';';
 }
 else if (binString == "00111100") {
   v = '<';
 }
 else if (binString == "00111101") {
   v = '=';
 }
 else if (binString == "00111110") {
   v = '>';
 }
 else if (binString == "00111111") {
   v = '?';
 }
 else if (binString == "01000000") {
   v = '@';
 }

// Lowercase
 else if (binString == "01100001") {
   v = 'a';
 }
 else if (binString == "01100010") {
   v = 'b';
 }
 else if (binString == "01100011") {
   v = 'c';
 }
 else if (binString == "01100100") {
   v = 'd';
 }
 else if (binString == "01100101") {
   v = 'e';
 }
 else if (binString == "01100110") {
   v = 'f';
 }
 else if (binString == "01100111") {
   v = 'g';
 }
 else if (binString == "01101000") {
   v = 'h';
 }
 else if (binString == "01101001") {
   v = 'i';
 }
 else if (binString == "01101010") {
   v = 'j';
 }
 else if (binString == "01101011") {
   v = 'k';
 }
 else if (binString == "01101100") {
   v = 'l';
 }
 else if (binString == "01101101") {
   v = 'm';
 }
 else if (binString == "01101110") {
   v = 'n';
 }
 else if (binString == "01101111") {
   v = 'o';
 }
 else if (binString == "01110000") {
   v = 'p';
 }
 else if (binString == "01110001") {
   v = 'q';
 }
 else if (binString == "01110010") {
   v = 'r';
 }
 else if (binString == "01110011") {
   v = 's';
 }
 else if (binString == "01110100") {
   v = 't';
 }
 else if (binString == "01110101") {
   v = 'u';
 }
 else if (binString == "01110110") {
   v = 'v';
 }
 else if (binString == "01110111") {
   v = 'w';
 }
 else if (binString == "01111000") {
   v = 'x';
 }
 else if (binString == "01111001") {
   v = 'y';
 }
 else if (binString == "01111010") {
   v = 'z';
 }

// Capital
 else if (binString == "01000001") {
   v = 'A';
 }
 else if (binString == "01000010") {
   v = 'B';
 }
 else if (binString == "01000011") {
   v = 'C';
 }
 else if (binString == "01000100") {
   v = 'D';
 }
 else if (binString == "01000101") {
   v = 'E';
 }
 else if (binString == "01000110") {
   v = 'F';
 }
 else if (binString == "01000111") {
   v = 'G';
 }
 else if (binString == "01001000") {
   v = 'H';
 }
 else if (binString == "01001001") {
   v = 'I';
 }
 else if (binString == "01001010") {
   v = 'J';
 }
 else if (binString == "01001011") {
   v = 'K';
 }
 else if (binString == "01001100") {
   v = 'L';
 }
 else if (binString == "01001101") {
   v = 'M';
 }
 else if (binString == "01001110") {
   v = 'N';
 }
 else if (binString == "01001111") {
   v = 'O';
 }
 else if (binString == "01010000") {
   v = 'P';
 }
 else if (binString == "01010001") {
   v = 'Q';
 }
 else if (binString == "01010010") {
   v = 'R';
 }
 else if (binString == "01010011") {
   v = 'S';
 }
 else if (binString == "01010100") {
   v = 'T';
 }
 else if (binString == "01010101") {
   v = 'U';
 }
 else if (binString == "01010110") {
   v = 'V';
 }
 else if (binString == "01010111") {
   v = 'W';
 }
 else if (binString == "01011000") {
   v = 'X';
 }
 else if (binString == "01011001") {
   v = 'Y';
 }
 else if (binString == "01011010") {
   v = 'Z';
 }

// Numbers
 else if (binString == "00110000") {
   v = '0';
 }
 else if (binString == "00110001") {
   v = '1';
 }
 else if (binString == "00110010") {
   v = '2';
 }
 else if (binString == "00110011") {
   v = '3';
 }
 else if (binString == "00110100") {
   v = '4';
 }
 else if (binString == "00110101") {
   v = '5';
 }
 else if (binString == "00110110") {
   v = '6';
 }
 else if (binString == "00110111") {
   v = '7';
 }
 else if (binString == "00111000") {
   v = '8';
 }
 else if (binString == "00111001") {
   v = '9';
 }

// Error
 else {
   v = '|';
 }

}


thank you very much, am new to the Arduino community, that would explain the coding errors,

if (v = 'a')Have another try.

Have you noticed that all the tx functions all look very similar?

          // Build string
          values = values + String(value);

Avoid use of Strings with Arduino, as fragmented memory will eventually cause your program to crash.

  if (binString == "00100000") {

...and using a String to represent a binary number is lazy and wasteful beyond belief.

GrooveFlotilla:
if (v = 'a')Have another try.

Have you noticed that all the tx functions all look very similar?

Any suggestions?

Hudin:
Any suggestions?

Fix the comparisons and factor the code.

jremington:

          // Build string

values = values + String(value);



Avoid use of Strings with Arduino, as fragmented memory will eventually cause your program to crash.

Thank you, will try to rebuild the code to avoid such, any suggestions with the bluetooth part?

Don't worry about bluetooth just yet. Get the simpler parts of your project working first.

You need to learn the programming language, for example to avoid such mistakes as using "=" instead of the comparison "==".

The code looks like a mess, a big mess.

Start with cleaning up the formatting - use ctrl-T in the IDE to get everything properly indented. That's going to help a lot.

Also lots and lots of numbered variable names. The moment you think of using numbers in variable names, you should really start looking into using arrays. When you are getting to double digits, you're way overdue for looking into using arrays. And of those variables really have unrelated functions, give them proper names.

wvmarle:
The code looks like a mess, a big mess.

Start with cleaning up the formatting - use ctrl-T in the IDE to get everything properly indented. That's going to help a lot.

Also lots and lots of numbered variable names. The moment you think of using numbers in variable names, you should really start looking into using arrays. When you are getting to double digits, you're way overdue for looking into using arrays. And of those variables really have unrelated functions, give them proper names.

Thank you for your response, am cleaning up the code immediately. The array part i ddnt get, as I said earlier,am very new to programming, i just picked the code from the forum and added some adjustments

jremington:
Don't worry about bluetooth just yet. Get the simpler parts of your project working first.

You need to learn the programming language, for example to avoid such mistakes as using "=" instead of the comparison "==".

Thank you very much, i can't believe i ddnt see such a mistake, thank you for pointing it out. Am trying to learn the learn the language but the facilities here are quite limited.

Hello guys, kindly help me clean up the code so that I be able to factor in the bluetooth part. As I said am able to convert from light pulses back to the sent messages. Now I want to add a bluetooth part, where first you give the receiver a destination, and depending on the destination, the receiver will print different instructions on the serial monitor.

You need to post your code as it looks now.

I factored in the comparisons instead of the equal sign, and also deleted some section of the the ascii, like capital letters and numbers, since am not only transmitting lower case letters, a-e. SoftwareSerial BLU(0, 1);
String voice;
int photoPin = A0;
int photo2Pin = A1;
int delayTime = 50;
int analogValue;
int analog2Value;
int lowThreshold = 5;
int highThreshold = 10;
char v;
int i = 0;
char value;
String values;
int binStrings;
String binString;
String asciiString;
void room1() {
** if (v =='a') {**
** Serial.println("turn right");**
** }**
** else if (v == 'b') {**
** Serial.println("turn right");**
** }**
** else if (v == 'c') {**
** Serial.println("room 1");**
** }**
}
void room2() {
** if (v == 'a') {**
** Serial.println("move forward");**
** }**
** else if (v =='b') {**
** Serial.println("move forward");**
** }**
** else if (v == 'd') {**
** Serial.println("turn left");**
** }**
** else if (v =='e') {**
** Serial.println("room 2");**

}
void setup()
{
** Serial.begin(9600);**
** BLU.begin(9600);**
}
void loop()
{
** analog2Value = analogRead(photo2Pin);**
** if (analog2Value > highThreshold) {**
** while (analog2Value > highThreshold) {**
** // OOK demodulation**
** analogValue = analogRead(photoPin);**
** if (analogValue < lowThreshold) {**
** value = '0';**
** }**
** else if (analogValue > highThreshold) {**
** value = '1';**
** }**
** // Build string**
** values = values + String(value);**
** // Loop**
** delay(delayTime);**
** analog2Value = analogRead(photo2Pin);**
** }**
** }**
** if (values != "") {**
** // Print ASCII**
** binStrings = values.length() / 8;**
** for (int i = 0; i < binStrings; i++) {**
__ binString = values.substring(0 + 8 * i, 8 + 8 * i);__
** asciiString = asciiString + String(binToASCII(binString));**
** }**
** if (asciiString.indexOf('|') == -1) {**
** Serial.println(v);**
** }**
** // Reset variables**
** values = "";**
** asciiString = "";**
** }**
** while (Serial.available())**
** //Check if there is an available byte to read**
** {**
** delay(10);**
** //Delay added to make thing stable**
** char c = Serial.read();**
** //conduct a serial read**
** if (c == '#')**
** {**
** break; //Exit the loop when the # is detected after the word**
** }**
** voice += c;**
** }**
** if (voice.length() > 0)**
** {**
** if (voice == "room 1")**
** {**
** room1();**
** }**

** else if (voice == "room 2")**
** {**
;

** room2();**
** }**

}
}
char binToASCII(String binString) {
** // Symbols**
** if (binString == "00100000") {**
** v = ' ';**
** }**
** else if (binString == "01100110") {**
** v = 'f';**
** }**
** else if (binString == "00100001") {**
** v = '!';**
** }**
** else if (binString == "00100010") {**
** v = '"';**
** }**
** else if (binString == "00100011") {**
** v = '#';**
** }**
** else if (binString == "00100100") {**
** v = '$';**
** }**
** else if (binString == "00100101") {**
** v = '%';**
** }**
** else if (binString == "00100110") {**
** v = '&';**
** }**
** else if (binString == "00100111") {**
** v = ''';**
** }**
** else if (binString == "00101000") {**
** v = '(';**
** }**
** else if (binString == "00101001") {**
** v = ')';**
** }**
** else if (binString == "00101010") {**
__ v = '*';__
** }**
** else if (binString == "00101011") {**
** v = '+';**
** }**
** else if (binString == "00101100") {**
** v = ',';**
** }**
** else if (binString == "00101101") {**
** v = '-';**
** }**
** else if (binString == "00101110") {**
** v = '.';**
** }**
** else if (binString == "00101111") {**
** v = '/';**
** }**
** else if (binString == "00111010") {**
** v = ':';**
** }**
** else if (binString == "00111011") {**
** v = ';';**
** }**
** else if (binString == "00111100") {**
** v = '<';**
** }**
** else if (binString == "00111101") {**
** v = '=';**
** }**
** else if (binString == "00111110") {**
** v = '>';**
** }**
** else if (binString == "00111111") {**
** v = '?';**
** }**
** else if (binString == "01000000") {**
** v = '@';**
** }**
** // Lowercase**
** else if (binString == "01100001") {**
** v = 'a';**
** }**
** else if (binString == "01100010") {**
** v = 'b';**
** }**
** else if (binString == "01100011") {**
** v = 'c';**
** }**
** else if (binString == "01100100") {**
** v = 'd';**
** }**
** else if (binString == "01100101") {**
** v = 'e';**
** }**

** }**
** // Error**
** else {**
** v = '|';**
** }**

}