'POSITIVE' was not declared in this scope

I have a sketch running OK on my MEGA2560 and displaying on a LCD 16x2. I opened the source in IDE and checked the code and got the error "'POSITIVE' was not declared in this scope". What programmer should I choose under Tools > Programmer for a MEGA23560? Could the wrong choice be the problem?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // forum recommendation
/*-----( Declare Variables )-----*/
int num;
//NONE

void setup()
{
  Serial.begin(9600);		// Used to type in characters
  lcd.begin(16,2);			// initialize the lcd for 16 chars 2 lines, turn on backlight

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  

//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0  
  lcd.setCursor(0,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print("Hi Arduino LCD!!");
  delay(8000);  

// Wait and then tell user they can start the Serial Monitor and type in characters to
// display. (Set Serial Monitor option to "No Line Ending")
  lcd.clear();
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Use Serial Mon");
  lcd.setCursor(0,1);
  lcd.print("Type to display"); 

   lcd.clear();
   num = 0;
   while (num < 256)
   {
      lcd.write(num);  
      num++;
   }

}

void loop() 
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
		num = 0;
      // read all the available characters
      while (Serial.available() > 0)
		{
			if (num > 15)
			{
				lcd.setCursor(0,1);
				num = 0;
			}
		// display each character to the LCD
			lcd.write(Serial.read());
			num++;
      }
    }
  }

}/* --(end main loop )-- */


/* ( THE END ) */

That's easy, you haven't declared 'POSITIVE' anywhere in your code. You might have forgotten to include the declaration somewhere from previous versions of the sketch?

#include <LiquidCrystal_I2C.h>

There are several libraries with this name and differing syntax. Which one are you using? Which one is the posted sketch based upon?

You may be better off using the hd44780 library for this display. It is available through the library manager, and will auto configure for any pin arrangement between the backpack controller chip and display. There is no confusion or conflict between this library and any others.

+1 for the hd44780 library.

hcccs:
I have a sketch running OK on my MEGA2560 and displaying on a LCD 16x2. I opened the source in IDE and checked the code and got the error "'POSITIVE' was not declared in this scope". What programmer should I choose under Tools > Programmer for a MEGA23560? Could the wrong choice be the problem?

The type of programmer used to flash the code can not cause this issue.

I'm not sure what you are meaning when you say "... running OK on my MEGA2560..."
Were you building your code with something other than the Arduino IDE?

The cause of that error is the sketch code is using a constructor for a different library than the actual library being used.
That can happen for several reasons. Here are the most common:

  • The wrong library was installed - It doesn't match the library the code was written for.
  • Multiple libraries with a LiquidCrystal_I2C.h header were installed. The IDE is picking a different library than the code was written for.

My suggestion would be to use the hd44780 library with the hd44780_I2Cexp i/o class.
First thing to do once you install it is run the included diagnostic sketch, I2CexpDiag, to check that everything is working properly.

--- bill

BTW, the hd44780 library includes additional capabilities like line wrapping that you might find useful.
See the included documentation, or the github page for information on the available API functions.
There are also several hd44780_I2Cexp i/o class examples that demonstrate how to use the library and its functions.

--- bill

bperrybap

Installed the hd44780 library and it works fine. Remains to explore the various functions in it.