Izz taim tu plei: via saldatore ed utensili, mano a tasiera e mouse. La gestione vera e propria della visualizzazione
è affidata ad una routine che utilizza una matrice di variabili caricata con i valori necessari a comporre l'informazione grafica desiderata. La stessa
routine gestisce il clock dello shift register in maniera tale da sincronizzare il tutto. Ho predisposto questo
foglio di calcolo per generare i valori da caricare nella matrice con il quale è possibile modificare il font e i simboli da visualizzare.
In ogni istante sono accese due colonne, quindi ogni refresh del display si compie in 15 cicli di clock. Ogni colonna rimane accesa per circa mezzo
millisecondo, ne deriva che la frequenza di aggiornamento dell'intero display è intorno ai 130 Hertz. Una seconda routine si vale del timer interno a 16
bit TIMER1 e implementa orologio e calendario. La rimanente parte del firmware può essere dedicata alle funzioni vere e proprie del dispositivo.
Nella attuale stesura del codice ho attinto a piene mani dal precedente progetto YAC con una
ulteriore funzione dedicata alla visualizzazione di una scritta scorrevole e impostabile a piacimento. I pulsanti operano in questo modo:
- SW1: cicla fra le seguenti visualizzazioni:
- ora-minuti, giorno-mese, temperatura (scorrevole)
- ora-minuti (fissa)
- minuti-secondi (fissa)
- giorno-mese (fissa)
- scritta scorrevole personalizzabile
- SW2: una pressione breve nelle visualizzazioni 2,3,4,5 riporta alla visualizzazione 1; la pressione lunga consente l'impostazione di ora e data.
Nella visualizzazione 5, la pressione lunga avvia la routine di impostazione del messaggio visualizzabile (max 86 caratteri). Le lettere si
modificano con il tasto SW1, confermandole con il tasto SW2. Il carattere "°c" è assunto come codice di fine messaggio e termina la procedura.
Come accennato nella descrizione dello schema elettrico, lo stato di alimentazione del circuito è monitorato dal PIC e, in caso di mancanza di
alimentazione, si attiva la modalità "basso consumo". Non si tratta di una vera e propria funzione di sleep ma piuttosto di "dormiveglia": il clock del
micro e le routines di aggiornamento relative all'orologio funzionano normalmente, ma viene spento il display e lo shift register. In questo modo
l'assorbimento totale passa da circa 120 mA a una decina, consentendo una buona autonomia in caso di black out. Al momento ho badato soprattutto ad
ottimizzare la visualizzazione e lo scorrimento dei caratteri; trascurando altri aspetti. Non ho implementato l'uso di un collegamento seriale, previsto
in un primo tempo per modificare il messaggio scorrevole, in quanto tutto sommato l'impostazione tramite tasti non è poi così scomoda; anche la gestione
complessiva della RAM disponibile non è certo efficiente. Non ho inserito effetti di lampeggio / dissolvenza, che pure si possono implementare vista la
diponibilità di risorse del micro... frivolezze. Tuttavia il progetto così com'è funziona molto bene e può considerarsi finito a tutti gli effetti. Le
risorse ancora disponibili del PIC sono quasi due terzi con un buon numero di linee di I/O, quindi le possibilità di aggiungere funzioni non mancano di
certo. Qualche idea? Un moduletto mp3 o FM ed ecco una radiosveglia che ti accoglie con uno "SVEGLIA PIGRONE!" o che ti ricorda il tuo compleanno. Meglio
ancora: il compleanno della dolce(!) metà o la scadenza del bollo.. Il tutto, forse, ad una prossima rev 2.0.
Ecco il link del Firmware e due animazioni per dare l'dea del risultato.
Messaggio scorrevole |
Orologio-calendario-termometro |
|
|
Rimane ancora una cosa prima di poter mettere la parola fine: il mobile. Al momento sono indeciso fra due soluzioni, una che consiste nel cannibalizzare
una cassetta in legno tipo quelle utilizzate per il vino pregiato (carteggiata all'infinito e lucidata a cera farebbe un figurone) e l'altra che prevede
una teca in plexiglass, tutto a vista: aspetto volutamente grezzo, per il disinnesco tagliare il filo blu. O era il rosso? Urge ispirazione.......