LCD WITH I2C

Hey guys.. Im having some trouble uploading this code.. which I will post down below. Its about a morse code translator. You type in the words in the serial monitor...https://www.instructables.com/id/Learning-Morse/ ..here is the link

#include <Wire.h> //libraries of the LCD with I2C
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27 // Define the address of the serial communication display
#define LED_OFF 0
#define LED_ON 1
LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, NEGATIVE);

int ledPin = 8;

char* letters[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // letters A-I
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // letters J-R
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." //letters S-Z
};

char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....",
"--...", "---..", "----."}; // numbers 0-9

int dotDelay = 200; //Dot time

void setup()
{
lcd.begin(16, 2); //Initialize the display
lcd.setBacklight(LED_OFF);
lcd.cursor();
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop()
{
char ch;
if (Serial.available()) // is there anything to be read from USB?
{
ch = Serial.read(); // read a single letter
if (ch >= 'a' && ch <= 'z')
{
flashSequence(letters[ch - 'a']);
lcd.write(ch);
delay(1500);
}
else if (ch >= 'A' && ch <= 'Z')
{
flashSequence(letters[ch - 'A']);
lcd.write(ch);
delay(1500);
}
else if (ch >= '0' && ch <= '9')
{
flashSequence(numbers[ch - '0']);
lcd.write(ch);
delay(1500);
}
else if (ch == ' ')
{
delay(dotDelay * 4); // gap between words
lcd.write(ch);
delay(1500);
}
}

}

void flashSequence(char* sequence)
{
int i = 0;
while (sequence != NULL)

  • {*
    _ flashDotOrDash(sequence*);_
    _
    i++;_
    _
    }_
    _ delay(dotDelay * 3); // gap between letters_
    _
    }_
    void flashDotOrDash(char dotOrDash)
    _
    {_
    _
    digitalWrite(ledPin, HIGH);_
    _
    if (dotOrDash == '.')_
    _
    {_
    _
    delay(dotDelay);_
    _
    }_
    _
    else // must be a -_
    _
    {_
    _ delay(dotDelay * 3);_
    _
    }_
    _
    digitalWrite(ledPin, LOW);_
    _
    delay(dotDelay); // gap between flashes*_
    * }*

Don't post screenshots of text! That is very unhelpful. When you encounter an error you'll see a button on the right side of the orange bar "Copy error messages". Click that button. Paste the error in a message here USING CODE TAGS (</> button on the toolbar). It is almost never appropriate to post screenshots but in some cases it is helpful to post images. You should attach and embed the image following these instructions:
http://forum.arduino.cc/index.php?topic=364156

Please use code tags (</> button on the toolbar) when you post code or warning/error messages. The reason is that the forum software can interpret parts of your code as markup, leading to confusion, wasted time, and a reduced chance for you to get help with your problem. This will also make it easier to read your code and to copy it to the IDE or editor. If your browser doesn't show the posting toolbar then you can just manually add the code tags:
[code]``[color=blue]// your code is here[/color]``[/code]
Using code tags and other important information is explained in the How to use this forum post. Please read it.

Please always do a Tools > Auto Format on your code before posting it. This will make it easier for you to spot bugs and make it easier for us to read. If you're using the Arduino Web Editor you will not have access to this useful tool but it's still unacceptable to post poorly formatted code. I recommend you to use the standard IDE instead.

Please remove unnecessary blank lines from your code before posting to the forum. One or two to separate code into logical sections is fine but large spaces for no reason or random blank lines just make for more scrolling when we're trying to read your code.

When your code requires a library that's not included with the Arduino IDE please always post a link (using the chain link icon on the toolbar to make it clickable) to where you downloaded that library from or if you installed it using Library Manger(Sketch > Include Library > Manage Libraries) then say so and state the full name of the library.

The error you've encountered is caused by using a different library from the one the sketch was written for. I can't remember exactly what library you need but this problem has been discussed many times already so if you google the relevant part of the error message you'll find a link to the correct library.

This is the error message

Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"

morse_with_lcd:8: error: 'NEGATIVE' was not declared in this scope

 LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, NEGATIVE);

                                                         ^

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:16:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

                   }; // numbers 0-9

                   ^

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:20:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino: In function 'void flashSequence(char*)':

C:\Users\ASUS\Documents\Arduino\morse_with_lcd\morse_with_lcd.ino:71:25: warning: NULL used in arithmetic [-Wpointer-arith]

   while (sequence[i] != NULL)

                         ^

exit status 1
'NEGATIVE' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

now here is the actual code

#include <Wire.h> //libraries of the LCD with I2C
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27  // Define the address of the serial communication display 
#define LED_OFF 0
#define LED_ON 1
LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, NEGATIVE);

int ledPin = 8;

char* letters[] = {
  ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // letters A-I
  ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // letters J-R
  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." //letters S-Z
};

char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....",
                   "--...", "---..", "----."
                  }; // numbers 0-9

int dotDelay = 200; //Dot time

void setup()
{
  lcd.begin(16, 2);              //Initialize the display
  lcd.setBacklight(LED_OFF);
  lcd.cursor();
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  char ch;
  if (Serial.available()) // is there anything to be read from USB?
  {
    ch = Serial.read(); // read a single letter
    if (ch >= 'a' && ch <= 'z')
    {
      flashSequence(letters[ch - 'a']);
      lcd.write(ch);
      delay(1500);
    }
    else if (ch >= 'A' && ch <= 'Z')
    {
      flashSequence(letters[ch - 'A']);
      lcd.write(ch);
      delay(1500);
    }
    else if (ch >= '0' && ch <= '9')
    {
      flashSequence(numbers[ch - '0']);
      lcd.write(ch);
      delay(1500);
    }
    else if (ch == ' ')
    {
      delay(dotDelay * 4); // gap between words
      lcd.write(ch);
      delay(1500);
    }
  }


}

void flashSequence(char* sequence)
{
  int i = 0;
  while (sequence[i] != NULL)
  {
    flashDotOrDash(sequence[i]);
    i++;
  }
  delay(dotDelay * 3); // gap between letters
}

void flashDotOrDash(char dotOrDash)
{
  digitalWrite(ledPin, HIGH);
  if (dotOrDash == '.')
  {
    delay(dotDelay);
  }
  else // must be a -
  {
    delay(dotDelay * 3);
  }
  digitalWrite(ledPin, LOW);
  delay(dotDelay); // gap between flashes
}

This is your third time posting about this:
http://forum.arduino.cc/index.php?topic=543595
You were already told not to cross post. Why not just add this information as a reply in the original post?

Threads merged.

Most of the messages are warnings.

But this:

LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, NEGATIVE);

probably does not match the library you are using. Maybe try using false instead of NEGATIVE or look for an example in the library folder which you can adapt.

and this:

 while (sequence[i] != NULL)

do you mean:

 while (sequence[i] != '\0')