Problema con librería LiquidCrystal (SOLUCIONADO)

Bueeeeeno, ya vuelvo a estar aquí dando la vara. Esta vez me he liado con algo más serio y no se ver donde está el problema. La cosa va de que el sensor de ultrasonidos enciende leds a medida que se acerca el obstáculo, al mismo tiempo que marca la distancia en una pantalla LCD.
Me da problemas con el codigo, pero no he sabido localizar el fallo. Adjunto código:

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
 
// Pines a los que están conectados el "Trig" y "Echo" del sensor de ultrasonidos
#define trigPin 7
#define echoPin 6
 
// Pines a los que están conectados los LED
#define led 13
#define led2 12
#define led3 11
#define led4 10
#define led5 9
#define led6 8
 
// Pin al que conectamos el buzzer
#define buzzer 3
 
// Conexiones de la pantalla LCD al adaptador
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
 
int sound = 250;
 
void setup() {
	// Inicialimos el Serial, sensor de ultrasonidos, leds y buzzer (zumbador)
	Serial.begin (9600);
	pinMode(trigPin, OUTPUT);
	pinMode(echoPin, INPUT);
	pinMode(led, OUTPUT);
	pinMode(led2, OUTPUT);
	pinMode(led3, OUTPUT);
	pinMode(led4, OUTPUT);
	pinMode(led5, OUTPUT);
	pinMode(led6, OUTPUT);
	pinMode(buzzer, OUTPUT);
 
 
	// Inicializamos la pantalla LCD
	lcd.begin(16,2);
//	lcd.noBacklight();
 
	// Situamos el cursor en la primera casilla de la primera fila y escribimos un texto
	lcd.setCursor(0, 0);
	lcd.print("tecnogame.org");
}
 
void loop() {
	long duration, distance;
	digitalWrite(trigPin, LOW); 
	delayMicroseconds(2);
	digitalWrite(trigPin, HIGH);
	delayMicroseconds(10);
	digitalWrite(trigPin, LOW);
	duration = pulseIn(echoPin, HIGH);		// Recogemos la duración entre los pulsos recibidos por el "echo"
	distance = (duration/2) / 29.1;			// Calculamos la distancia al obstáculo según la duración entre los pulsos recibidos
 
	// Limpiamos la segunda linea de la pantalla LCD
	for(int i = 0; i < 16; i++){
	lcd.setCursor(i, 1);
	lcd.print(" ");
	}
 
	// Esta serie de ifs sirven para encender unos led y establecer unos tonos para el zumbador según la distancia al obstáculo
	if (distance <= 100) {
		digitalWrite(led, HIGH);
		sound = 250;
	}else{
		digitalWrite(led,LOW);
	}
 
	if (distance < 83) {
		digitalWrite(led2, HIGH);
		sound = 260;
	}else{
		digitalWrite(led2, LOW);
	}
 
	if (distance < 66) {
		digitalWrite(led3, HIGH);
		sound = 270;
	}else{
		digitalWrite(led3, LOW);
	}
 
	if (distance < 49) {
		digitalWrite(led4, HIGH);
		sound = 280;
	}else{
		digitalWrite(led4,LOW);
	}
 
	if (distance < 32) {
		digitalWrite(led5, HIGH);
		sound = 290;
	}else{
		digitalWrite(led5,LOW);
	}
 
	if (distance < 15) {
		digitalWrite(led6, HIGH);
		sound = 300;
	}else{
		digitalWrite(led6,LOW);
	}
 
	// En caso de que la distancia sea mayor que 1 metro (100 cm) o menor que 2 cm, indicamos que "no hay obstáculos"
	if (distance > 100 || distance <= 2){
		Serial.println("Sin obstáculos");
 
		lcd.setCursor(0, 1);
		lcd.print("Sin obstaculos");  
 
		noTone(buzzer);
	}else{
	// En caso de que se encuentre en ese rango mostramos la distancia al obstáculo en centímetros y reproducimos el zumbido oportuno
		Serial.print(distance);
		Serial.println(" cm");
 
		lcd.setCursor(0, 1);
		lcd.print(int(distance));  
		lcd.setCursor(2, 1);
		lcd.print(" cm");
 
		tone(buzzer, sound);   
	}
 
	delay(200);
}

