int myPins[] = {2, 3, 4, 5}; // Definisce i pin di uscita
int t = 1000; // Durata di un evento in millisecondi
int i, j, k; // Variabili di appoggio
int n_bit = 4; // numero di bit
void setup(){
for ( i = 0; i < n_bit; i++)
pinMode(myPins[i], OUTPUT); // Assegna la funzione di uscita a ogni pin
}
void loop() {
for( i = 0; i < pow(2, n_bit); i++ ) { // i definisce il generico bit
j = i; // j serve per non modificare i
for ( k = 0; k < n_bit; k++ ) { // scorre i vari bit
digitalWrite(myPins[k], j % 2); // estrae il bit meno significativo (LSB)
j = j >> 1; // sposta i bit a destra perdendo il LSB
}
delay(t); // attende un tempo pari a t millisecondi
}
}