16 led + 16 pulsanti con un PIC12F675 : Luci8

Non si tratta di una cosa nuova, in realtà è un giochino che ho realizzato per mia figlia circa 2 anni fa, quando cominciò a dire le prime parole e a camminare e veniva attratta da qualsiasi cosa avesse dei pulsanti da premere che sortissero qualche effetto. Diedi a questo giochino il nome di Luci8 (Luciotto).

Cominciai con la rilevazione di 16 pulsanti utilizzando un unico I/O e il convertitore AD (qui) quindi proseguii con il controllo di 16 led con 3 I/O sfruttando uno shift register con latch 74HC595 (qui). Si trattava difatti di studi preliminari per realizzare il giochino. Il giorno stesso che pubblicai l’articolo sui 16 led, mi misi di buona lena con un PIC12F675 per realizzare Luci8. Li per li non volli pubblicarlo, un po’ perchè si trattava alla fine di due articoli già visti e fusi insieme, un po’ perchè mi parve una cosa futile.

L’altro giorno vedo Rita mostrare orgogliosa Luci8 ai suoi amichetti dicendo: “questo l’ha fatto papà, si chiama Luciotto”… così ho pensato di postare il codice sorgente, riadattato per le nuove versioni di Hitech-C e di MPLAB.

Il giochino è semplice: ci sono 16 tasti (un tastierino a matrice) e 16 led, il primo pulsante, premuto, accende il primo led e così via. Ripremendo un pulsante corrispondente ad un led acceso, il led si spegne. Una baggianata insomma, ma per un bambino penso possa essere uno strumento affascinante.

Tutti i dettagli costruttivi e lo schema del PCB li potete trovare nell’articolo relativo al controllo di 16 led con lo shift register. Il PCB in questione ha difatti l’area inferiore realizzata a mille-fori, è in questa zona che ho messo il circuito con il PIC. L’alimentazione viene fornita con una batteria da 9V e un regolatore 7805. Il PIC utilizza l’oscillatore interno a 4MHz e MCLR come IO, per cui non è necessario nessun collegamento “strano” se non quello dell’alimentazione. I collegamenti sono indicati nel file settings.h (GPIO0 = data, GPIO5 = clock, GPIO4 = data). Il tastierino a matrice 4×4 va collegato come illustrato nell’articolo relativo al controllo di 16 pulsanti con un solo IO. L’ingresso analogico da utilizzare è AN1 (GPIO1).

Assemblare il tutto non dovrebbe essere difficile. Il circuito a 4MHz presenta un piccolo malfunzionamento: alcuni led si accendono in maniera fioca in corrispondenza di altri, questo problema a frequenze superiori non mi si è presentato, penso possa essere causato dai transistor che pilotano i led, magari cambiando le resistenze sulla base e forzando le basi a massa con delle resistenze di pulldown il problema scompare, ma non ho avuto modo di provare.

Ad ogni modo il sorgente è ricco di spunti e può tornare utile, nella speranza che non me lo ritrovo sui siti di elettronica a punteggio. Può essere rielaborato per creare qualche gioco più interessante (tipo un whack-a-mole).

L’idea successiva sarebbe di aggiungere anche dei suoni sulla pressione dei pulsanti

Download

Il download contiene il codice sorgente, scritto per Hitech-C compiler, il progetto MPLAB e l’hex precompilato.

Galleria

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)