user34766: I'm a newbie here. And sorry for my bad English first of all.
Right now I'm working on VLC (Visible Light Communication). I have working code, in which output is displayed on the Serial Monitor. But now I want to print this output on an LCD.
I made necessary changes like including the LCD library and instead of Serial.print I used lcd.print. But nothing is displayed on the LCD.
Here is the modified code including LCD:
static int TRESHOLD = 500;
static unsigned int standardDelay = 13500000; //1350 is limit
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 7,6,5,4);

void setup() {
  Serial.begin(9600); // 9600 bits per second
  pinMode(3,OUTPUT); //digital PWM 3 on output
  int sensorValue = 0;
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // initialize the serial communications:
}

void loop() {
  WriteChar('h');
  WriteChar('e');
  WriteChar('l');
  WriteChar('l');
  WriteChar('o');
  WriteChar('w');
  WriteChar('o');
  WriteChar('r');
  WriteChar('l');
  WriteChar('d');
}

void WriteChar(char str){
  switch (str - '0'){
    case 49:
      //code for a is 011 0001
      LightFlash(false, true, true, false, false, false, true);
      break;
    case 50:
      //code for b is 011 0010
      LightFlash(false, true, true, false, false, true, false);
      break;
    case 51:
      //code for c is 011 0011
      LightFlash(false, true, true, false, false, true, true);
      break;
    case 52:
      //code for d is 011 0100
      LightFlash(false, true, true, false, true, false, false);
      break;
    case 53:
      //code for e is 011 0101
      LightFlash(false, true, true, false, true, false, true);
      break;
    case 54:
      //code for f is 011 0110
      LightFlash(false, true, true, false, true, true, false);
      break;
    case 55:
      //code for g is 011 0111
      LightFlash(false, true, true, false, true, true, true);
      break;
    case 56:
      //code for h is 011 1000
      LightFlash(false, true, true, true, false, false, false);
      break;
    case 57:
      //code for i is 011 1001
      LightFlash(false, true, true, true, false, false, true);
      break;
    case 58:
      //code for j is 011 1010
      LightFlash(false, true, true, true, false, true, false);
      break;
    case 59:
      //code for k is 011 1011
      LightFlash(false, true, true, true, false, true, true);
      break;
    case 60:
      //code for l is 011 1100
      LightFlash(false, true, true, true, true, false, false);
      break;
    case 61:
      //code for m is 011 1101
      LightFlash(false, true, true, true, true, false, true);
      break;
    case 62:
      //code for n is 011 1110
      LightFlash(false, true, true, true, true, true, false);
      break;
    case 63:
      //code for o is 011 1111
      LightFlash(false, true, true, true, true, true, true);
      break;
    case 64:
      //code for p is 100 0000
      LightFlash(true, false, false, false, false, false, false);
      break;
    case 65:
      //code for q is 100 0001
      LightFlash(true, false, false, false, false, false, true);
      break;
    case 66:
      //code for r is 100 0010
      LightFlash(true, false, false, false, false, true, false);
      break;
    case 67:
      //code for s is 100 0011
      LightFlash(true, false, false, false, false, true, true);
      break;
    case 68:
      //code for t is 100 0100
      LightFlash(true, false, false, false, true, false, false);
      break;
    case 69:
      //code for u is 100 0101
      LightFlash(true, false, false, false, true, false, true);
      break;
    case 70:
      //code for v is 100 0110
      LightFlash(true, false, false, false, true, true, false);
      break;
    case 71:
      //code for w is 100 0111
      LightFlash(true, false, false, false, true, true, true);
      break;
    case 72:
      //code for x is 100 1000
      LightFlash(true, false, false, true, false, false, false);
      break;
    case 73:
      //code for y is 100 1001
      LightFlash(true, false, false, true, false, false, true);
      break;
    case 74:
      //code for z is 100 1010
      LightFlash(true, false, false, true, false, true, false);
      break;
    default:
      lcd.print(str - '0');
      lcd.print("CAME IN DEFAULT IN WRITECHAR");
      break;
  }
}

