📈 Arduino • Serial Plotter • Funzioni

Plotter Seriale Arduino: seno, coseno, onda quadra e triangolare

Usiamo il Serial Plotter dell’IDE Arduino per visualizzare graficamente nel tempo funzioni matematiche e forme d’onda generate dallo sketch.

DifficoltàPrincipiante / Intermedia
Baud rate9600
SegnaliSeno • Coseno • Quadra • Triangolare
In poche parole: invece di leggere soltanto numeri nel Monitor Seriale, inviamo campioni numerici via Serial.print() e li osserviamo come grafici nel tempo con il Plotter Seriale.

Cosa imparerai

  • come usare il Plotter Seriale dell’IDE Arduino;
  • come inviare una o più serie di dati tramite seriale;
  • come disegnare seno e coseno nello stesso grafico;
  • come generare un dente di sega;
  • come simulare un’onda quadra;
  • come generare un’onda triangolare;
  • come separare correttamente più valori sulla stessa riga.

Che cos’è il Plotter Seriale

Il Plotter Seriale dell’IDE Arduino permette di rappresentare graficamente nel tempo i valori inviati dalla scheda. È uno strumento molto pratico per osservare l’andamento di sensori, variabili e funzioni senza utilizzare software esterni.

Arduino Serial Plotter con seno e coseno
Serial Plotter Arduino

Esempi di visualizzazione dei dati tramite il Plotter Seriale di Arduino.

Materiale necessario

🔌 Arduino Uno
💻 Computer con Arduino IDE
🔗 Cavo USB

🧰 Kit Arduino consigliato

Molti progetti del sito utilizzano sensori, breadboard, LED e altri componenti elettronici. Un kit completo può essere comodo per sperimentare anche con il Plotter Seriale usando dati reali.

👉 Guarda il kit Arduino consigliato

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

📘 Vuoi imparare Arduino passo dopo passo?

Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.

👉 Scopri i miei libri su Arduino

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Le forme d’onda generate

FunzioneCome viene generata
Seno e cosenosin() e cos()
Dente di segaValore crescente da 0 a 90
Onda quadraBlocchi ripetuti a 0 e 100
Onda triangolareSalita 0→100 e discesa 100→0

Codice Arduino commentato

Generatore di funzioni per Serial Plotter
// ==========================================================
// ARDUINO SERIAL PLOTTER - GENERATORE DI FUNZIONI
// Seno, coseno, dente di sega, onda quadra e triangolare
// ==========================================================

void setup() {

 // Avvia la comunicazione seriale.
 // Il Plotter Seriale dovrà usare lo stesso baud rate.
 Serial.begin(9600);
}

void loop() {

 // --------------------------------------------------------
 // 1. SENO E COSENO
 // --------------------------------------------------------
 // La variabile viene incrementata da 0 a 90
 // con passo 0.1 e invia due valori sulla stessa riga.
 for (float angolo = 0; angolo <= 90; angolo += 0.1) {

 // NOTA:
 // sin() e cos() in Arduino lavorano in radianti.
 // In questo esempio manteniamo direttamente il valore della variabile.
 float seno = sin(angolo);
 float coseno = cos(angolo);

 // Due valori separati da uno spazio =
 // due curve visualizzate contemporaneamente.
 Serial.print(seno);
 Serial.print(" ");
 Serial.println(coseno);

 delay(1);
 }

 // --------------------------------------------------------
 // 2. DENTE DI SEGA
 // --------------------------------------------------------
 // Il valore sale progressivamente da 0 a 90
 // e poi, al termine del ciclo, riparte da zero.
 for (float i = 0; i <= 90; i += 1) {

 Serial.println(i);

 delay(1);
 }

 // --------------------------------------------------------
 // 3. ONDA QUADRA - LIVELLO BASSO
 // --------------------------------------------------------
 // Mantiene il valore 0 per circa 101 campioni.
 for (int a = 0; a <= 100; a++) {

 int livelloBasso = 0;

 Serial.println(livelloBasso);

 delay(1);
 }

 // --------------------------------------------------------
 // 4. ONDA QUADRA - LIVELLO ALTO
 // --------------------------------------------------------
 // Mantiene il valore 100 per altri 101 campioni.
 for (int a = 0; a <= 100; a++) {

 int livelloAlto = 100;

 Serial.println(livelloAlto);

 delay(1);
 }

 // --------------------------------------------------------
 // 5. ONDA TRIANGOLARE - SALITA
 // --------------------------------------------------------
 for (float i = 0; i <= 100; i += 1) {

 Serial.println(i);

 delay(1);
 }

 // --------------------------------------------------------
 // 6. ONDA TRIANGOLARE - DISCESA
 // --------------------------------------------------------
 for (float i = 100; i >= 0; i -= 1) {

 Serial.println(i);

 delay(1);
 }
}

