Gestione display a sette segmenti

F. Tamigi | Un'esercitazione Tinkercad sulla gestione di un display a sette segmenti con Arduino.
Aiutandosi con i commenti all’interno del codice, modificare il comportamento del circuito come segue:
1) modificare il periodo di scansione del ciclo di multiplexing, attualmente pari a 5 millisecondi, in un valore molto più elevato (per esempio, 200 millisecondi) in modo che la scansione del display sia chiaramente osservabile. Simulare il circuito premendo il  relativo pulsante per verificare che il comportamento del circuito sia quello previsto;
2) sulla base della precedente osservazione spiegare come funziona il multiplexing e su quale principio è basato;
3) arrestare la simulazione, riportare la durata di scansione al valore originario e modificare il codice affinché venga mostrato il messaggio CIAO. Spiegare con opportuni commenti le modifiche apportate. Simulare ancora e quindi effettuare uno screenshot del circuito e uno del codice modificato;
4) interrompere la simulazione e ripetere tutto quanto svolto al punto precedente, questa volta mostrando sul display il numero 37514. Catturare anche in questo caso gli screenshot.
NB: Se non disponete di un account su Tinkercad, registratevi gratis e fate il vostro lavoro da zero, senza copiare il mio file.

Ecco il codice per Arduino:

// cifre da mostrare
const byte figures[5][7] = {{0, 1, 1, 0, 1, 1, 1},
            {1, 0, 0, 1, 1, 1, 1},
            {0, 0, 0, 1, 1, 1, 0},
            {0, 0, 0, 1, 1, 1, 0},
            {1, 1, 1, 1, 1, 1, 0}};

void setup() {
  for (byte pin = 2; pin <= 13; pin++) {
    pinMode(pin, OUTPUT);
    digitalWrite(pin, LOW);
    // imposta tutti i pin da 2 a 13 come uscite
    // e li pone a livello basso
  }
}

void loop()
{
  for (byte A = 2; A <= 6; A++) {
  // scorre i pin degli anodi comuni (da 2 a 6)
  // che corrispono alle cifre da 1 a 5
    for (byte K = 7; K <= 13; K++)
    // scorre i pin dei catodi (da 7 a 13)
    // che corrispono ai segmenti da 'a' a 'g'
      digitalWrite(K, !figures[A - 2][K - 7]);
      // accende o spegne i segmenti a valore invertito
      // in quanto il pilotaggio dei catodi è negato
    digitalWrite(A, HIGH);
    // accende la cifra ponendo alto l'anodo comune
    delay(5);
    // attende il periodo di multiplexing
    digitalWrite(A, LOW);
    // spegne la cifra
  }
}

I collegamenti all'LCD
gestione LCDpng