display grafico sconosciuto POS.

Ieri mi hanno regalato un POS. si, quello per pagare con la carta di credito! L’ho subito smontato per fregargli la stampante, ma è più complessa del previsto. ci devo studiare bene. A parte che sono rimasto a bocca aperta per l’incredibile complessità dell’apparato, ho subito buttato l’occhio sul display. Trattasi di un 64x128 (sembra). Dietro ci sono stampigliate delle sigle, ma che non risultato sul Stanto Google!

secondo voi è utilizzabile? Mi date una mano?

Generalmente questi dispositivi usano HW proprietario, non so se riuscirai a cavarne fuori qualcosa. Concordo sulla complessità dell'oggetto, i POS sono microcomputer a tutti gli effetti.

Il produttore è Data Image, però è un lcd molto vecchio non più presente a catalogo, data sheet praticamente introvabile. Tiro a indovinare però ritengo molto probabile che sia un display 128x64 del tipo paper white con chipset ks0108 e ks0107, i tre ic sul pcb suggeriscono questa soluzione perché per un 128x64 servono due ks0108 e un ks0107, inoltre il numero di pin è compatibile con questa soluzione. Prova utilizzando la libreria GLCD, il vero problema è il pin out, ne esistono diversi possibili, tutti riportati nel reference della libreria, se riesci ad individuare con certezza le alimentazioni, e non dovrebbe essere difficile farlo visto che hai il pos per farlo accendere, sei a posto. Se disponi di un oscilloscopio puoi verificare i vari segnali su i pin, in questo modo puoi avere la certezza che usa un controller ks0108.

eh si, infatti, probabilmente è un tipo di display che crearono appositamente per questo scobo e basta!....ma un tentativo si può pur fare! girando in rete ho trovato piedinature e informazioni su display della stessa marca e con serie simile!

Pagina di forum PDF 1 PDF 2

chissà!

in più, dal pcb stesso sono facilmente risalito alla retro illuminazione e all'alimentazione del display. Forse...forse ho trovato pure il pin chiamato "Negative Voltage Output".

in effetti, con il pdf potrei individuare i pin con l'oscilloscopio. Tanto, il pos funziona regolarmente!

tenterò qualche prova, intanto vi ringrazio per le dritte!

z3us: eh si, infatti, probabilmente è un tipo di display che crearono appositamente per questo scobo e basta!

No, è un normalissimo display standard, solo che quel modello è fuori produzione da molto tempo, sicuramente il pos è molto datato. Il chipset è quasi sicuramente quello che ti ho indicato, anche nel forum concordano con la mia idea, c'è solo da identificare con certezza i vari pin e sei a posto. Dato che hai un oscilloscopio e l'elettronica per farlo funzionare è facile capire quali sono i pin dei dati e quelli per i controlli, trovare le alimentazioni è semplicissimo ed è la sola cosa che non devi sbagliare a collegare se non vuoi correre il rischio di "friggere" il controller.

Funziona! e al primo tentativo!

configurazione GLCD presa dal playground. Collegamenti versione A, ma con CSEL1 e CSEL2 invertiti. :slight_smile: :slight_smile:

ora mi devo dilettare a scoprire le varie funzioni e vedere se ci posso fare qualcosa! suggerimenti?

grazie delle dritte comunque!

:wink: :wink:

z3us: Funziona! e al primo tentativo!

Ottimo :)

ora mi devo dilettare a scoprire le varie funzioni e vedere se ci posso fare qualcosa! suggerimenti?

E' un display grafico pertanto lo puoi usare per visualizzare un menù ad icone e semplici oggetti grafici, p.e. un v.u. meter analogico.

ma questi tipi graphic lcd si possono convertire in display i2c, cosi' come si fa con i characters ? intendo con un PCF8574 ?

Testato: ma questi tipi graphic lcd si possono convertire in display i2c, cosi' come si fa con i characters ? intendo con un PCF8574 ?

Con un pcf no, però esiste una interfaccia di Sparkfun, sopra c'è un micro, che gestisce tutte le linee del display e lo piloti da seriale. Volendo si può usare un ATmega328 in standalone che controlla il display e accetta i comandi da I2C.

intendi questa ? infatti anche qui usano un atmega http://www.sparkfun.com/products/9352

modificando lo schema per usare i2c ci sarebbe poi da riscrivere tutto il sw dell'168 daccapo credo, giusto ?

eh si, Testato, hai ragione. perchè lui da solo si prende tutti i pin. se non ricordo male quelli liberi sono 5 (seriale escusa). uhm, ma l'idea dello stand alone per instaurare una i2c non è male! devo provarci!

Fin ora ho solo inviato dati a devices, mai provato a riceverli. è altrettanto seplice?

Astro, a parere tuo, la velocità di visualizzazione delle robe sul display, ne risente molto tentando questa strada dell'I2C?

z3us: eh si, Testato, hai ragione. perchè lui da solo si prende tutti i pin. se non ricordo male quelli liberi sono 5 (seriale escusa). uhm, ma l'idea dello stand alone per instaurare una i2c non è male! devo provarci!

Io l'ho fatto con un Attiny84 che mi pilota un classico HD44780 e che riceve i comandi I2C da un Atmega328.

e questa roba qui??

PDF BV4613

ieri sera, era tardi però, ho voluto tentare una cosa.

mossò dall’idea di ricavare un VU meter per l’auto con quel display, trovo in rete addirittura una libreria che esegue la Trasformata di Fourier. Non avendola studiata direttamente, ma soltanto superficialmente per pura cultura personale, sono riuscito ad usarla, ma di certo non a modificarla e adattarla alle mie esigenze!

ho preso un pezzo di codice da un esempio trovato in rete, e ho sostituito la libreria della LOL shield che usava, con il mio display.

il tutto ha funzionato a primo colpo, ma sembra un po lentino a reagire! è facile da capire che gli darò troppi calcoli da fare. ma non afferrando a pieno il funzionamento della libreria, non sò bene dove rallenta e come migliorarla!

vi posto quello che stà girando sull’Arduino! Ovvio ci sarà qualche erroraccio matematico madornale, ma insomma…!

#include <ks0108.h>
#include <fix_fft.h>

#define AUDIOPIN 5


char im[128], data[128];

char data_avgs[14];

int i=0,val;



void setup() {
  GLCD.Init(NON_INVERTED);  
  GLCD.ClearScreen();
}


void loop() {

  for (i=0; i < 128; i++){                                     
    val =analogRead(AUDIOPIN);             
    data[i] = val;                                       
    im[i] = 0;                                                     
  };

  fix_fft(data,im,7,0);

  for (i=0; i< 64;i++){                                      
    data[i] = sqrt(data[i] * data[i] + im[i] * im[i]); 
  };     
  
  
  
  for (i=0; i<63; i++) {
    data_avgs[i] = data[i*4] + data[i*4 + 1] + data[i*4 + 2] + data[i*4 + 3];   
                            
  }
  
  
  
  // set LoLShield
  
  for (int x=0; x < 127; x++) {
   for (int y=0; y < 63; y++) {
     if (y < data_avgs[13-x]) { // 13-x reverses the bars so low to high frequences are represented from left to right.
      GLCD.SetDot(x,y,WHITE);     
     } else {
       GLCD.SetDot(x,y,BLACK); 
     }
   } 
  }
    
}