Problemas con la pantalla lcd de arduino

Hola buenas,
tengo un problema con mi display, el display cuando lo enciendo me funciona correctamente pero una vez que pulso un pulsador para que me saque un dato en el, me saca caracteres raros y conforme pulso me salen cosas raras y a demas de eso lo que pone se suele correr un espacio y asi… aqui os dejo el programa

#include <Wire.h>
#include <ClosedCube_OPT3001.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // ( RS, EN, d4, d5, d6, d7)

ClosedCube_OPT3001 opt3001_1,opt3001_2,opt3001_3; //Le asignamos la libreia a los diferentes sensores aqui definidos.
float nuevo;

void setup()
{
pinMode (13,INPUT);
pinMode (6,OUTPUT);
Serial.begin(9600);

opt3001_1.begin(0x44);
opt3001_2.begin(0x45);
opt3001_3.begin(0x46);
Serial.print(“OPT3001 Manufacturer ID”);
Serial.println(opt3001_1.readManufacturerID());
Serial.print(“OPT3001 ID del dispositivo”);
Serial.println(opt3001_1.readDeviceID());

configureSensor_1();
Serial.println(“Configuracion realizada”);
Serial.println("-------------");
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.write(" Sensor de “);
lcd.setCursor(0,1);
lcd.write(” Luminosidad ");
}

void loop()
{if (digitalRead (13)== 1){
delay(100);
OPT3001 result = opt3001_1.readResult(); //Lee lo que recibe del sensor 1.
printResult(“OPT3001”, result); //Manda el dato a la funcion printResult.
delay(500);
}
}

void configureSensor_1() {
OPT3001_Config newConfig; //Le cambiamos el nombre a “newConfig”

newConfig.RangeNumber = B1100; //Aqui configuramos el Sensor 1 con los parámetros deseados.
newConfig.ConvertionTime = B0;
newConfig.Latch = B1;
newConfig.ModeOfConversionOperation = B11;

OPT3001_ErrorCode errorConfig = opt3001_1.writeConfig(newConfig);
if (errorConfig != NO_ERROR)
printError(“OPT3001 configuration”, errorConfig); //En caso de tener un error, nos irá a print error y hay nor marcará la causa.
else {
OPT3001_Config sensorConfig = opt3001_1.readConfig(); //Si no hay errores, nos sacara los datos de configuración.
Serial.println(“OPT3001 Current Config:”);
Serial.println("------------------------------");

Serial.print(“Conversion ready (R):”);
Serial.println(sensorConfig.ConversionReady,HEX);

Serial.print(“Conversion time (R/W):”);
Serial.println(sensorConfig.ConvertionTime, HEX);

Serial.print(“Fault count field (R/W):”);
Serial.println(sensorConfig.FaultCount, HEX);

Serial.print(“Flag high field (R-only):”);
Serial.println(sensorConfig.FlagHigh, HEX);

Serial.print(“Flag low field (R-only):”);
Serial.println(sensorConfig.FlagLow, HEX);

Serial.print(“Latch field (R/W):”);
Serial.println(sensorConfig.Latch, HEX);

Serial.print(“Mask exponent field (R/W):”);
Serial.println(sensorConfig.MaskExponent, HEX);

Serial.print(“Mode of conversion operation (R/W):”);
Serial.println(sensorConfig.ModeOfConversionOperation, HEX);

Serial.print(“Polarity field (R/W):”);
Serial.println(sensorConfig.Polarity, HEX);

Serial.print(“Overflow flag (R-only):”);
Serial.println(sensorConfig.OverflowFlag, HEX);

Serial.print(“Range number (R/W):”);
Serial.println(sensorConfig.RangeNumber, HEX);

Serial.println("------------------------------");
}

}

void printResult(String text, OPT3001 result) {
//if (digitalRead (13)== 1){

Serial.print(text);
Serial.print(": “);
Serial.print(result.lux);
Serial.println(” lux");
float nuevo = result.lux; //le cabiamos el nombre a la variable result.lux a nuevo
nuevo = nuevo +1;
Serial.println(" “);
Serial.print(nuevo);
Serial.println(” luxen");
if (nuevo > 20 ) { //si Los lux de sensor son superiores a 20, se enciende el led de la salida 8
digitalWrite (6, HIGH);
Serial.println("---------------------CORRECTA-------------------------");
lcd.clear();
lcd.setCursor(0,0);
lcd.write(" SENSOR 1:");
lcd.setCursor(0,1);
lcd.write(" CORRECTO");
delay(3000);
digitalWrite (6, LOW);
lcd.clear();
}
else
{
digitalWrite (6, LOW);
Serial.println("---------------------INCORRECTA-------------------------");
lcd.clear();
lcd.setCursor(0,0);
lcd.write(" SENSOR 1 “);
lcd.setCursor(0,1);
lcd.write(” INCORRECTO");
delay(3000);
lcd.clear();

}
//

}

void printError(String text, OPT3001_ErrorCode error) { //Nos enseñara que tipo de error tenemos, en caso de tenerlo.
Serial.print(text);
Serial.print(": [ERROR] Code #");
Serial.println(error);
}

De haberte tomado la molestia de leer las normas del foro, este mensaje lo hubieras posteado bien, tanto en el lugar como en su facilidad de lectura.
Por favor, léelas y edita tu mensaje.
Además lo he movido a Software, si bien es una pregunta relacionada con el hardware de la pantallita LCD, al tener pegado un código de sketch, lo hace merecedor de estar en Software.
Recuerda leer las NORMAS, por favor!