POV con BS2

ossia come sfruttare la “persistenza della visione” per scrivere qualcosa in aria tramite una Parallax BasicStamp2.

La persistenza della visione (persistence of vision) ci illude che un film non sia composto da fotogrammi.

In base allo stesso principio sono nati dei dispositivi elettronici che permettono di vedere delle lettere, dove in realtà ci sono solo dei LED accesi a veloce (ma non casuale) intermittenza.

Mi sono cimentato nella costruzione di uno di questi aggeggi. Ecco come…

Il cervello di tutto è la mia BasicStamp, a cui ho collegato 5 LED (con opportuna resistenza). Banale.

Si passa poi alla programmazione del microcontrollore.
Il concetto alla base è comporre le lettere usando i LED come dei “pixel in sequenza”.
Ad esempio per scrivere una “I” vanno tenuti accessi tutti i LED. Una lettera più complessa come la “O” si ottiene componendo una “I”, poi solo i 2 LED esterni e poi ancora una “I”.
Tutto ciò deve avvenire in tempi veloci; nel mio caso ad esempio ogni lettera rimane accesa per 2 microsecondi (o poco più per quelle più complesse).

Avviato il programma dunque non si riuscirà a vedere altro che lucette lampeggianti.
Agitando però il dispositivo a una certa distanza (e in penombra) si riescono a percepire i messaggi voluti.

Per scoprire se tutto funziona a dovere si possono fare delle foto a lunga esposizione. Si riesce così a capire con tutta calma se le lettere sono state composte bene oppure c’è un baco nel software.

Ecco il codice BS2 che ho scritto e usato (perchè diavolo il tag <code> si chiude alla seconda riga ? mistero di WordPress…):'{$STAMP BS2}
'Mostra lettere

‘Da cambiare in base alle porte usate
A con 12
B con 9
C con 6
D con 3
E con 0

debug “Ciao mondo”, CR

main:
‘Per scrivere una lettera basta chiamare la rispettiva subroutine
gosub LetC
gosub LetI
gosub LetA
gosub LetO
gosub spazio
gosub LetE
gosub LetL
gosub LetE
gosub LetN
gosub LetA
gosub spazio
gosub spazio
goto main
end

‘+——————–+
‘| SPAZI E SEGNI
‘+——————–+
separatore:
gosub spegni
gosub pausa
gosub pausa
return

spazio:
gosub separatore
gosub separatore
gosub separatore
return

pausa:
pause 2
return

‘+——————–+
‘| LETTERE
‘+——————–+

LetA:
gosub BCDE
gosub AD
gosub AD
gosub BCDE
gosub separatore
return

LetC:
gosub ABCDE
gosub AE
gosub AE
gosub AE
gosub separatore
return

LetE:
gosub ABCDE
gosub ACE
gosub ACE
gosub ACE
gosub separatore
return

LetI:
gosub ABCDE
gosub separatore
return

LetL:
gosub ABCDE
gosub EE
gosub EE
gosub EE
gosub separatore
return

LetN:
gosub ABCDE
gosub BB
gosub CC
gosub ABCDE
gosub separatore
return

LetO:
gosub ABCDE
gosub AE
gosub AE
gosub ABCDE
gosub separatore
return

‘+——————–+
‘| SEGMENTI
‘+——————–+
‘ alla base della composizione delle lettere
ABCDE:
low A
low B
low C
low D
low E
gosub pausa
return

BCDE:
high A
low B
low C
low D
low E
gosub pausa
return

ACE:
low A
high B
low C
high D
low E
gosub pausa
return

AD:
low A
high B
high C
low D
high E
gosub pausa
return

AE:
low A
high B
high C
high D
low E
gosub pausa
return

BB:
high A
low B
high C
high D
high E
gosub pausa
return

CC:
high A
high B
low C
high D
high E
gosub pausa
return

EE:
high A
high B
high C
high D
low E
gosub pausa
return

spegni:
high A
high B
high C
high D
high E
return

Maggiori informazioni riguardo la programmazione e l’uso di BasicStamp si possono trovare in rete. Non mi dilungo perciò in questa sede.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s