Visualizzare Caratteri speciali con MAX7219 e Display 7 Digit **RISOLTO

Accantonato al momento i Dot Matrix 3216 ho realizzato un orologio a 8 display 7 digit (con rtc) che visualizza ora data e alcuni semplici messaggi tipo Arduino. L'orologio è privo di sensore di temperatura per cui ho implementato un LM35 adesso dovrei visualizzare i dati e il simbolo di grado che posso ottenere con una "o" piccola cioè i 4 segmenti superiori di un display. Ho letto il codice e sono riuscito a visualizzare alcuni caratteri anche la o piccola ma visualizzata in basso invece che in alto, ho cercato on line una lista di codici speciali da inserire, riporto alcune righe dove vanno inseriti i codici numerici: led_print(tempC, 6); lc.setRow(chip_id, 5, 78); lc.setRow(chip_id, 4, 13); in questo esempio la prima riga visualizza il valore della temperatura, la seconda visualizza una C maiuscola la tenza la utilizzo per testare i codici ma al momento non sono riuscito a trovare la "o" piccola da visualizzare in alto che precederà la C maiuscola (code 78). Conoscete il codice numerico e comunque dove trovare un elenco di tutti i caratteri simboli speciali che si possono visualizzare in un display a 7 digit gestito dal Max7219 ? Grazie per la cortese attenzione. Saluti.

Dimenticavo interessano anche i due punti centrali utilizzo 2 display a 4 digit integrati che hanno di serie i due punti centrali che ho già collegato e sono perfettamente funzionanti (si accendono brevemente solo in fase di reset). Saluti.

Il MAX7219 ha 2 modalitá di funzionamento:

  • quella per pilotare un Display a 8 caratteri a 7 segmenti con punto decimale ( in tutto 64 led) e
  • quella di pilotare una matrice 8x8. la differenza é l’ interpretazione del dato che viene trasmesso al MAX.

In modalitá 7 segmenti il dato viene considerato BCD e viene adattata la tabella 5 pagina 8 del http://datasheets.maxim-ic.com/en/ds/MAX7219-MAX7221.pdf ovvero un valore da 0 a 15 viene visualizzato come caratteri da 0 a 9, -, E, H, L, P e blank. Il punto decimale é bit 7.

In modalitá matrice ogni bit del dato corrisponde a un segmento. L acorrispondenza la vedi sulla tabella 6 pgina 8 del database. Se vuoi usare questa modalitá devi tradurre ogni numero al numero corrispondente che fa accendere i segmenti giusti. se vuoi avere un o in alto devi accendere i segmenti A,B,G,F ovvero trasmettere il numero B0110 0011.

Per i doppi punti devi vedere su quali segmenti li hai collegati.

Ciao Uwe

Ho dato una sbirciata al datasheet e il codice corrisponde B=xxx tuttavia ho riletto bene l'intero listato del codice e malgrado il programma visualizza Arduino e qualche altra semplice scritta, in nessuna parte del programma esistono codici con questo formato B0xxxx ma solo parti di codice di questo tipo: void word_arduino (){ lc.clearDisplay(chip_id); lc.setRow(chip_id, 7, 119); // "A" delay(test_delay); lc.setRow(chip_id, 6, 5); // "r" delay(test_delay); lc.setRow(chip_id, 5, 61); // "d" delay(test_delay); lc.setRow(chip_id, 4, 28); // "u" delay(test_delay); lc.setRow(chip_id, 3, 4); // "i" delay(test_delay); lc.setRow(chip_id, 2, 21); // "n" delay(test_delay); lc.setRow(chip_id, 1, 29); // "0" delay(test_delay); lc.setRow(chip_id, 0, 0); // " " delay(1000); In effetti se io utilizzo questi numeri (21, 29, ecc) ottengo le lettere di riferimento come già scritto sopra. Tuttavia se la strada è quella indicata non essendo esperto di C gradirei sapere come devo inviare correttamente (a livello di sintassi) l'informazione B0xxxxx al display selezionando anche il numero del display in cui va visualizzato.I due punti sono collegati come dp (in questo display infatti coincidono con il D.P. Saluti.

Hai giá la funzione che lo fa, solo che al posto del numero binario é scritto un numero decimale. Usa il calcolatore di Windows per passare dal numero binario a quello decimale e viceversa. Ciao Uwe

Grazie in effetti dopo aver risposto frettolosamente mi sono reso conto che dovevo effettuare la conversione da binario a decimale, fatto ciò 110 0011 mi restituisce 99 che inserito nella riga già indicata visualizza effettivamente il simbolo di grado in alto. Con lo stesso metodo ho poi creato anche la scritta day che precede la visualizzazione effettiva della data. Per chi fosse interessato al progetto originario ( senza termometro e con qualche lacuna grafica di visualizzazione temporale ecc.) trova quì http://www.justblair.co.uk/Arduino-Shields/arduino-cloc-a-maxim-ds1307max7221-based-clock-with-auto-daylight-savings-adjustment.html l'intero progetto va comunque decodificato (a livello di collegamenti) con una certa attenzione, infatti manca uno schema elettrico completo. Io ho realizzato una PCB personalizzata stand alone con il 328P, ho programmato il tutto con un convertitore USB seriale con chip PL, già oggetto di un altro mio thread che adesso funziona perfettamente. Per maggiori dettagli elettronici potete contattarmi senza problemi, allego alcune immagini della realizzazione pratica con relativo programmatore, ma la scheda stand alone è comunque programmabile in modo del tutto autonomo tramite un connettore a 5 pin. Grazie per la collaborazione. Saluti. http://www.flickr.com/photos/77672764@N06/7131391373/ http://www.flickr.com/photos/77672764@N06/7131391373/ foto un pò mossa.... http://www.flickr.com/photos/77672764@N06/6985309524/

Gratulazioni

hai incollato 2 volte la stessa foto. Qua quella che visualizza la temperatura: http://www.flickr.com/photos/77672764@N06/7131392019

Ciao Uwe

Posso chiedere una cortesia? Per acquistare il MAX7219 ho guardato su e-bay ed ho trovato tutti venditori con feedback penosi, conoscete un venditore affidabile o che almeno non abbia dato problemi a voi? Grazie.

Cosa intendi per feedback penosi? Facendo un controllo su ebay ho trovato solo venditori con feedback tra il 99 e il 100% positivi.

Come rivenditori: RS components e Distrelec.

Ciao Uwe

100% non ne avevo trovati e quelli al 99% sono rivenditori che hanno cmq deluso 60/70 clienti cmq Grazie Uwe seguo la tua indicazione.

Penso che 60/70 clienti su 1000/2000 sono i soliti ai quali non riesci a fare giusto niente e che non leggono la descrizione della merce facendosi idee sbagliate. Ciao Uwe

I Max li compri direttamente in Cina 10 al prezzo di 1 (+ o -) fai una ricerca su e-bay selezionando " ricerca nel mondo". Ti arrivano a casa in busta imbottita in 20/30 giorni in caso di problemi con Paypal ottieni sempre il rimborso totale. Buon Acquisto.