Modulatore FSK con Arduino

PROF. TAMIGI
Un'esercitazione Tinkercad sulla modulazione FSK.
Aiutandosi con i commenti all’interno del codice, modificare il comportamento del circuito come segue:
1) portare la cadenza di emissione dei simboli, attualmente pari a 50 bps (bit per secondo), al valore di 33 bps. 
2) simulare il circuito, premendo il relativo pulsante, per verificare che il comportamento del circuito sia quello previsto. Effettuare uno screenshot del codice modificato e spiegare che cosa è cambiato nella simulazione modificando la cadenza;
3) modificare il codice affinché i toni corrispondenti ai bit 0 e 1 siano rispettivamente 1250 Hz e 1650 Hz. Anche in questo caso commentare opportunamente nel codice le modifiche apportate. Simulare ancora e quindi effettuare uno screenshot del codice. Che cosa è cambiato questa volta nella simulazione?
4) modificare il codice in modo che venga trasmesso il messaggio Hello world!. Simulare nuovamente. Commentare adeguatamente e catturare anche in questo caso lo screenshot del codice. Che cosa ricorda il suono emesso da questo modulatore? Commentare.
Per la codifica del messaggio da trasmettere al punto 3) consultare la tabella ASCII
NB: Se non disponete dell'account Tinkercad, registratevi gratis e fate il lavoro da zero, senza copiare il mio file.

Ecco codice del modulatore:

#define UTP 2
#define OUT 4

#define FREQ_0 1250
#define FREQ_1 1650

#define DUR 33
#define PAUSE 1000

// sequenza di bit da trasmettere
char seq[] = "10101101 00111101 01000010 11100010 10111011 00010010";

void setup() {
  pinMode(UTP, OUTPUT);
  pinMode(OUT, OUTPUT);
    // definisci i piedini UTP e OUT come uscite
}

void loop() {
  for (int n = 0; n < sizeof(seq); n++) {
    // scorri la stringa di bit dall'inizio alla fine
   
    if (seq[n] == '0') {
      tone(UTP, FREQ_0);
        // se il bit in posizione n è zero
        // emetti sul piedino UTP
        // un tono con frequenza FREQ_0
   
      digitalWrite(OUT, LOW);
        // poni bassa l'uscita
        // per indicare che il bit trasmesso è zero
    }

    else if (seq[n] == '1') {
      tone(UTP, FREQ_1);
        // se invece il bit in posizione n è uno
        // emetti sul piedino UTP
        // un tono con frequenza FREQ_1

      digitalWrite(OUT, HIGH);
        // poni alta l'uscita
        // per indicare che il bit trasmesso è uno
    }
 
    else continue;
      // se alla posizione n non c'è un bit salta avanti
   
    delay(DUR);
      // tono di durata DUR (millisecondi)
  }
 
  noTone(UTP);
    // arresta l'emissione del tono

  delay(PAUSE);
    // pausa di durata PAUSE (millisecondi)
    // prima di ripetere la trasmissione
}