Y el fallo que me da…

Arduino:1.6.1 (Windows 7), Tarja: "Arduino Uno"

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_V1.2.1\LCD.cpp.o:C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_V1.2.1/LCD.h:444: first defined here

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_I2C\LCD.cpp.o: In function `LCD::write(unsigned char)':

C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_I2C/LCD.cpp:344: multiple definition of `LCD::cursor()'

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_V1.2.1\LCD.cpp.o:C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_V1.2.1/LCD.h:444: first defined here

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_I2C\LCD.cpp.o: In function `LCD::write(unsigned char)':

C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_I2C/LCD.cpp:344: multiple definition of `LCD::noBlink()'

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_V1.2.1\LCD.cpp.o:C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_V1.2.1/LCD.h:444: first defined here

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_I2C\LCD.cpp.o: In function `LCD::write(unsigned char)':

C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_I2C/LCD.cpp:344: multiple definition of `LCD::blink()'

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_V1.2.1\LCD.cpp.o:C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_V1.2.1/LCD.h:444: first defined here

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_I2C\LCD.cpp.o: In function `LCD::write(unsigned char)':

C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_I2C/LCD.cpp:344: multiple definition of `LCD::scrollDisplayLeft()'

........ Y sigue un motón de línias como estas..................... hasta llegar al final

collect2.exe: error: ld returned 1 exit status

Error compilant.

Me abruma tanto error cuando me he limitado a copiar y pegar el skech original…
Alguna pista para saber que pasa?

Gracias por la ayuda

A mi me compila sin problemas con el IDE 1.6.2

Arfff... Viendo que la versión de IDE Arduino que tengo parece que solo da problemas, he eliminado la versión y he comprado la versión 1.6.2. La he pagado, me envían un correo conforme han recibido el pago, pero no me da ninguna pista para descargar la nueva versión. ¿Alguien tiene idea de por donde se descarga y cómo?

Gracias

COMPRADO? quien te lo vendió?
Si se descarga gratis de www.arduino.cc acà el link

Vaya, pués sí, solo me fijé en el DONATE... Bueno, mira, por 3$... Ya lo descargo y digo algo...

Has hecho una donación. La descarga es gratis.

Vale, descrrgado y reinstalado. Lo he vuelto a probar, sin tocar nada, y sigue el motón de errores.

A ver, parece que da el mismo tren de errores una y otra vez. ¿Alguien me puede indicar que significa esto?

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_V1.2.1\LCD.cpp.o:C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_V1.2.1/LCD.h:444: first defined here

C:\Users\Jaume\AppData\Local\Temp\build5255736453804989006.tmp\LiquidCrystal_I2C\LCD.cpp.o: In function `LCD::write(unsigned char)':

C:\Users\Jaume\Desktop\Documents\Arduino\libraries\LiquidCrystal_I2C/LCD.cpp:344: multiple definition of `LCD::cursor()'

Pienso que si logro descifrar este criptograma, podré ver un poco de luz al final del túnel...

¿Alguna sugerencia?

Gracias por la ayuda

Sí, carmeloco, sí he donado, es que yo soy así, jajajajajjajajaaa

DONADO NO ES COMPRADO y lo digo con Mayúsculas porque gracias a Dios nuestro idioma es bastante claro para entendernos.

Bueno, que susto me has dado.

Vuelve a instalar la librería liquid cristal i2c.

Link de la libreria:

https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip

Por cierto, yo también he hecho una donación, pero siendo consciente de ello, jajajaja

