16 led + 16 pulsanti con un PIC12F675 : Luci8

Giovanni Bernardo | 25 luglio 2012
Categorie: PICmicro 10/12/16 - Progetti

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).

Download

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

Luci8 source code (155 download)

Galleria



Questo articolo ti è stato utile? Ti ha permesso di risolvere un problema o di migliorare le tue applicazioni? Ci lavori? Ti ha permesso di scrivere la tua tesina? Ti ha semplicemente fatto spendere un po' del tuo tempo in maniera costruttiva? Allora clicca il banner qui sotto:


Settorezero.com è un blog personale di Giovanni Bernardo aperto dal 25 Ottobre 2007. Non è una testata giornalistica né un sito a carattere commerciale.
Settorezero.com, il logo Zroid™ e la tagline "Play embedded electronics™" sono copyright ©2007÷2018 Giovanni Bernardo.
La navigazione su settorezero.com e la fruizione dei contenuti ivi presenti sono soggette ai seguenti Termini di utilizzo - Informativa sulla privacy - Utilizzo dei Cookie.
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche.
Per poter contattare il gestore del sito potete utilizzare la sezione contatti o inviare una email a gianni[at]settorezero[dot]com.
Per seguire gli aggiornamenti del blog Settorezero, oltre al feed RSS, puoi anche seguire la pagina Facebook o iscriverti al canale Telegram.
Su Twitter, invece, pubblico un po' di tutto e, quando mi va, uso anche Tumblr - Google+ - Blogspot - Youtube.