No me anda el LCD.h en mi codigo libreria ya incluida

Hola, que tal tengo un problema con mi codigo, me tira el erorr en LCD.h, la libreria ya esta incluida, que es LiquidCrystal_I2C-1.1.2

Dejo mi codigo para ver si me pueden ayudar


#include <SoftwareSerial.h> //Libreria bluetooth

//Librerias Display LCD
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <LCD.h>


#define I2C_ADDR 0x27 //Bus I2C

LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7); //Se define la variable para el Display LCD

//int sensorMetal = 3; //Sensor de metales
//int bocina = 2; //Buzzer

//Rueda 1
int motor1pin1 = 13;
int motor1pin2 = 12;
int enableA = 11;

//Rueda 2
int motor2pin1 = 8;
int motor2pin2 = 9;
int enableB = 10;

//Rueda 4
int motor4pin1 = 5;
int motor4pin2 = 6;
int enableA2 = 7;

//Rueda 3
int motor3pin1 = 3;
int motor3pin2 = 4;
int enableB2 = 2;

void setup()
{
  pinMode(motor1pin1, OUTPUT);
  pinMode(motor1pin2, OUTPUT);
  pinMode(motor2pin1, OUTPUT);
  pinMode(motor2pin2, OUTPUT);
  pinMode(motor3pin1, OUTPUT);
  pinMode(motor3pin2, OUTPUT);
  pinMode(motor4pin1, OUTPUT);
  pinMode(motor4pin2, OUTPUT);
  //pinMode(sensorMetal, INPUT);
  //pinMode(bocina, OUTPUT);

  lcd.begin (16,2);    // Inicializar el display con 16 columnas y 2 filas
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
  
  Serial.begin(9600); //Inicializar el puerto Serial a 9600 Baudios
  Serial2.begin(9600); //Inicializar el puerto nuevo Serial_2 a 9600 Baudios
}

void loop()
{
  //Movilidad del vehiculo
  char direccion = ' ';
  if(Serial2.available() > 0)
  {
    direccion = Serial2.read();
    delay(10);
    Serial.println(direccion);
  }
  if(direccion == 'W') //El vehiculo avanza
  {
    Avanzar();
  }
  if(direccion == 'S') //El vehiculo retocede
  {
    Retroceder();
  }
  if(direccion == 'A') //El vehiculo gira a la izquierda
  {
    GiroIzquierda();
  }
  if(direccion == 'D') //El vehiculo gira a la derecha
  {
    GiroDerecha();
  }
  if(direccion == 'X') //Detiene el vehiculo
  {
    Neutro();
  }
 if(direccion == 'C') //Enciende alarma
  {
    Alarma(bocina);
  }

  //Sensor detector de metales
  delay(200);
  int estado = digitalRead(sensorMetal);
  Serial.println(estado); 
  if (estado == HIGH)
  {
    lcd.clear();
    lcd.setCursor(0,0); // Se situa el cursor en la columna 0 fila 0
    lcd.print("NO HAY METALES"); // Se escribe en la fila 0
    Serial.println("NO HAY METALES");
    
    delay(100);
  }
  else
  {
    lcd.clear();
    lcd.setCursor(0,0); // Se situa el cursor en la columna 0 fila 0
    lcd.print("METAL DETECTADO"); // Se escribe en la fila 0
    Serial.println("METAL DETECTADO");
    Alarma(bocina);
    delay(100);
  }
}

void Avanzar() //Funcion que hace avanzar el vehiculo
{
  analogWrite(enableA, 255);
  digitalWrite(motor1pin1, LOW);
  digitalWrite(motor1pin2, HIGH);

  analogWrite(enableB, 255);
  digitalWrite(motor2pin1, HIGH);
  digitalWrite(motor2pin2, LOW);

  analogWrite(enableA2, 225);
  digitalWrite(motor3pin1, HIGH);
  digitalWrite(motor3pin2, LOW);

  analogWrite(enableB2, 225);
  digitalWrite(motor4pin1, HIGH);
  digitalWrite(motor4pin2, LOW);

  delay(100);
}

