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.