Sí, Surbyte, tienes toda la razón, pero al fijarme mal y creer que la única opción era "donando" (error de apreciación mia, he pensado que era un eufemismo de "pagar". Perdón...

Carmeloco, esta era la librería que tenía, pero la he vuelto a copiar y persiste el error… Y sobre la donación, no me sabe mal, ya está bien por el curro…

Pues no se que decirte, yo uso esa misma y me compila bien. ¿La has instalado en la carpeta de usuario? ¿Que nombre le has dado ala carpeta?

A ver, el nuevo IDE Arduino está instalado correctamente (creo), en la instalación por defecto. He probado otros skech, que los compila correctamente, y sigue compilando correctamente, es solo en este...

Al final dice: "collect2.exe: error: ld returned 1 exit status" es una pista?

El problema debe rondar todo aquello que se refiere a la pantalla LCD. He mirado otros sketch en que se utiliza la pantalla y me esta dando los mismos errores. Pero lo más fuerte es que algunos de ellos funcionaban…

No se si tendrá algo que ver con todos estos errores, pero en los archivos .ino, específicos de Arduino, no aparece el símbolo, si no que es como si no tuviera un programa asignado. Pero los abre correctamente con Arduino al clicar sobre los archivos…

Ya ando loco…

Eso no es importante. A mi también me salen así con windows 8.1. Insisto, vuelve a descargar la librería y re-instálala. A mi una vez se me degradó una librería instalada.

Ya lo he hecho… y nada…

Bueno, vamos acotando el problema. Tengo una versión portable en un pendrive, que daba el mismo problema en el ordenador. He probado de compilar el sketch maldito con este soporte en otro ordenador, y lo carga perfectamente. Es decir, que el problema está en el ordenador. He desactivado el antivirus y tampoco funciona.

¿Alguien conoce si hay programas o utilidades o ves a saber qué, que pueda interferir en el IDE de Arduino? ¿Alguna incompatibilidad conocida? Cabe decir que hasta no hace mucho (una semana o dos) no me daba problemas y no recuerdo haber instalado nada, fuera de las pesadas actualizaciones de Windows, para que de una pista al respecto...

¿Alguna sugerencia?

Gracias por la ayuda

Bueno, solucionado otro capítulo de "Cuarto milenio". Había librerías en la biblioteca que entraban en conflicto.
Explico exactamente la solución, por si sirve de ayuda a algún otro, y después haré un par de preguntas.
En la biblioteca tenía las siguientes librerías, referidas todas ellas a la pantalla LCD:

*** LiquidCrystal_V1.2.1***
LiquidCrystal
LiquidCrystal_I2C

Al ver el gran montón de fallos que daba, refiriéndose todos ellos a la raíz misma del ordenador, y siguiendo el consejo de Surbyte de “pelearlo”, se encendió la bombilla (¿o debería decir el Led?) en algún rincón del cerebro, y se me ocurrió que talvez hubiera un problema de conflictos. Entonces eliminé (guardé en el escritorio) los dos archivos más antiguos (LiquidCrystal_V1.2.1 y
LiquidCrystal) y probé... FUNCIONÓ TODO PERFECTAMENTE... Era un problema de compatibilidad (lo que no entiendo es por qué con el portable en otro ordenador funciona y en mi ordenador no, si ambos tienen los mismos archivos...).

Bueno, acabado el sketch construido físicamente el proyecto (que funciona perfectamente), he vuelto a colocar los dos archivos en la biblioteca, pero sin cerrar el sketch. He modificado algunos puntos, guardado, cargado, etc, y todo perfecto.

Una vez cerrado el sketch, se me ha ocurrido volver a abrirlo y compilarlo de nuevo, y ha vuelto a dar el mismo error, lo que confirma, si lugar a dudas, que el problema lo daba alguno de los archivos, o los dos: A base de probar, eliminar librerías, cargar el sketch, volver a probar, etc., he aislado el problema. La causante es la librería “LiquidCrystal_V1.2.1”. Lo que desconozco es la cusa; no se si es antigua, incompatible o qué.

Bueno, y ahora las preguntas: ¿Puedo eliminar definitivamente esta librería? ¿Servirán únicamente las dos librerías que no dan problema de compatibilidad) ¿Por qué funciona con portable y no en el ordenador, si tienen las mismas librerías? ¿Tiene sentido todo esto?

Gracias por la ayuda y, sobre todo, por la paciencia...

Gracias y saludos