Info lcd Ks0108

verifica con questo: http://robocraft.ru/files/GLCD/2B.jpg

Purtroppo questo è uno schema con l' alimentazione invertita rispetto a quello che ho.
Guardando il pcb, noto che il pin 1 va a GND.

Questo è quanto mi da lo sketch diagnostico:
Serial initialized

Reported Arduino Revision: 1.1

GLCD Lib Configuration: glcd ver: 3 glcd_Device ver: 1 gText ver: 1
GLCD Lib build date: Mon Dec 5 01:50:07 CST 2011
GLCD Lib build number: 442
Panel Configuration:ks0108-192x64
Pin Configuration:ks0108-Arduino

GLCD:ks0108 DisplayWidth:192 DisplayHeight:64
Chips:3 ChipWidth:64 ChipHeight:64
CSEL1:14(PIN_C0) CSEL2:15(PIN_C1)
RW:16(PIN_C2) DI:17(PIN_C3) EN:18(PIN_C4)
D0:8(PIN_B0) D1:9(PIN_B1) D2:10(PIN_B2) D3:11(PIN_B3)
D4:4(PIN_D4) D5:5(PIN_D5) D6:6(PIN_D6) D7:7(PIN_D7)
Delays: tDDR:320 tAS:140 tDSW:200 tWH:450 tWL:450
ChipSelects: CHIP0:(14,0x0, 15,0x0) CHIP1:(14,0x0, 15,0x1) CHIP2:(14,0x1, 15,0x0)
Data mode:
d0-d3:nibble mode-Non-Atomic
d4-d7:nibble mode-Non-Atomic

Diag Loop: 1
Initializing GLCD
GLCD initialization Failed: RESET wait Timeout (status code: 2)

Ho trovato il datasheet del LCD.
http://www.winstar.com.tw/products_detail_ov.php?lang=it&ProID=48
Mi sembra confermare lo schema B che ho adottato.. infatti non riesco a capire dove stia il problema.

E' particolare la gestione del contrasto, normalmente gli estremi del trimmer si collegano all'alimentazione (5V e GND) ed il centrale al pin del contrasto, qui invece dei 5V preleva una tensione negativa che esce dal display stesso. La retro ti funziona perché non è altro che un LED alimentato, ma è il contrasto che dovrebbe dare segni di vita, ruotando il trimmero non succede nulla?
Ma lo sketch qual'è?

Ciao Michele...
purtroppo girando il trimmer non succede niente.
Questo e lo sketch diagnostico che carico e che mi da quell' errore... diciamo che dietro ci stanno delle librerie belle corpose.
Io sinceramente ho controllato e ricontrollato i collegamenti (che sono tanti) ma mi sembrano tutti ok allo schema B.
Se volete questa sera farò qualche foto..

GLCDdiags.pde (26.2 KB)

ok, volevo solo vedere se erano gestiti correttamente i due chip, ma sarà tutto nelle lib. Se ho ben capito non gli arriva il segnale di RESET nel periodo di tempo che l'LCD se lo aspetta, prova con un piccolo imbroglio:
tieni il filo del RESET scollegato da Arduino
avvia lo sketch o la diagnosi
istantaneamente tocca col filo il GND e rilascialo subito
se così non va ripeti l'operazione ma questa volta tocca i 5V invece del GND.

Si tutta la pieddinatura viene gestita da degli include nella libreria, anche molto bene, fanno l' auto sensing del tipo di arduino e carica in automatico quello giusto. Io ho anche provato a fissare quello per l' arduino uno e a controllare la piedinatura, ma il risultato non cambia.
Guardando in giro per il forum ho visto che molti hanno avuto questo problema, ma sinceramente quasi tutti con il mega.
Ok.. questa sera proverò.. intanto ti posso dire che ieri sera ho provato a staccare il cavo di reset o di collegarlo mentre caricavo lo sketch.. ma non è servito a niente.
Intanto grazie...

Ma figurati, mi spiace non poter fare di più. CRedo che l'impulso di reset debba arrivare prima dell'esecuzione dello sketch, cioè il display PRIMA viene resettato e poi comincia la sua "nuova" attività, questa è la mia idea, per cui può essere che se becchi il momento opportuno cominci a vedere qualcosa, poi si tratta di sistemare questo segnale, speriamo bene!

