POV (Persistence of Vision)

Salve ragazzi, oggi mi è arrivato finalmente il primo numero di Wired e ho visto questo articolo: Costruisci un POV e illumina le ruote della tua bici - Wired.it

Ho così cercato su internet come realizzare questo POV! Sono finito fra le mura di casa, c'è un articolo su Arduino Scuola che ne parla: http://scuola.arduino.cc/it/content/costuisciti-pov-persistence-vision-tua-bicicletta
Avrei un paio di domande.:

  • Perchè nello schema circuitale usa dei transistor e non controlla i led direttamente?
  • Si può sostituire il sensore magnetico con un sensore tilt? (Vorrei fare il circuito non da attaccare alla bicicletta ma da agitarlo verso destra e sinistra nelle mani, ho visto qualche video dove lo facevano)
  • Nel codice sorgente è presente questa riga:
    unsigned char z = REVERSE ? (sizeof(textString)-k-1) : k;
    Cosa significa esattamente? A cosa serve il punto interrogativo e i duepunti?
    Anche più avanti c'è una riga simile:
    byte b = REVERSE ? font[ch][charWidth-i-1] : font[ch][i];

è una forma contratta di if.

anzichè scrivere:

unsigned char z;
if (REVERSE){
z = sizeof(textString)-k-1
}else{
z=k;
}

puoi scrivere :

unsigned char z = REVERSE ? (sizeof(textString)-k-1) : k;

lesto:
è una forma contratta di if.

anzichè scrivere:

unsigned char z;
if (REVERSE){
z = sizeof(textString)-k-1
}else{
z=k;
}

puoi scrivere :

unsigned char z = REVERSE ? (sizeof(textString)-k-1) : k;

Afferrato, e per il resto?

Per l'if t'han già risposto :slight_smile:
Il transistor credo sia per evitare di danneggiare l'ATMega, visto che l'output massimo per ogni pin è di 20mA 40mA, e se metti un LED 'potente' potresti far saltare il micro..
Però, scegliendo una resistenza un po' più grande, non ci dovrebbero essere problemi :wink:
Il tilt lo puoi utilizzare, certo: io sto costruendo un POV con un accelerometro.
Solo dovrai cambiare il codice per visualizzare il messaggio "al contrario" ogni volta che il tilt cambia stato...

NeXTWay:
Per l'if t'han già risposto :slight_smile:
Il transistor credo sia per evitare di danneggiare l'ATMega, visto che l'output massimo per ogni pin è di 20mA.
Però, scegliendo una resistenza un po' più grande, non ci dovrebbero essere problemi :wink:
Il tilt lo puoi utilizzare, certo: io sto costruendo un POV con un accelerometro.
Solo dovrai cambiare il codice per visualizzare il messaggio "al contrario" ogni volta che il tilt cambia stato...

Come faccio a visualizzar il messaggio al contrario?
Puoi darmi qualche chiarimento anche sulla libreria del font?

Cmq complimenti all'articolista di Wired.... :roll_eyes:

Se la curiosa abbreviazione POV ti ricorda solo quella categoria del porno che mette al centro il punto di vista (Point Of View)

Un'altra immagine comparativa non riusciva a trovarla?

Ti faccio un esempio pratico: prendi il carattere 'A'.
In libreria c'è un array bidimensionale ed è definito così:
{0x7e,0x09,0x09,0x09,0x7e}, // A

Convertiamo in binario

7e HEX = 11111110 BIN
09 HEX = 00001001 BIN
09 HEX = 00001001 BIN
09 HEX = 00001001 BIN
7e HEX = 11111110 BIN

Gira la testa di 90 gradi verso destra e guarda la tabella di conversione.
Immagina ogni 1 come un LED acceso ed ogni 0 come un LED spento.
Cosa vedi?
Il micro cambia velocemente i LED fra questi stati per mostrarti la lettera.
Una volta finito con una lettera, fa una pausa e passa alla successiva :slight_smile:

Perfetto, ho capito, il problema che rimane adesso è come faccio ad utilizzare il sensore tilt!
Stavo facendo qualche esperimento del tipo: faccio avanti e indietro due volte ogni secondo e si accende il led però mi sono accorto che l'interruttore ha bisogno di un debounce... E qui mi sono confuso un poco...