Salve ragazzi, chiedo nuovamente aiuto, le ho provate tutte ma non ne vengo a capo....
Sto usando un lcd interfacciato ad arduino tramite un 74hc595 usando la libreria shiftlcd e riesco a scriverci i messaggi ma proprio non riesco a controllare la retroilluminazione che è prevista dalla libreria. Sono certo che il collegamento del display è corretto perchè lo sketch d'esempio fornito nella libreria funziona dovere soltanto non riesco ad accendere\spegnere la retroilluminazione quando voglio io. Nell'esempio della libreria che inserisco qui sotto nel setup scrive il classico Hello world mentre nel loop accende e spegne la retroilluminazione ad intervalli di un secondo:
// include the library code: #include <ShiftLCD.h>
// initalise the library with the numbers of the interface pins
ShiftLCD lcd(2,4,3);
void setup()
{
// set up the LCD's number of rows and columns:
lcd.begin(16,2);
// Output Hello, World!
lcd.print("Hello, World!");
}
void loop()
{
// Turn the backlight on
lcd.backlightOn();
delay(1000);
// Turn the backlight off
lcd.backlightOff();
delay(1000);
}
Così funziona tutto a dovere ma i problemi si presentano quando vado a scrivere un messaggio con lcd.print nel loop; i sintomi per così dire sono molteplici:
nessun carattere visualizzato sul display;
caratteri random senza nessuna logica;
messaggio parzialmente visualizzato;
scritta scorrevole per giunta completamente errata.
Come ho detto sopra ho fatto parecchi tentativi ma senza successo, ho provato a scrivere prima o dopo di accendere o spegnere il display, mettere un ritardo per consentire al display di aggiornarsi (ho provato sia con il delay che con millis), ho lasciato sempre attive le funzioni e le ho chiamate una sola volta, insomma non non c'è stato verso. Sapete illuminarmi su come usare le funzioni backlightOn / backlightOff?
ciao Pelletta
presumo che hai un display a base di un HD44780 o compatibile.
Li la retroilluminazione sono 2 pin, il anodo e il catodo dei led.
Come li hai collegati? Con un transitore? Che valore di resistenza hai messo per limitare la corrente del Backlight?
Scrivi per favore il la sigla del display ch stai usando.
Ciao Uwe
Allora, ho usato un BC618 come transistor, so che è sovradimensionato ma dispongo soltanto di quelli al momento. Il display è un HC162051YFHLYB , led 4.5V 240mA, collegato con resistenza da 2.2 ohm, comunque anche con altri display differenti fa la stessa cosa.
Ciao Pelletta
Se hai collegato la retroilluminazione come segue doverbbe essere tutto a posto;
5V -- anodo retroilluminazione
catodo retroilluminazione -- resistenza 2,2 Ohm -- collettore transistor (la resistenza puó essere messa anche alternativamente tra anodo e 5V)
emettitore transistor -- massa
base transistor -- resisteza 1kOhm -- uscita 595.
La cosa che mi viene in mente che non sia un problema di alimentazione nel senso che 240 mA della retroilluminazione non tirano giú l'alimentazione.
Succede la stessa cosa se colleghi direttamente la base del transistore a 5V ?
Hai provato di controllare la tensione 5V sia in continua che misurando in alternata ?
Il problema non credo sia legato al circuito, ho provato a comandare il transistor direttamente con un pin di arduino e non dallo shift register e funziona, credo sia un problema legato più al codice che alla parte elettronica. Non riesco a capire se è un bug della libreria shiftlcd o comunque come vadano usate le istruzioni backlightOn e backlightOff.
Per il resto il circuito è come lo hai descritto e l'alimentazione è fornita da un 7805 con relativi condensatori
2 cose:
Ti fa casino anche se scolleghi la base del transistore dal 595 e chiami la funzione lcd.backlightOn(); ?
Se sí credo anch io un problema di SW.
Se no hai messo male il transistore; dal circuito disegna il schema elettrico senza guardaer l' originale e vedi dopo se sono uguali.
Non credo che usi male le funzioni della retroilluminazione, visto che usi l' esempio della libreria.
Mi ripeto; hai provato a controllare la tensione di alimentazione ( ognitanto Ti fregno certe cose date da Te sicure).
Per ora ho risolto liberando un pin di arduino e il transistor che controlla la retroilluminazione lo comando con quello. Comunque sia il problema dipende dalla libreria, ho ricontrollato più volte il circuito e tutto è collegato bene difatti il transistor si comporta bene se comandato direttamente da un pin di arduino.
Non credo la abbiano scritta loro, sennò stava nel playground. Comunque sia pazienza, ho aggirato il problema togliendo il controllo della retroilluminazione allo shift register.