Allora, vediamo un pò, dimmi anche se la soluzione è corretta!
L'idea che mi è venuta è quella di creare una sorta di sistema per il cambio sequenziale al volante di un go-kart, senza perderci troppo nei particolari generali il display 7 segmenti deve andare da 1 a 6 per le marce ed indicare "n" per la folle.
Per prima cosa ho impostato le varialbili così:
// numero dei pin di arduino collegati ai segmenti
const byte seg_A = 2;
const byte seg_B = 3;
const byte seg_C = 4;
const byte seg_D = 5;
const byte seg_E = 6;
const byte seg_F = 7;
const byte seg_G = 8;
// array dei segmenti
const byte segments[7] = {
seg_A, seg_B, seg_C, seg_D, seg_E, seg_F, seg_G,};
// array byte in uscita per ogni valore (l'ultimo valore non è mai utilizzato)
const byte numbers [7] = {
0b10101011, // n
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
};
// variabile numero di marcia
byte gear = 0;
A questo punto c'è tutti il sistema che legge due pulsanti ed aumenta o diminuisce il valore di "gear" fino al masimo di 6 e minimo di 1, poi ho impostato un altro pusante che nel caso la marcia sia la 1 o la 2 inserisce la folle con una serie di if.
Ad ogni cambio di stato mando in esecuzione la funzione qui sotto per il cambio di scritta sul display:
void sevseg_write(){
for (byte i=0; i<7; i++){
digitalWrite(segments[i], bitRead(numbers[gear], i));
}
}
Che ne dici? Come funzionare funziona!

Vorrei provare anche a metterlo in pratica ma non ci capisco molto su hardware e gestione software dei motori passo passo, se hai qualche fonte dove poter imparare qualcosa te ne sarei grato!
