Error al cambiar codigo a liquidcrystal _I2C. (resuelto)

Hola me llamo Juan,necesito ayuda con este código pues quiero que funcione con I2C y no con el liquid criytal conveccional el código das las dos opciones pero yo quiero la de I2C, me estoy volviendo loco e desactivado el conveccional y me da este error.

BombPro.ino:18:32: error: invalid conversion from 'int' to 't_backlighPol' [-fpermissive]
In file included from BombPro.ino:3:0:
C:\Users\jj\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:53:4: error: initializing argument 3 of 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)' [-fpermissive]
LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);
^
Error de compilación

gracias por anticipado.

y este es el código:

#include <Wire.h> 
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
//#include <LiquidCrystal.h>
/*





LiquidCrystal_I2C lcd(0x38,16,2);
//LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
{
'1','2','3','a'                          }
,
{
'4','5','6','b'                          }
,
{
'7','8','9','c'                          }
,
{
'*','0','#','d'                          }
};

byte rowPins[ROWS] = {
A4, A5, 13, 12}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {
A0, A1, A2, A3
}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


char enteredText[8];
byte time[4];
byte refresh=0;//1 if is refreshed once time...
char password[8];
int key=-1;
char lastKey;
char var;
boolean passwordEnable=false;

//Buttons for lcd shield
char BT_RIGHT = '4';
char BT_UP = 'a';
char BT_DOWN = 'b';
char BT_LEFT = '6';
char BT_SEL = 'd';   // Ok key  
char BT_CANCEL = 'c';
char BT_DEFUSER = 'x';   // not implemented

//leds

const int REDLED = 11;
const int GREENLED = 10;
//const int BLUELED = 12;
//mosfet
boolean mosfetEnable = false;
const int mosfet = 9;
//IS VERY IMPORTANT THAT YOU TEST THIS TIME. BY DEFAULT IS IN 1 SEC. THAT IS NOT TOO MUCH. SO TEST IT!
const int MOSFET_TIME = 5000;

//TIME INTS
int GAMEHOURS = 0;
int GAMEMINUTES = 45;
int BOMBMINUTES = 4;
int ACTIVATESECONDS = 5;

boolean endGame = false;

boolean sdStatus = false; //search and destroy game enable used in config
boolean saStatus = false; //same but SAbotaghe
boolean doStatus = false; //for DEmolition
boolean start = true;
boolean defuseando;
boolean cancelando;
// SOUND TONES
boolean soundEnable = true;
int tonepin = 8; // Pin 13 for the sound
int tonoPitido = 3000;
int tonoAlarma1 = 700;
int tonoAlarma2 = 2600;
int tonoActivada = 1330;
int errorTone = 100;

unsigned long iTime;
unsigned long timeCalcVar;
unsigned long redTime;
unsigned long greenTime;
unsigned long iZoneTime;//initial time for zone
byte team=0; // 0 = neutral, 1 = green team, 2 = red team

void setup(){
lcd.begin(16, 2);
Serial.begin(9600);
//  lcd.init();                      // initialize the lcd 
//  lcd.backlight();
lcd.setCursor(2,0);
tone(tonepin,2400,30);
lcd.print("  ");// you can add your team name or someting cool
lcd.setCursor(0,1);
lcd.print("   ");// you can add your team name or someting cool
keypad.setHoldTime(50);
keypad.setDebounceTime(50);
keypad.addEventListener(keypadEvent);
delay(2000);
pinMode(GREENLED, OUTPUT);     
//  pinMode(8, OUTPUT);  
//  digitalWrite(8,HIGH);
pinMode(REDLED, OUTPUT); 
pinMode(mosfet, OUTPUT);  
// CONFIGURE THE BARS OF PROGRESS BAR
byte bar1[8] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
};
byte bar2[8] = {
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
};
byte bar3[8] = {
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
};
byte bar4[8] = {
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
};
byte bar5[8] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
};
byte up[8] = {
B00000,
B00100,
B01110,
B11111,
B11111,
B00000,
B00000,
};

byte down[8] = {
B00000,
B00000,
B11111,
B11111,
B01110,
B00100,
B00000,
};
lcd.createChar(0,bar1);
lcd.createChar(1,bar2);
lcd.createChar(2,bar3);
lcd.createChar(3,bar4);
lcd.createChar(4,bar5);
lcd.createChar(5,up);
lcd.createChar(6,down);
}

void loop(){
menuPrincipal();
}
void keypadEvent(KeypadEvent key){
switch (keypad.getState()){
case PRESSED:
  switch (key){

  }
break;
case RELEASED:
  switch (key){
     case 'd': defuseando= false;
     //Serial.println("d Releases");
     break;
     case 'c': cancelando=false;
     //Serial.println("c Releases");
     break;
  }
break;
case HOLD:
  switch (key){
    case 'd': defuseando= true;
    //Serial.println("d hold");
    break;
    case 'c': cancelando=true;
    //Serial.println("c hold");
    break;
  }
break;
}
}

void disarmedSplash(){
endGame = false;
digitalWrite(REDLED, LOW); 
digitalWrite(GREENLED, LOW);
if(sdStatus || saStatus){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("A");
lcd.setCursor(2,1);
lcd.print("  GANA");
digitalWrite(GREENLED, HIGH);  
delay(5000);
digitalWrite(GREENLED, LOW); 
}
//end code
lcd.clear();
lcd.print("REPETIMOS?");
lcd.setCursor(0,1);
lcd.print("A : SI B : NO");
digitalWrite(REDLED, LOW);  
digitalWrite(GREENLED, LOW); 
while(1)
{
var = keypad.waitForKey();
if(var == 'a' ){
  tone(tonepin,2400,30);
  //We have two options, search & destroy and sabotaje play again options so!
  if(sdStatus){
    startGameCount();
    search();
  }
  if(saStatus){
    saStatus=true;
    startGameCount();
    start=true; //to set iTime to actual millis() :D
    sabotage();
  }
}  
if(var == 'b' ){
  tone(tonepin,2400,30);
  menuPrincipal();
  break;
}  
} 
}

void explodeSplash(){
digitalWrite(REDLED, LOW);  
digitalWrite(GREENLED, LOW); 
cls();
delay(100);
endGame = false;
lcd.setCursor(1,0);
lcd.print(" GANAN");
lcd.setCursor(4,1);
lcd.print("GAME OVER");
for(int i = 200; i>0; i--)// this is the ultra hi definition explosion sound xD
{
tone(tonepin,i);
delay(20);
}
noTone(tonepin);
if(mosfetEnable){
activateMosfet(); 
}
delay(5000);
cls();

//end code
lcd.print("REPETIMOS?");
lcd.setCursor(0,1);
lcd.print("A : SI B : NO");
while(1)
{
var = keypad.waitForKey();
if(var == 'a' ){
  tone(tonepin,2400,30);
  //We have two options, search & destroy and sabotaje play again options so!
  if(sdStatus){
    startGameCount();
    search();
  }
  if(saStatus){
    saStatus=true;
    startGameCount();
    start=true; //to set iTime to actual millis() :D
    sabotage();
  }
}  
if(var == 'b' ){
  tone(tonepin,2400,30);
  menuPrincipal();

  break;
}  
} 
}
i2

No te va a contestar nadie,ya lu puse antes y me han borrado el post.

Y que libreria LiquidCrystal_I2C.h estas usando, porque no pones el link?

Estas seguro de la dirección i2c? Corriste el scanner i2c?

Sigo buscando y encuentro este ejemplo simple, pruébalo a ver
Como verás tiene dirección 0x27 y no 0x38 como tu has puesto
Prueba y me cuentas.

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

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
	// initialize the LCD
	lcd.begin();
}

void loop()
{
	bool blinking = true;
	lcd.cursor();

	while (1) {
		if (blinking) {
			lcd.clear();
			lcd.print("No cursor blink");
			lcd.noBlink();
			blinking = false;
		} else {
			lcd.clear();
			lcd.print("Cursor blink");
			lcd.blink();
			blinking = true;
		}
		delay(4000);
	}
}

Gracias por contestar voy a probar, yo estoy usando esta librería,LiquidCrystal_V1.2.1 hay varias pero me inclinado por esta no se si será la mas adecuada.

Prueba a ver algun ejemplo si hay una carpeta examples en el directorio donde tienes la libreria,porque parece un error en los parametros que se le pasan al instanciar el objeto lcd,en algunas librerias lo he visto de manera diferente :

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN     13

LiquidCrystal_I2C lcd(0x27);  // Set the LCD I2C address

//LiquidCrystal_I2C lcd(0x27, BACKLIGHT_PIN, POSITIVE);
// Esta si se quiere controlar backlight
void setup()
{

  // Switch on the backlight
  //pinMode ( BACKLIGHT_PIN, OUTPUT );
  //digitalWrite ( BACKLIGHT_PIN, HIGH );
  
  lcd.begin(16,2);               // initialize the lcd 
}

,algunas librerias necesitan tambien la libreria original ( LiquidCristal)....por eso un enlace a la libreria exacta que usas iria bien.

Cambia el nombre de la carpeta de la libreria LiquidCrystal_i2c . Se llama igual que la LiquidCrystal normal, y eso da lugar a errores. Llámala LiquidCrystal_i2c

Gracias una vez mas por vuestra colaboración,e resuelto algo por decirlo de alguna manera,ahora me funciona bien este código no se ni como lo hice pero funciona,pero ahora tengo otro código que no me funciona ,pero este lleva liquidcrystal normal......¿no hay una librería de liquidCrystal que pueda funcionar tanto para i2c como la conveccional? o todo depende de cada código?

Es que son cosas distintas. A cada cosa lo suyo.

Gracias por reporte carmeloco.