Semplice lanciarazzi Lego

Le funzioni posso ricevere un parametro. Per iniziare potresti avere una funzione DisplayNum() a cui passi 0-9 e -1 per spegnere. Per ora non ottimizzato:

void DisplayNum(p_Num)
{ switch(p_Num)
  { case -1:      // spengo tutti i segmenti, anche DP
      digitalWrite(pinDP, LOW);     
      for (int i = 4; i <= 10; i++) digitalWrite(ledPin, LOW);
      break;
    case 0:  
      ...
      break;
    case 1:
      digitalWrite(8, LOW); // scrivo il numero 1
      digitalWrite(9, HIGH);
      digitalWrite(10, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      break;
etc.
}

Nel programma scriverai:

delay(900);
DisplayNum(7);
digitalWrite(pinDP, HIGH);
tone(pinPiezo, notes[1]);

invece di:

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]);