Luce automatica per PC
Introduzione
Premetto subito che sono alle prime armi in campo di elettronica, questo mio progetto infatti è più informatico che elettronico, o meglio fonde insieme le due cose per una base di partenza, allo stesso tempo è semplice, realizzabile da chiunque, e comunque utile e funzionale.
Questo progetto è nato da una mia esigenza personale, in pratica il problema è che la sera quando sono al computer e devo digitare sulla tastiera, non riesco a vedere bene i tasti sulla tastiera perchè rimanendo sul piano inferiore (quello scorrevole a scomparsa), non è illuminata da niente, nemmeno il bagliore del monitor riesce ad illuminarla.
Certo ho una lampada da tavolo, ma tutte le volte devo accenderla, e poi spegnerla quando devo solo leggere sul monitor, magari mentre navigo su internet, per poi riaccenderla quando di nuovo devo digitare sulla tastiera.
Quindi grazie supratutto ai tutorial letti su questo sito, e grazie anche alla mia minima conoscenza di elettronica e VisualBasic ho creato questo progettino.
Descrizione
Il progetto da me proposto consiste in uno o più led accesi direttamente dal computer grazie alla porta parallela, in oltre un piccolo programmino da me compilato permette il funzionamento ON sempre accesi, OFF sempre spenti, oppure AUTO, cioè i led si accendono quando viene premuta la barra spaziatrice e si spengono dopo circa 30 secondi.
Tutto l'occorrente per la realizzazione è un connettore per presa computer parallela LPT, uno o più led, uno spezzone di cavo e in base al tipo di led anche qualche resistenza.
Dico in base al tipo di led perchè l'uscita parallela del pc è in grado di fornire una tensione di 5v per una corrente di 25mA, quindi ad esmpio io avendo utilizzato led bianchi e colorati ad alta luminoisità che funzionano a 5v non ho inserito nessuna resistenza.
Mi sono procurato un connettore LPT maschio come quello visibile in foto, uno spezzone di cavo telefonico, ma và benissimo qualsiasi cavo e dei led.
Come prima cosa vediamo i pin della porta parallela
I pin che ci interessano sono quelli che vanno dal 02 al 09 denominati DATA0...DATA7, in pratica sono i pin che possiamo pilotare, quindi possiamo portare a livello logico alto +5v o a livello logico basso circa 0v.
In oltre abbiamo bisogno anche della massa GND ovvero i pin dal 18 al 25, questi pin sono collegati assieme tra di loro, quindi basta collegarne solamente uno.
Il collegamento risulta abbastanza intuitivo e semplice.
Nello schema ho utilizzato solo 2 led collegati ai pin 2 e 9 ovvero il primo data, DATA0, e l'ultimo data, DATA7, e ho utilizzato per la massa il pin 25 GND, premetto che il programma che io ho compilato, porta a livello logico alto tutti gli 8 pin DATA quindi si può collegare i led che vogliamo tra un pin GND qualsiasi, e un pin DATA qualsiasi.
Ripeto che io ho utilizzato led che sono in grado di funzionare con i 5v forniti dal computer, per led con tensione di funzionamento inferiore, c'è da inserire tra il pin della porta parallela ed il led una resistenza calcolabile con la formula
(5-Vled)/Aled
dove 5 è la tensione fornita dal pc, Vled è la tensione di funzionamento del led e Aled è la corrente di funzionamento del led, ad esempio volendo utilizzare i classici led rossi o gialli funzionanti a 1,2v con corrente di 20mA il calcola sarà:
(5-1,2)/0,02= 190 ohm
Ritornando ai collegamenti c'è da sapere che sul connettore maschio quello che utilizzeremo noi, la numerazione dei pin è appositamente invertita rispetto al connettore femmina
quindi non dobbiamo preoccuparci, infatti il pin 1 del connettore femmina sul computer corrisponde al pin 1 del nostro connettore maschio, e così tutti gli altri pin.
Come tutti voi sapete i led devono essere alimentati nel giusto verso, quindi l'anodo che è il postivo del led (sul led è il piedino più lungo) và collegato al pin DATA, mentre invece il catodo che è il negativo del led (sul led è il piedino più corto) và collegato ad un pin GND della porta.
Una volta effettuati i semplici collegamenti, dobbiamo far accendere i led portando a livello logico alto i vari pin DATA della nostra parallela.
Io ho utilizzato Visual Basic con il comando DlPortWritePortUchar &H378, 255
dove DlPortWritePortUchar è il comando per scrivere un dato sulla porta, &H378 è il nuemro che identifica la porta in questo caso la LPT1, e 255 è il dato che andremo a scrivere.
Scrivendo 255 portiamo a livello logico alto tutti gli 8 pin DATA0..DATA7, mentre invece con il comando DlPortWritePortUchar &H378, 0 scriviamo 0 e quindi portiamo a livello basso tutti gli 8 pin.
Questo avviene perchè il numero che noi andiamo a scrivere, altro non è che la rappresentazione decimale del numero binario che rappresenta gli otto bit della porta.
Numero
|
DATA 7
|
DATA 6 |
DATA 5 |
DATA 4 |
DATA 3 |
DATA 2 |
DATA1 |
DATA0 |
0 |
0 |
0 |
0 |
0 |
0
|
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
3 |
0 |
0 |
0 |
0 |
0 |
0
|
1 |
1 |
7 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
15 |
0 |
0 |
0 |
0 |
1 |
1
|
1
|
1 |
31 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
63 |
0 |
0 |
1 |
1 |
1
|
1 |
1 |
1 |
127 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
255 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Come si può vedere dalla tabella, per portare a livello logico uno o più bit basta rappresentare gli otto bit con un numero binario(colore nero) e poi convertirlo in decimale(colore verde).
Ad esmpio se volessi portare a livello logico alto il solo bit DATA0 dovrei inviare il numero binario 00000001 che convertito in decimale è 1, l'istruzione in visual basic sarebbe quindi
DlPortWritePortUchar &H378, 1
Vicecersa se volessi portare a livello logico alto il bit DATA1 dovrei inviare il numero binario 00000010 che convertito in decimale è 2 , quindi l'istruzione in Visaul Basic sarebbe
DlPortWritePortUchar &H378, 2
Risulta quindi intuitivo che per portare a livello logico alto tutti gli 8 bit, il numero binario da inviare sarà 11111111 che convertito in decimale è 255, l'istruzione è quindi
DlPortWritePortUchar &H378, 255
A questo punto non mi rimane che fornire il programmino da me compilato che ho chiamato AutoLed
Il programma è molto semplice e intuitivo, è composto da 3 pulsanti, ON , OFF, AUTO
Cliccando su ON si portano a livello logico alto tutti gli 8 bit con la relativa accensione dei led ad essi collegati,
Cliccando su OFF ovviamente si portano a livello logico basso tutti gli 8 bit con il relativo spengimento dei led
Cliccando su AUTO si abilita il funzionamento Automatico, cioè i led si accenderanno solo quando viene premuta la barra spaziatrice e rimarranno accesi per un tempo di circa 30 secondi, ovviamente premendo nuovamente la barra prima dello scadere dei 30 secondi il timer si azzera e quindi dovranno passare nuovamente 30 secondi.
Una scritta rossa ricorda la modalità scelta.
Quando viene premuto uno dei 3 pulsanti il programma automaticamente si riduce a icona e rimane in background, cioè rimane attivo nella TrayBar accanto all'orologio.
Questa è la particolarità del mio programma, infatti, se cercate in rete, troverete vari tutorial e programmi già compilati simili al mio, però il mio programma ha la particolarità di lavorare in background, cioè di rimanere attivo e ricevere comandi da tastiera anche quando è ridotto a icona, cosa che normalmente i programmi non fanno.
Questa piccola particolarità è essenziale per il corretto funzionamento, qualsiasi applicazione sarà aperta e attiva, il mio programma anche se ridotto a icona, rimarrà vigile, e farà accendere i led non appena verrà premuta la barra spaziatrice.
Aggiungo che utenti di windows XP potrebbero avere problemi perchè la porta potrebbe non essere attiva, per questo in rete esiste un eseguibile per attivare la porta LPT, DLportIO Insatall in tal caso riporto quà il file da scaricare e installare.
Per chi volesse cimentarsi nella compilazione di programmi in Visual Basic,oltre al form contenente i vari pulsanti, è necessario caricare un modulo per far interagire Visaul Basic con la porta Lpt, il modulo chiamato DlPortIO si trova facilmente in rete, comunque riporto quà il file da scaricare.
Per maggior chiarezza riporto la lista dei file da scaricare:
AutoLed è il software da me compilato per il funzionamento del progetto
DlPortIO insatll è un eseguibile da installare solo se la porta lpt non dovesse essere attiva , se non è attiva ce ne accorgiamo perchè il programma restituisce un errore dicendo che non trova il file dlportio.sys
DlPortIO è il modulo .bas da inserire in Visual Basic per chi volesse cimentarsi nella compilazione di programmi.
Ripeto che sia il file DlPortIO insatll che il file DlPortIO.bas sono file che si trovano gratuitamente in rete per far interagire correttamente Visaul Basic con la porta Lpt.
Io li ho scaricati e postati così come si trovano in rete senza apportare nessuna modifica.