Non ti preoccupare.. sei sempre molto disponibile...
Bhè diciamo che se riusciamo a far funzionare la cosa.. ti spedisco un lcd uguale... XD
Ho un mio cliente che sta buttando via dei terminalini di produzione che usano questi bei LCD, ne ho già recuperati 7 ]:smiley:
Purtroppo usa tanti pin dell' arduino, se riesco a farli andare, poi vorrei cercare di farli funzionare tramite qualche port extender I2C ... altrimenti usi un arduino solo per il loro funzionamento :astonished:

Eccomi.. torno dalle prove di reset.. Purtroppo tutto negativo..
Ho provato sia con su massa e sia su +5v.. nada de nada.. non da segni di vita... :roll_eyes:

superzaffo:
Non ti preoccupare.. sei sempre molto disponibile...
Bhè diciamo che se riusciamo a far funzionare la cosa.. ti spedisco un lcd uguale... XD

semmai forse converrebbe invertire la cosa, potresti mandarmene uno per cercare di farlo funzionare ;), disponendo di strumentazione potrei cercare di scovare dov'è il problema, anche se è una cosa che non potrò fare prima di una decina di giorni.
Purtroppo, fatti i collegamenti e testato lo sketch, l'unica indicazione è quella del reset, abbiamo fatto una prova; l'unica cosa che mi viene in mente è verificare se i pin attivati nello sketch per i vari segnali corrispondono effettivamente ai collegamenti

Ciao a tutti.
Per quanto riguarda il contrasto però ti dovrebbe funzionare a prescindere dal reset o almeno credo visto che non ho mai utilizzato quei tipi di lcd. Dovresti provare a controllare tra GND e Vee se hai una tensione negativa rispetto a GND e di conseguenza se ti arriva al pin del contrasto che mi pare sia il 18 (vado a memoria). Poi ho provato a dare uno sguardo alla libreria che hai fornito (sono riuscito a leggerla con il blocco note quindi non bene :fearful:) ho trovato uno switch case che ti fa stampare l'errore del time out sull'lcd,se riesci a capire come risalire alla fonte dell'errore magari può aiutare.
Sono idee ....

@Michele.. Non ci sono problemi a spedirtene uno.. se in qualche modo mi dai l' indirizzo, te lo mando quanto prima.
Leggendo nei forum inglesi che parlano di questo tipo di errore, sembra che il problema dipenda dai collegamenti, ma sinceramente ho controllato un sacco di volte e anche con gli header di config della libreria.

@Tonid effetivamente funziona il contrasto, non si vede molto la differenza ma funziona. Sembra che non riesca a inizializzare i chip.

vi allego una foto dei collegamenti

P1020248.jpg

Vi posto altre info... se guardate il diagnostico, dice che l schermo ha 3 chips... ma a me risulta dal datasheet che ne ha 2
GLCD:ks0108 DisplayWidth:192 DisplayHeight:64
Chips:3 ChipWidth:64 ChipHeight:64
CSEL1:14(PIN_C0) CSEL2:15(PIN_C1)
RW:16(PIN_C2) DI:17(PIN_C3) EN:18(PIN_C4)
D0:8(PIN_B0) D1:9(PIN_B1) D2:10(PIN_B2) D3:11(PIN_B3)
D4:4(PIN_D4) D5:5(PIN_D5) D6:6(PIN_D6) D7:7(PIN_D7)
Delays: tDDR:320 tAS:140 tDSW:200 tWH:450 tWL:450
ChipSelects: CHIP0:(14,0x0, 15,0x0) CHIP1:(14,0x0, 15,0x1) CHIP2:(14,0x1, 15,0x0)

Infatti se guardo nel manuale c'è un esempio simile...
Chips:2 ChipWidth:64 ChipHeight:64
CSEL1:14(PIN_C0) CSEL2:15(PIN_C1)
RW:16(PIN_C2) DI:17(PIN_C3) EN:18(PIN_C4)
D0:8(PIN_B0) D1:9(PIN_B1) D2:10(PIN_B2) D3:11(PIN_B3)
D4:4(PIN_D4) D5:5(PIN_D5) D6:6(PIN_D6) D7:7(PIN_D7)
Delays: tDDR:320 tAS:140 tDSW:200 tWH:450 tWL:450
ChipSelects: CHIP0:(14,0x1, 15,0x0) CHIP1:(14,0x0, 15,0x1)

