Accendere e spegnere display lcd

Secondo voi e possibile spegnere e riaccendere un display lcd solo quando serve ? Io per ora ne uso uno in i2c che usa questa libreria LiquidCrystal_I2C, mi piacerebbe poter comandare l'accensione tramite un pulsante, il modello che ho ha un ponticello che spegne la retro illuminazione, ma il displey continua a visualizzare caratteri, e se provo a collegarlo dopo l'accensione di arduino non funziona correttamente, perché penso non " inizzializzato ".

grazie

2 problemi:

Non puoi dare tensione sui pin del I2C se non é alimentato il display. Stessa cosa vale per un interfaccia paralella a 4 o 8 bit. Con un interfaccia paralella basta un bus driver tristate per spegnere i segnali. con I2C non lo so.

Un display dopo l' accensione deve essere inizializzato. Questo puoi programmarlo che prima accende e poi inizializza il display.

Ciao Uwe

ciao uwefed, dalla tua spiegazione, l'unica cosa che posso fare e toglere luce del retroschermo, altro con un display i2c non posso, giusto?

il display che uso e questo https://arduino-info.wikispaces.com/LCD-Blue-I2C

Dalle prove che ho fatto, e con la sketch di esempio posso spegnere la retro illuminazione, ma il display continua a lavorare, e a visualizzare i dati.

grazie

Forse e' un'idea stupida, ma ... non si potrebbe mandargli i comandi di scrittura solo quando premi il pulsante, e poi dopo un certo tempo (o se lo ripremi, o come serve a te), mandargli un comando di clear lcd che cancelli tutto fino alla prossima pressione del tasto ? ... non sarebbe "spento", ma almeno non visualizzerebbe piu nulla ...

EDIT: un'altra possibilita' che mi e' venuta in mente, ma che richiede una modifica, e' sfruttare la tensione di polarizzazione ... mandandolo a zero in modo che il contrasto si riduca a zero, hai un display che visualizza, ma con caratteri talmente poco contrastati da essere praticamente invisibili (almeno su alcuni LCD), ed unito allo spegnimento della retroilluminazione (o piu precisamente, mandare la tensione di polarizzazione al pin solo quando accendi il retroilluminatore) dovrebbe renderlo illeggibile ...

Non sò se ho capito bene, ma hai provato con un semplice: " lcd.backlight(); " oppure " lcd.noBacklight(); "

Teoricamente io uso la tua stessa libreria, potrebbe funzionare.

Cavolo non avevo pensato a usare lcd clear e non fargli scrivere nulla, ottimo consiglio faccio un po di prove e vi racconto...

Si errore di battitura il comando e lcd.noBacklight();

Grazie

Spegnere la retro illumicazione con lcd.claer(); funziona, lo schermo risulta spento, l'unico accorgimento da fare e mettere sempre lcd.init(); ad ogni cambio di stato del lcd, altrimenti scrive caratteri assurdi.

 if (buttonState == HIGH) {     
    // turn lcd on:
lcd.init();    
lcd.backlight();

  lcd.setCursor(0,0);
  lcd.print("   LCD  ");
  lcd.setCursor(0,1);
  lcd.print("LCD ON");  
  } 
  else {
    // turn lcd off:
   lcd.init();
  lcd.clear();
  lcd.noBacklight();
  }

Questo e solo un pezzo di codice ma funzionante.

Grazie a tutti.....

vic_20: Spegnere la retro illumicazione con lcd.claer(); funziona, lo schermo risulta spento, l'unico accorgimento da fare e mettere sempre lcd.init(); ad ogni cambio di stato del lcd, altrimenti scrive caratteri assurdi.

Mah, io uso LDC 20x4 con protocollo I2C e li spengo normalmente con " lcd.noBacklight(); " e lcd.init () lo uso solo all'inizio e non ad ogni spegnimento riaccensione.... Io verificherei la libreria: spegnere la retroilluminazione con un lcd.clear mi sembra un po' assurdo !!! Hai provato la libreria di Testato? Va benissimo !

Ciao

Facendo altre prove ho eliminati lcd.int() effettivamente non serve, ma lcd.clear lo uso per non far visualizzare nulla, altrimenti le scritte si continuano a vedere anche con la retro spenta, probabilmente come dici tu e la libreria, se trovo quella di tetstato la provo.

grazie