Se a qualcuno interessa fare dei giochi di luce personalizzati, vi volevo dare un piccolo spunto.
Lavorando a livello di singoli bit, possiamo pensare di mappare le 28 uscite dei led, tramite un corrispondente bit di posizione, quindi ad esempio al numero binario ….1011 significa che vogliamo accendere (partendo dal bit più a destra meno significativo) il GPIO 0, il GPIO 1 e il 3, ma lasciare spento il secondo.
Così passando un numero ad un programma (io l'ho fatto in C) passiamo numeri (interi lunghi) che vanno da zero (tutti i led spenti) a 268435455 tutti i led accesi, ovvero numero formato da una sequenza di tutti uni (28 uni per la precisione).
Ma come ricavare questo numero rapidamente?
Ad esempio con un foglio excel (allegato), che quando poniamo ad uno la casella diventa rossa:
Immagine Excel
Per leggere questa sequenza, basta fare l'operazione inversa lavorando sui bit.
Ad esempio in C si può fare:
for (int i=0; i<=27; i++)
{
e = pow (2 ,i);
acceso = ((e & sq[j]) > 0); //Setta il bit a 1 o zero
digitalWrite(p[i],acceso);
}
dove sq[] è il vettore che contiene la sequenza di numeri.
Se vi serve il codice completo lo pubblico.