void LightFlash(boolean a, boolean b, boolean c, boolean d, boolean e, boolean f, boolean g){


  digitalWrite(3,LOW);
  if (a == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue1 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (b == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue2 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (c == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue3 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (d == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue4 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (e == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue5 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (f == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue6 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (g == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue7 = (analogRead(A0)>TRESHOLD);
  delayMicroseconds(standardDelay/2);
  delayMicroseconds(3*standardDelay); //1 second passed

  long result = 0;
  result = 1000000*sensorValue1 + 100000*sensorValue2 + 10000*sensorValue3
  + 1000*sensorValue4 + 100*sensorValue5 + 10*sensorValue6 + 1*sensorValue7;
  //lcd.print(result);
  PrintChar(result);
}


void PrintChar(long binary){

  switch (binary){

    case 110001:
      //code for a is 011 0001 
      lcd.write("a");
      break;
    case 110010:
      //code for b is 011 0010          
      lcd.print("b");
      break;
    case 110011:
      //code for c is 011 0011          
      lcd.print("c");
      break;
    case 110100:
      //code for d is 011 0100          
      lcd.print("d");
      break;
    case 110101:
      //code for e is 011 0101
      lcd.print("e");
      break;
    case 110110:
      //code for f is 011 0110
      lcd.print("f");
      break;
    case 110111:
      //code for g is 011 0111
      lcd.print("g");
      break;
    case 111000:
      //code for h is 011 1000
      lcd.print("h");
      break;
    case 111001:
      //code for i is 011 1001
      lcd.print("i");
      break;
    case 111010:
      //code for j is 011 1010
      lcd.print("j");
      break;
    case 111011:
      //code for k is 011 1011
      lcd.print("k");
      break;
    case 111100:
      //code for l is 011 1100
      lcd.print("l");
      break;
    case 111101:
      //code for m is 011 1101
      lcd.print("m");
      break;
    case 111110:
      //code for n is 011 1110
      lcd.print("n");
      break;
    case 111111:
      //code for o is 011 1111
      lcd.print("o");
      break;
    case 1000000:
      //code for p is 100 0000
      lcd.print("p");
      break;
    case 1000001:
      //code for q is 100 0001
      lcd.print("q");
      break;
    case 1000010:
      //code for r is 100 0010
      lcd.print("r");
      break;
    case 1000011:
      //code for s is 100 0011
      lcd.print("s");
      break;
    case 1000100:
      //code for t is 100 0100
      lcd.print("t");
      break;
    case 1000101:
      //code for u is 100 0101
      lcd.print("u");
      break;
    case 1000110:
      //code for v is 100 0110
      lcd.print("v");
      break;
    case 1000111:
      //code for w is 100 0111
      lcd.print("w");
      break;
    case 1001000:
      //code for x is 100 1000
      lcd.print("x");
      break;
    case 1001001:
      //code for y is 100 1001
      lcd.print("y");
      break;
    case 1001010:
      //code for z is 100 1010
      lcd.print("z");
      break;
    case 11000:
      lcd.print("dit gebeurt vaak");
      break;
    case 1011001:
      lcd.print("dit ook");
      break;
    case 100001:
      lcd.print("tenslotte dit nog");
      break;
    case 1011000:
      lcd.print("en dit is de laatste denk ik");
      break;
    default:
      lcd.print(binary);
      lcd.print("CAME IN DEFAULT ON PRINTCHAR");
      break;
  }
}

I want to print this output on LCD. But I'm not able to do that. Please help me out.
Circuits:
(1) VLC Circuit

(2) LCD Circuit

I combined both circuits above and made a final circuit. 
The VLC circuit is set up in which DATA is transmitted from SIMPLE LED and Capture on PHOTODIODE. And using LCD Circuit I want to display data on LCD.

user34766: Finally, got the problem. My code is working fine. I have a problem with my LCD connection. 
I write
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);

Instead of
LiquidCrystal lcd(12, 11, 4, 5, 6, 7);


user-1: There is so many problems with your code. It can be so much short.
Take WriteChar. Why mess with binary value for chars? Use char directly, just here:
void setup() {
  Serial.begin(9600);
  WriteChar('h');
  WriteChar('e');
}

void loop() {
}

void WriteChar(char c) {
  boolean b7 = c & B1000000;
  boolean b6 = c & B0100000;
  boolean b5 = c & B0010000;
  boolean b4 = c & B0001000;
  boolean b3 = c & B0000100;
  boolean b2 = c & B0000010;
  boolean b1 = c & B0000001;

  Serial.println(c);
  LightFlash(b7, b6, b5, b4, b3, b2, b1);

}

void LightFlash(boolean b7, boolean b6, boolean b5, boolean b4, boolean b3, boolean b2, boolean b1) {
  Serial.print(b7 ? "1" : "0");  
  Serial.print(b6 ? "1" : "0");  
  Serial.print(b5 ? "1" : "0");  
  Serial.print(b4 ? "1" : "0");  
  Serial.print(b3 ? "1" : "0");  
  Serial.print(b2 ? "1" : "0");  
  Serial.println(b1 ? "1" : "0");  
}

There is more simply ways to write that (using arrays and loops) but this is easier to understand. And better, pass the char directly to LightBlash.
Don't use a string when you just pass a char to a function.

34766: <p>I'm a newbie here. And sorry for my bad English first of all.</p>

<p>Right now I'm working on VLC (Visible Light Communication). I have working code, in which output is displayed on the Serial Monitor. But now I want to print this output on an LCD.</p>

<p>I made necessary changes like including the LCD library and instead of <code>Serial.print</code> I used <code>lcd.print</code>. But nothing is displayed on the LCD.</p>

<p>Here is the modified code including LCD:</p>

<pre><code>static int TRESHOLD = 500;
static unsigned int standardDelay = 13500000; //1350 is limit
// include the library code:
#include &lt;LiquidCrystal.h&gt;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 7,6,5,4);

void setup() {
  Serial.begin(9600); // 9600 bits per second
  pinMode(3,OUTPUT); //digital PWM 3 on output
  int sensorValue = 0;
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // initialize the serial communications:
}

void loop() {
  WriteChar('h');
  WriteChar('e');
  WriteChar('l');
  WriteChar('l');
  WriteChar('o');
  WriteChar('w');
  WriteChar('o');
  WriteChar('r');
  WriteChar('l');
  WriteChar('d');
}

void WriteChar(char str){
  switch (str - '0'){
    case 49:
      //code for a is 011 0001
      LightFlash(false, true, true, false, false, false, true);
      break;
    case 50:
      //code for b is 011 0010
      LightFlash(false, true, true, false, false, true, false);
      break;
    case 51:
      //code for c is 011 0011
      LightFlash(false, true, true, false, false, true, true);
      break;
    case 52:
      //code for d is 011 0100
      LightFlash(false, true, true, false, true, false, false);
      break;
    case 53:
      //code for e is 011 0101
      LightFlash(false, true, true, false, true, false, true);
      break;
    case 54:
      //code for f is 011 0110
      LightFlash(false, true, true, false, true, true, false);
      break;
    case 55:
      //code for g is 011 0111
      LightFlash(false, true, true, false, true, true, true);
      break;
    case 56:
      //code for h is 011 1000
      LightFlash(false, true, true, true, false, false, false);
      break;
    case 57:
      //code for i is 011 1001
      LightFlash(false, true, true, true, false, false, true);
      break;
    case 58:
      //code for j is 011 1010
      LightFlash(false, true, true, true, false, true, false);
      break;
    case 59:
      //code for k is 011 1011
      LightFlash(false, true, true, true, false, true, true);
      break;
    case 60:
      //code for l is 011 1100
      LightFlash(false, true, true, true, true, false, false);
      break;
    case 61:
      //code for m is 011 1101
      LightFlash(false, true, true, true, true, false, true);
      break;
    case 62:
      //code for n is 011 1110
      LightFlash(false, true, true, true, true, true, false);
      break;
    case 63:
      //code for o is 011 1111
      LightFlash(false, true, true, true, true, true, true);
      break;
    case 64:
      //code for p is 100 0000
      LightFlash(true, false, false, false, false, false, false);
      break;
    case 65:
      //code for q is 100 0001
      LightFlash(true, false, false, false, false, false, true);
      break;
    case 66:
      //code for r is 100 0010
      LightFlash(true, false, false, false, false, true, false);
      break;
    case 67:
      //code for s is 100 0011
      LightFlash(true, false, false, false, false, true, true);
      break;
    case 68:
      //code for t is 100 0100
      LightFlash(true, false, false, false, true, false, false);
      break;
    case 69:
      //code for u is 100 0101
      LightFlash(true, false, false, false, true, false, true);
      break;
    case 70:
      //code for v is 100 0110
      LightFlash(true, false, false, false, true, true, false);
      break;
    case 71:
      //code for w is 100 0111
      LightFlash(true, false, false, false, true, true, true);
      break;
    case 72:
      //code for x is 100 1000
      LightFlash(true, false, false, true, false, false, false);
      break;
    case 73:
      //code for y is 100 1001
      LightFlash(true, false, false, true, false, false, true);
      break;
    case 74:
      //code for z is 100 1010
      LightFlash(true, false, false, true, false, true, false);
      break;
    default:
      lcd.print(str - '0');
      lcd.print("CAME IN DEFAULT IN WRITECHAR");
      break;
  }
}

void LightFlash(boolean a, boolean b, boolean c, boolean d, boolean e, boolean f, boolean g){


  digitalWrite(3,LOW);
  if (a == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue1 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (b == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue2 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (c == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue3 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (d == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue4 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (e == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue5 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (f == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue6 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);

  digitalWrite(3,LOW);
  if (g == true){
    digitalWrite(3,HIGH);
  }
  delayMicroseconds(standardDelay/2);
  boolean sensorValue7 = (analogRead(A0)&gt;TRESHOLD);
  delayMicroseconds(standardDelay/2);
  delayMicroseconds(3*standardDelay); //1 second passed

  long result = 0;
  result = 1000000*sensorValue1 + 100000*sensorValue2 + 10000*sensorValue3
  + 1000*sensorValue4 + 100*sensorValue5 + 10*sensorValue6 + 1*sensorValue7;
  //lcd.print(result);
  PrintChar(result);
}


void PrintChar(long binary){

  switch (binary){

    case 110001:
      //code for a is 011 0001 
      lcd.write("a");
      break;
    case 110010:
      //code for b is 011 0010          
      lcd.print("b");
      break;
    case 110011:
      //code for c is 011 0011          
      lcd.print("c");
      break;
    case 110100:
      //code for d is 011 0100          
      lcd.print("d");
      break;
    case 110101:
      //code for e is 011 0101
      lcd.print("e");
      break;
    case 110110:
      //code for f is 011 0110
      lcd.print("f");
      break;
    case 110111:
      //code for g is 011 0111
      lcd.print("g");
      break;
    case 111000:
      //code for h is 011 1000
      lcd.print("h");
      break;
    case 111001:
      //code for i is 011 1001
      lcd.print("i");
      break;
    case 111010:
      //code for j is 011 1010
      lcd.print("j");
      break;
    case 111011:
      //code for k is 011 1011
      lcd.print("k");
      break;
    case 111100:
      //code for l is 011 1100
      lcd.print("l");
      break;
    case 111101:
      //code for m is 011 1101
      lcd.print("m");
      break;
    case 111110:
      //code for n is 011 1110
      lcd.print("n");
      break;
    case 111111:
      //code for o is 011 1111
      lcd.print("o");
      break;
    case 1000000:
      //code for p is 100 0000
      lcd.print("p");
      break;
    case 1000001:
      //code for q is 100 0001
      lcd.print("q");
      break;
    case 1000010:
      //code for r is 100 0010
      lcd.print("r");
      break;
    case 1000011:
      //code for s is 100 0011
      lcd.print("s");
      break;
    case 1000100:
      //code for t is 100 0100
      lcd.print("t");
      break;
    case 1000101:
      //code for u is 100 0101
      lcd.print("u");
      break;
    case 1000110:
      //code for v is 100 0110
      lcd.print("v");
      break;
    case 1000111:
      //code for w is 100 0111
      lcd.print("w");
      break;
    case 1001000:
      //code for x is 100 1000
      lcd.print("x");
      break;
    case 1001001:
      //code for y is 100 1001
      lcd.print("y");
      break;
    case 1001010:
      //code for z is 100 1010
      lcd.print("z");
      break;
    case 11000:
      lcd.print("dit gebeurt vaak");
      break;
    case 1011001:
      lcd.print("dit ook");
      break;
    case 100001:
      lcd.print("tenslotte dit nog");
      break;
    case 1011000:
      lcd.print("en dit is de laatste denk ik");
      break;
    default:
      lcd.print(binary);
      lcd.print("CAME IN DEFAULT ON PRINTCHAR");
      break;
  }
}
</code></pre>

<p>I want to print this output on LCD. But I'm not able to do that. Please help me out.</p>

<p>Circuits:</p>

<p>(1) VLC Circuit</p>

<p><a href="https://i.stack.imgur.com/BiFnT.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BiFnT.png" alt="VLC Circuit"></a></p>

<p>(2) LCD Circuit</p>

<p><a href="https://i.stack.imgur.com/cDJDf.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/cDJDf.png" alt="LCD Circuit"></a></p>

<p>I combined both circuits above and made a final circuit. </p>

<p>The VLC circuit is set up in which DATA is transmitted from SIMPLE LED and Capture on PHOTODIODE. And using LCD Circuit I want to display data on LCD.</p>
 34766: <p>Finally, got the problem. My code is working fine. I have a problem with my LCD connection. </p>

<p>I write</p>

<pre><code>LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
</code></pre>

<p>Instead of</p>

<pre><code>LiquidCrystal lcd(12, 11, 4, 5, 6, 7);
</code></pre>
 -1: <p>There is so many problems with your code. It can be so much short.</p>

<p>Take WriteChar. Why mess with binary value for chars? Use char directly, just here:</p>

<pre><code>void setup() {
  Serial.begin(9600);
  WriteChar('h');
  WriteChar('e');
}

void loop() {
}

void WriteChar(char c) {
  boolean b7 = c &amp; B1000000;
  boolean b6 = c &amp; B0100000;
  boolean b5 = c &amp; B0010000;
  boolean b4 = c &amp; B0001000;
  boolean b3 = c &amp; B0000100;
  boolean b2 = c &amp; B0000010;
  boolean b1 = c &amp; B0000001;

  Serial.println(c);
  LightFlash(b7, b6, b5, b4, b3, b2, b1);

}

void LightFlash(boolean b7, boolean b6, boolean b5, boolean b4, boolean b3, boolean b2, boolean b1) {
  Serial.print(b7 ? "1" : "0");  
  Serial.print(b6 ? "1" : "0");  
  Serial.print(b5 ? "1" : "0");  
  Serial.print(b4 ? "1" : "0");  
  Serial.print(b3 ? "1" : "0");  
  Serial.print(b2 ? "1" : "0");  
  Serial.println(b1 ? "1" : "0");  
}
</code></pre>

<p>There is more simply ways to write that (using arrays and loops) but this is easier to understand. And better, pass the char directly to LightBlash.</p>

<p>Don't use a string when you just pass a char to a function.</p>