void Retroceder() //Funcion que hace retroceder el vehiculo
{
  analogWrite(enableA, 255);
  digitalWrite(motor1pin1, HIGH);
  digitalWrite(motor1pin2, LOW);

  analogWrite(enableB, 255);
  digitalWrite(motor2pin1, LOW);
  digitalWrite(motor2pin2, HIGH);

  analogWrite(enableB2, 255);
  digitalWrite(motor3pin1, LOW);
  digitalWrite(motor3pin2, HIGH);

  analogWrite(enableA2, 255);
  digitalWrite(motor4pin1, LOW);
  digitalWrite(motor4pin2, HIGH);

  delay(100);
}

void GiroDerecha() //Funcion que gira el vehiculo a la derecha
{
  analogWrite(enableA, 128);
  digitalWrite(motor1pin1, HIGH);
  digitalWrite(motor1pin2, LOW);

  analogWrite(enableB, 128);
  digitalWrite(motor2pin1, LOW);
  digitalWrite(motor2pin2, HIGH);

  analogWrite(enableB2, 128);
  digitalWrite(motor3pin1, HIGH);
  digitalWrite(motor3pin2, LOW);

  analogWrite(enableA2, 128);
  digitalWrite(motor4pin1, HIGH);
  digitalWrite(motor4pin2, LOW);
  
  delay(100);
}

void GiroIzquierda() //Funcion que gira el vehiculo a la izquierda
{
  analogWrite(enableA, 128);
  digitalWrite(motor1pin1, LOW);
  digitalWrite(motor1pin2, HIGH);

  analogWrite(enableB, 128);
  digitalWrite(motor2pin1, HIGH);
  digitalWrite(motor2pin2, LOW);

  analogWrite(enableB2, 128);
  digitalWrite(motor3pin1, HIGH);
  digitalWrite(motor3pin2, LOW);

  analogWrite(enableA2, 128);
  digitalWrite(motor4pin1, HIGH);
  digitalWrite(motor4pin2, LOW);
  
  delay(100);
}

void Neutro() //Funcion que detiene el vehiculo
{
  analogWrite(enableA, 0);
  digitalWrite(motor1pin1, LOW);
  digitalWrite(motor1pin2, LOW);

  analogWrite(enableB, 0);
  digitalWrite(motor2pin1, LOW);
  digitalWrite(motor2pin2, LOW);

  analogWrite(enableB2, 0);
  digitalWrite(motor3pin1, LOW);
  digitalWrite(motor3pin2, LOW);

  analogWrite(enableA2, 0);
  digitalWrite(motor4pin1, LOW);
  digitalWrite(motor4pin2, LOW);

  delay(100);
}

void Alarma(int buzzer) //Funcion que enciende alarma
{
  digitalWrite(buzzer, HIGH);   
  delay(500);                    
  digitalWrite(buzzer, LOW);   
  delay(500);
}

void Luces(int ledDelantero1, int ledDelantero2, int ledTrasero1, int ledTrasero2, char parametro)
{
  if(parametro == 'R')
  {
    digitalWrite(ledDelantero1, HIGH);
    digitalWrite(ledDelantero2, HIGH);
    digitalWrite(ledTrasero1, HIGH); 
    digitalWrite(ledTrasero2, HIGH); 
  }
  if(parametro == 'R')
  {
    digitalWrite(ledDelantero1, HIGH);
    digitalWrite(ledDelantero2, HIGH);
    digitalWrite(ledTrasero1, LOW);  
    digitalWrite(ledTrasero2, LOW);  
  }
  if(parametro == 'T')
  {
    digitalWrite(ledDelantero1, LOW);
    digitalWrite(ledDelantero2, LOW);
    digitalWrite(ledTrasero1, HIGH);
    digitalWrite(ledTrasero2, HIGH);   
  }
  if(parametro == 'Y')
  {
    digitalWrite(ledDelantero1, LOW);
    digitalWrite(ledDelantero2, LOW);
    digitalWrite(ledTrasero1, LOW);
    digitalWrite(ledTrasero2, LOW);   
  }
}

Ahi cosas que es del auto que estoy haciendo, deberia detectar metales cuando pasa arriba de ellos y mostrar en el display i2c se detecto metales
pero culpa de la libreria no puede ser
Gracias

Qué error?

¿La pantalla es I2C o de las otras?, porque en tu codigo estas mezclando los dos tipos.
Si es I2C, quita la linea:

#include <LCD.h>

Y definesela bien a la libreria LiquidCrystal_I2C.h:

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

Y luego
en el setup solo:

lcd.init(); 
1 Like

Sigue el consejo de @gonpezzi y quita esa línea.
Luego recompila y postea el error como si fuera código.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.