ecco il codice indentato meglio:
#include <Servo.h>
Servo myServo;
unsigned long prevMillis = 0; // variabile per il conteggio del tempo precedente
unsigned long currMillis = 0; // variabile per il conteggio del tempo attuale
const long segLed = 550; // durata di 0,55 sec del segmento led acceso
int pulsanteStato = 0; // variabile per verificare lo stato del pulsante
int angolo = 0; // variabile per impostare l'angolo di rotazione del servo
int ledPin = 0; // variabile per i pin del display
int notes[] = { 392 }; // nota sol
void setup() {
for (int ledPin = 3; ledPin <= 11; ledPin++) { // i led del display numerico e il piezo vanno dal pin 3 al 11
pinMode(ledPin, OUTPUT); // pin dei led e del piezo in output
digitalWrite(ledPin, LOW);// tutti led e piezo spenti
}
ledPin = 4; // imposto il primo segmento del display da accendersi (segmento C)
pinMode(2, INPUT); // imposto il pin 2 del pulsante in input
}
void loop() {
pinMode(12, OUTPUT);
digitalWrite(12, LOW); // comando del servo a zero
currMillis = millis();
pulsanteStato = digitalRead(2); // leggo lo stato del pulsante per verificare se e´ premuto
if (pulsanteStato == LOW) { // se non ho premuto il pulsante
if (currMillis - prevMillis >= segLed) { // controllo se son passati gli 0,55 sec dall'accensione del segmento led di prima
if (ledPin != 9) { // se non ho ancora acceso l'ultimo segmento del display
digitalWrite(ledPin, LOW); // spengo il segmento acceso in precedenza
ledPin++; // incremento la variabile dei pin del display per accendere il segmento successivo
digitalWrite(ledPin, HIGH); // accendo il segmento
} else { // quando ho acceso l'ultimo segmento collegato al pin Arduino 9
digitalWrite(ledPin, LOW);
ledPin = 4; // re-imposto la variabile dei led a 4, pin di Arduino collegato al primo segmento, e inizio nuovamente la sequenza
digitalWrite(ledPin, HIGH);
}
prevMillis = currMillis;
}
}
if (pulsanteStato == HIGH) { // se ho premuto il pulsante
lanciapinnar(); // vado alla sequenza di lancio
}
}
/*
sequenza di attivazione servo con conto alla rovescia
*/
void lanciapinnar() {
for (int ledPin = 3; ledPin <= 10; ledPin++) { // tutti led e piezo spenti
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
digitalWrite(8, HIGH); // scrivo il numero 9, lampeggio DP e suono bip 1 volta
digitalWrite(9, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
digitalWrite(10, HIGH);
digitalWrite(5, HIGH);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(900);
digitalWrite(6, HIGH); // scrivo il numero 8, lampeggio DP e suono bip 1 volta
digitalWrite(5, HIGH);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(900);
digitalWrite(5, LOW); // scrivo il numero 7, lampeggio DP e suono bip 2 volte
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(10, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(400);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(400);
digitalWrite(8, HIGH); // scrivo il numero 6, lampeggio DP e suono bip 2 volte
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(400);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(400);
digitalWrite(8, HIGH); // scrivo il numero 5,, lampeggio DP e suono bip 3 volte
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(233);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(233);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(233);
digitalWrite(8, LOW); // scrivo il numero 4, lampeggio DP e suono bip 3 volte
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(233);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(233);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(233);
digitalWrite(8, HIGH); // scrivo il numero 3, lampeggio DP e suono bip 4 volte
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(8, HIGH); // scrivo il numero 2, lampeggio DP e suono bip 4 volte
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(100);
digitalWrite(3, LOW);
noTone(11);
delay(150);
digitalWrite(8, LOW); // scrivo il numero 1, accendo DP e suono bip 1 secondo
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(3, HIGH);
tone(11, notes[1]);
delay(1000);
digitalWrite(3, LOW);
noTone(11);
for (int ledPin = 3; ledPin <= 10; ledPin++) { // spengo il display e il piezo
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
myServo.attach(12); // imposto il pin di comando del servo sul 12
angolo = 90; // imposto l'angolo di 90 gradi per il servo
myServo.write(angolo); // muovo il servo
delay (1000); // attendo 1 secondo
angolo = 0; // imposto l'angolo a 0 per il servo
myServo.write(angolo); // riposiziono il servo
delay(3000); // attendo 3 secondi
}