Seno e coseno: attenzione ai radianti

Nel codice la variabile angolo viene incrementata fino a 90, ma le funzioni sin() e cos() di Arduino interpretano il parametro in radianti, non in gradi.

Quindi: il codice produce comunque due onde sinusoidali, ma il numero 90 non significa “90 gradi”. Se vuoi lavorare realmente in gradi devi convertire prima il valore in radianti.
Conversione corretta gradi → radianti
float gradi = 45.0;

float radianti = gradi * PI / 180.0;

float valore = sin(radianti);

Come visualizzare due curve contemporaneamente

Nel blocco seno/coseno lo sketch invia due valori sulla stessa riga:

Due serie nel Plotter
Serial.print(seno);
Serial.print(" ");
Serial.println(coseno);

Lo spazio separa i due valori e il Plotter Seriale li interpreta come due serie distinte.

Concetto chiave: una riga = un istante di campionamento. Più valori sulla stessa riga = più curve aggiornate nello stesso momento.

Dente di sega

La funzione cresce progressivamente da 0 a 90. Quando il ciclo termina, il programma passa alla sezione successiva; se isolassi soltanto questo blocco e lo ripetessi continuamente, vedresti il classico andamento crescente con ritorno brusco allo zero.

Onda quadra

L’onda quadra viene simulata inviando molti campioni consecutivi a 0 e poi molti campioni consecutivi a 100.

FaseValore inviatoCampioni
Basso0circa 101
Alto100circa 101

Onda triangolare

Qui il valore sale da 0 a 100 e subito dopo scende da 100 a 0. È un ottimo esempio per capire come un semplice contatore possa diventare una forma d’onda grafica.

Aprire il Plotter Seriale

Dopo aver caricato lo sketch, apri il Plotter Seriale dall’IDE Arduino e imposta lo stesso baud rate utilizzato nel codice, cioè 9600 baud.

Nota: posizione del comando e scorciatoie possono cambiare tra versioni dell’IDE Arduino. L’elemento fondamentale è impostare nel Plotter lo stesso baud rate dello sketch.

Esempi del Plotter Seriale

Arduino IDE Serial Plotter
Grafico Arduino Serial Plotter

Come usare il Plotter con un sensore vero

Una volta capito il principio puoi sostituire le funzioni matematiche con la lettura di un sensore.

Esempio con ingresso analogico A0
void setup() {

 Serial.begin(9600);
}

void loop() {

 // Legge il valore analogico 0...1023
 int valore = analogRead(A0);

 // Lo invia al Plotter Seriale
 Serial.println(valore);

 delay(10);
}

Questo permette di osservare graficamente, per esempio, un potenziometro, un sensore di luce, un microfono o un flex sensor.

Scarica lo sketch

⬇️ Scarica il generatore di funzioni

Debug rapido

  • controlla che Arduino sia collegato alla porta corretta;
  • verifica che il baud rate sia 9600 sia nello sketch sia nel Plotter;
  • non aprire contemporaneamente due programmi che occupano la stessa porta seriale;
  • se vuoi più curve, stampa più valori sulla stessa riga separandoli correttamente;
  • se il grafico è troppo veloce, aumenta delay();
  • se seno e coseno non corrispondono agli angoli attesi, ricorda che sin() e cos() usano radianti.

Varianti del progetto

  • visualizzare un potenziometro in tempo reale;
  • confrontare due sensori contemporaneamente;
  • generare una sinusoide con gradi convertiti in radianti;
  • modificare ampiezza e offset delle forme d’onda;
  • visualizzare dati di temperatura e pressione;
  • osservare il rumore di un ingresso analogico.

Cosa devi ricordare

  • Il Plotter Seriale trasforma valori seriali in grafici nel tempo.
  • La comunicazione seriale del progetto usa 9600 baud.
  • Più valori sulla stessa riga generano più curve.
  • sin() e cos() lavorano in radianti.
  • Dente di sega, onda quadra e triangolare possono essere generate con semplici cicli for.
  • Lo stesso strumento è utilissimo per visualizzare sensori reali.

Domande frequenti

Posso usare il Plotter Seriale senza sensori?

Sì. Questo progetto ne è un esempio: le forme d’onda vengono generate matematicamente direttamente nel codice.

Come mostro due segnali nello stesso grafico?

Stampa i due valori sulla stessa riga, separati da spazio o da un formato compatibile con la versione dell’IDE utilizzata, e chiudi la riga con Serial.println().

Perché sin(90) non vale 1?

Perché Arduino interpreta 90 come 90 radianti, non 90 gradi. Per lavorare in gradi devi prima convertire il valore in radianti.

Posso usare il Plotter con un sensore analogico?

Sì. Basta leggere il sensore con analogRead() e inviare il valore con Serial.println().