Allora vi aggiorno...
Ho trovato il problema, ho tolto il commento a questa riga

#include "config/ks0108_Manual_Config.h"       // generic ks0108 configuration

nel file glcd_config e adesso funziona lo schermo comprato in adafruit che è molto quasi uguale agli scermi che ho recuperato.
In questi ultimi sembra non funzionare il contrasto, il diag nel monitor seriale da gli stessi risultati dell' altro.

@tonid nel pin 18 (che secondo il datasheet è l' uscita gnd) ho un -1,4V mentre nel pin 3 che dovrebbe essere per il contrasto ho un valore variabile... da 0 a -4V

Per ora finisco quì.. vedremo domani..

grazie

superzaffo:
@Michele.. Non ci sono problemi a spedirtene uno.. se in qualche modo mi dai l' indirizzo, te lo mando quanto prima.
Leggendo nei forum inglesi che parlano di questo tipo di errore, sembra che il problema dipenda dai collegamenti, ma sinceramente ho controllato un sacco di volte e anche con gli header di config della libreria.

Leggo che pian piano stai trovando qualche cosa di valido, aspettiamo un paio di giorni, se non ne esci ci sentiamo in PM e ti dò l'indirizzo, così tra me e te li faremo funzionare di sicuro :wink:

Effettivamente nella descrizione qualcosa che non torna c'è....
ad esempio la risoluzione del tuo display non dovrebbe essere come cita :

GLCD:ks0108 DisplayWidth:192 DisplayHeight:64

ma dovrebbe essere Width:128 e Height:64..
Nel playground di cui hai dato il link dice che c'è un file di configurazione,ti cito la parte

If you are using a standard Arduino board (168/328) or a Mega, Sanguino, Teensy, or
Teensy++; and you have a 128x64 KS-0108 panel wired according to the pin connections
table above, you don’t need to make any changes to configuration files.
If you use different wiring or use a different panel type you will need to modify one of
the supplied configurations or you can create your own. These configuration files set the
panel parameters (display height, and width, timing, etc) to match your hardware and
allows selection of the Arduino pins used to connect to the display.
Although display panel timing can also be easily configured, most displays will work
without requiring a configuration change for timing. However, you should check the
datasheet for your panel to verify the timing values in the panel configuration file.

Dice appunto che devi scegliere una configurazione di quelle presenti o crearne una tua settando i parametri del display tra cui larghezza,altezza ,tempo ecc....Probabilmente dovrai commentare/decommentare delle parti di codice che potrebbero iniziare con ifdef.......dai un ochhio a quel file,secondo me il problema è lì

Se infatti fai il conto ,ogni chip si occupa di una parte del display pari a 64x64 se tu hai un display largo 128 avrai due chip ma se,come nel risultato dello sketch che hai caricato,hai una configurazione del display la cui larghezza è di 192 lui ti considera 3 chip perchè 64x3=192.....son sempre più convinto che il problema si risolve all'interno del file config..
Facci sapere.

Esatto.. probabilmente ieri sera non mi sono spiegato bene perchè ero un po' stanco.. :drooling_face:
Infatti per trovare il numero dei chip fa il calcolo con le dimensioni in pixel del display e quindi cercava sempre di gestire 3 chip invece di 2.
Togliendo il commento alla riga che avevo postato ieri sera il tutto funziona.. Ma c'è un però..
Qualche mese fa, prima che il mio cliente dismettesse questi terminali, avevo comprato un display molto simile in adafruit.com (stesso codice display cambia solo la revisione) e con questo display il contrasto funziona e vedo tutti i giochi grafici dello sketch, mentre con gli altri display il diag funziona e mi da passed ma non non vedo niente nel display a causa del contrasto che non va.
Da considerare che uso un trimmer da 10k che viene fornito con il display di adafruit.
@Michele.. se mi posti l' indirizzo ti mando un display.
@Tonid..

@tonid nel pin 18 (che secondo il datasheet è l' uscita gnd) ho un -1,4V mentre nel pin 3 che dovrebbe essere per il contrasto ho un valore variabile... da 0 a -4V