Arduino: utilizzo del metodo parseInt() per la conversione di un stringa di testo che rappresenta un numero in un numero

Nel primo esercizio della lezione: Arduino: Stepper 28BYJ-48 – AccelStepper library veniva chiesto di impostare i parametri di azionamento del motore passo paso da Serial Monitor, questa operazione può essere svolta usando la classe toInt(), ma in modo più efficace e semplice possiamo usare la classe parseInt(). In questa breve lezione un esempio di controllo del lampeggio di un LED da Serial Monitor mediante l’uso di parseInt().

È possibile ricevere numeri con più di una cifra utilizzando i metodi parseInt e parseFloat che semplificano l’estrazione di valori numerici da seriale. (Funziona anche con Ethernet e altri oggetti derivati dalla classe Stream)

Serial.parseInt() e Serial.parseFloat() leggono i caratteri seriali e restituiscono la loro rappresentazione numerica.

I caratteri non numerici prima del numero vengono ignorati e il numero termina con il primo carattere che non è una cifra numerica (o “.” Se si utilizza parseFloat). Se non ci sono caratteri numerici nell’input, le funzioni restituiscono 0, quindi bisogna controllare i valori zero e gestirli in modo appropriato.

Nel dettaglio

  • I caratteri iniziali che non sono cifre o sono numeri negativi vengono ignorati;
  • L’analisi si interrompe quando non sono stati letti caratteri per un valore di tempo di timeout che può essere configurato oppure viene letta una non cifra;
  • Se non sono state lette cifre valide quando si verifica il timeout (vedere Serial.setTimeout ()), viene restituito 0; Serial.parseInt () eredita dalla classe Stream.

Se avete la Serial Monitor configurata per inviare una nuova riga o un ritorno a capo (o entrambi) quando fate clic su invia, parseInt o parseFloat proveranno ad interpretare il return come numero, ma poiché il ritorno a capo non è un numero il valore restituito da parseInt o parseFloat sarà zero.

Nell’esempio che segue un invio imposta blinkRitardo a zero il che implica che il LED non lampeggia.

1// Prof. Maffucci Michele
2// 10.11.2020
3// Impostazione del delay del Blink da tastiera
4 
5int lampeggioRitardo = 0;
6int chiave = 0;
7void setup()
8{
9  Serial.begin(9600); // inizializzazione della serial monitor
10  pinMode(LED_BUILTIN, OUTPUT); // imposta il pin come output
11}
12void loop()
13{
14  // ritardo per evitare una doppia scrittura
15  // della prima stampa a monitor
16  delay(1000);
17 
18  // consente di visualizzare sulla Serial Monitor
19  // una sola stampa delle stringa
20  if (chiave == 0) {
21    Serial.print("Inserisci il ritardo in millisecondi: ");
22    chiave = 1;
23  }
24 
25  // Controlla se è disponibile almeno un carattere sulla seriale
26  // La Serial.available() restituisce
27  // 1 se presente un cattere,
28  // 0 se non è presente un carattere
29   
30  if (Serial.available())
31  {
32    int r = Serial.parseInt(); // in r viene memorizzato il valore inserito in numero
33    if (r != 0) {
34      lampeggioRitardo = r;
35      Serial.println(lampeggioRitardo);
36 
37      // abilita alla stampa di una nuova stringa:
38      // "Inserisci il ritardo in millisecondi: "
39      chiave = 0;
40    }
41  }
42  lampeggio(); // funzione che fa lampeggiare il LED su Arduino
43}
44 
45// il LED lampeggia con i tempi di
46// accensione e spegnimento determinati da lampeggioRitardo
47void lampeggio()
48{
49  digitalWrite(LED_BUILTIN, HIGH);
50  delay(lampeggioRitardo); // il delay dipende dal valore in lampeggioRitardo
51  digitalWrite(LED_BUILTIN, LOW);
52  delay(lampeggioRitardo);
53}

Esercizio 1
Dato un LED RGB connesso ad Arduino, realizzare un selettore che da Serial Monitor consente di controllare l’accensione e lo spegnimento del rosso, del verde e del blu

Esercizio 2
Svolgere l’esercizio 1 della lezione Stepper 28BYJ-48 – AccelStepper library usando la parseInt()

Installare Raspberry Pi Desktop su VirtualBox

Questa Didattica Digitale Integrata ci costringe e favorisce modalità di attività di laboratorio assolutamente diverse, fare laboratorio senza poter toccare gli strumenti  è complicato, ma certamente ai ragazzi possono essere fornite competenze che risulteranno utilissimi nei mesi prossimi durante le attività laboratoriali in presenza, quando come si spera la situazione didattica ritornerà alla normalità. Ho la fortuna di avere nelle mie classi molti studenti in cui: “brilla la luce del maker” 🙂 e quindi molto disposti alla sperimentazione anche personale a casa. Alcuni mi condividono le registrazioni video delle loro sperimentazione o mi mostrano in presenza online i circuiti realizzati.

In questi giorni ho pensato di realizzare questo tutorial introduttivo, ritengo utile per chi non è pratico nell’uso di Raspberry Pi, ma soprattutto utile per i miei studenti che mi hanno espresso la volontà di realizzare a distanza un sistema domotico su Raspberry Pi. Prima di cominciare con l’acquisto dell’hardware, ritengo indispensabile conoscere il sistema operativo Raspberry Pi Desktop. La modalità più semplice per prendere subito dimestichezza con il sistema operativo è quella di utilizzare l’ambiente di virtualizzazione gratuito: VirtualBox su cui sperimentare.
Raspbian è un derivato del sistema operativo Debian. Sul sito ufficiale, raspberrypi.org è possibile prelevare l’ISO del sistema operativo che può essere installato su computer Mac e Windows. L’uso di Raspberry Pi Desktop mi ha permesso in passato di recuperare computer obsoleti permettendo a molti studenti di continuare ad utilizzare i loro vecchi PC.

Installare VirtualBox

Dal sito di riferimento di VirtualBox prelevate l’ultima versione per il vostro sistema operativo (Windows, Linux, Mac).

Nella cartella di download ritroverete l’installatore di VirtualBox, avviate l’installazione e seguite passo passo le fasi installazione. Le immagini che seguono mostrano esattamente la sequenza delle finestre mostrate in fase di installazione:

Passo 1
Doppio click sul file scaricato

Passo 2
clic su “Avanti”

Passo 3
Non effettuate nessuna modifica, clic su “Avanti”

Passo 4
Io ho lasciato tutte le impostazioni selezionate, decidete secondo le vostre necessità Continua a leggere

Arduino: Stepper 28BYJ-48 – AccelStepper library

La libreria Stepper Arduino è ottima per controllare un solo stepper, ma quando si desidera controllare velocità e accelerazione dello stepper oppure è necessario controllare contemporaneamente più stepper bisogna utilizzare la libreria AccelStepper.

In questo breve tutorial vedremo come controllare velocità e accelerazione ed in una successiva lezione controlleremo più stepper.

AccelStepper aggiunge le seguenti funzionalità:

  • accelerazione e decelerazione;
  • supporta il mezzo passo;
  • controllo di più stepper simultaneamente e simultaneamente si possono far fare passi indipendenti su ogni stepper.

AccelStepper non è inclusa nell’IDE di Arduino, bisognerà installarla.

Installazione della libreria

Per installare la libreria, andare in Sketch > Include Library > Manage Libraries…

Nel campo di ricerca inserire “AccelStepper”. Selezionare la prima voce che compare e procedere con l’installazione

Lo schema elettrico di collegamento è il medesimo visto nella lezione precedente, potete utilizzare entrambi gli schemi proposti, con alimentazione presa direttamente da Arduino o con alimentazione esterna che vi consiglio.

Codice Arduino

Di seguito lo sketch di esempio “Bounce”, che permette l’accelerazione del motore passo-passo in una direzione per decelerare e poi fermarsi. Trovate lo sketch “Bounce” tra gli esempi a corredo della libreria, su questo programma ho apportato alcune modifiche inserendo i commenti che ne spiegano il funzionamento.

1// Bounce
2// Prof. Maffucci Michele
3//
4// Una sola rotazione in accelerazione da 0 a 2048 e viceversa
5 
6// inclusione della libreria AccelStepper
7#include <AccelStepper.h>
8 
9// definizione di una costante
10// funzionamento:
11// in fullstep  impostare 4
12// in halfstemp impostare 8
13#define FULLSTEP 4
14 
15// creazione dell'istanza della classe mioStepper
16/*
17   IN1 -> 8
18   IN2 -> 9
19   IN3 -> 10
20   IN4 -> 11
21*/
22AccelStepper mioStepper(FULLSTEP, 8, 10, 9, 11);
23 
24void setup() {
25 
26  // impostare la velocità massima,
27  // accelerazione,
28  // velocità iniziale
29  // numero di passi da compiere
30 
31  mioStepper.setMaxSpeed(1000);
32  mioStepper.setAcceleration(50);
33  mioStepper.setSpeed(100);
34  mioStepper.moveTo(2048);
35}
36 
37void loop()
38{
39 
40  // distanceToGo restituisce il numero di passi compiuti.
41  // Se distanceToGo raggiunge lo zero, cioè numero di passi è uguale a zero
42  // inverte il senso di rotazione assegnando un valore negativo al numero di passi
43  // da compiere.
44 
45  if (mioStepper.distanceToGo() == 0)
46    mioStepper.moveTo(-mioStepper.currentPosition());
47 
48  // se non è stato raggiunto il valore zero, muove lo stepper di un passo
49  mioStepper.run();
50}

Per maggiori informazioni vi rimando alla pagina di riferimento della libreria

Esercizi per i miei studenti

Esercizio 1
Realizzare uno sketch che da serial monitor permetta all’avvio di Arduino l’impostazione di:

  • velocità massima;
  • accelerazione;
  • velocità iniziale;
  • numero di passi da compiere;

Con l’inserimento dell’ultimo parametro ed il successivo invio si avvia lo stepper.

Esercizio 2
Eseguire le stesse funzionalità dell’esercizio precedente, ma l’avvio dello Stepper avviene solamente alla pressione di un pulsante.

Esercizio 3
Aggiungere all’esercizio precedente un pulsante di stop che permetta di interrompe in qualsiasi momento la rotazione dello stepper.

Modificare un motore passo passo 28BYJ-48 da unipolare a bipolare

Scrivo questo breve tutorial perché in questi giorni sto progettando i prototipi delle attività didattiche che spero potranno essere realizzati dai miei studenti nel mese di febbraio prossimo durante le attività di PCTO. Tra le future attività la realizzazione di più bracci robot da controllare con Arduino e PLC Siemens. Il braccio robot che sto realizzando è costituito da 3 motori passo passo 28BYJ-48 ed un servomotore. La scelta del 28BYJ-48 rispetto ai più potenti NEMA 17 risiede semplicemente nei costi di realizzazione per me e i miei studenti che vorranno replicare il progetto.

Poiché ho l’esigenza di aumentare il numero di grammi al centimetro che possono essere spostati/sollevati dal braccio ho convertito il passo passo 28BYJ-48 da unipolare a bipolare.

Questo motore passo passo è molto piccolo ma ha una potenza sufficiente per realizzare diverse sperimentazioni. Nello scorso anno scolastico, sempre durante le attività di PCTO, alcuni miei studenti hanno sviluppato l’automazione di un’ascensore la cui struttura portante era da me stata realizzata e tagliata a laser, mente i ragazzi si sono occupati dell’assemblaggio delle parti e della programmazione.

Il 28BYJ-48, come detto nel mio precedente post, è disponibile in due versione, con alimentazione a 5V e a 12V, le due versioni sono identiche, differiscono ovviamente per l’impedenza interna. In questo breve tutorial userò la versione a 12V, ma la procedura è la medesima per la versione a 5V.

Il motore passo passo possiede un riduttore incorporato da 1/64 ciò implica un passo molto piccolo del motore 0,087890625 gradi per passo. Il riduttore ha però un aspetto negativo, ne riduce la velocità di rotazione, ma possiamo sopportare questa sua lentezza considerando il fatto che il prezzo dei questo motore è estremamente contenuto, la versione a 5V può essere acquistata online a non più di 2,5 € e quindi per piccole sperimentazioni è più che sufficiente.

In funzione della modo con cui viene pilotato questo passo passo può raggiungere i 300 gcm in half step, per raggiunge i 380 gcm quando si passa a full step.

Gli stepper bipolari sono più efficienti di quelli unipolari in essi viene alimentata una sola bobina per volta (1/2 una bobina per essere precisi) mentre per i bipolare entrambe le bobine sono alimentate, quindi si ottiene una coppia maggiore.

L’immagine di seguito mostra ciò che accade in un passo passo bipolare.

Sono presenti due avvolgimenti anziché quattro rispetto ad uno stepper unipolare. Entrambi gli avvolgimenti possono essere attivi in qualsiasi momento ma la polarità viene commutata su quattro fasi, ciò vuol dire che questo motore ha solo quattro fili anziché 5 (o 6 o 8).

Per convertire un 28BYJ-48 da unipolare a bipolare bisogna interrompere la connessione indicata in rosso nell’immagine, quella contrassegnata con 2 + 3 + 6 + 7. La configurazione diventerebbe come quella rappresentata nell’immagine di sinistra.

Per effettuare questa conversione è sufficiente un cutter ed un cacciavite. Come indicato nell’immagine che segue, utilizzate il cacciavite per sollevare il cappuccio azzurro che protegge un piccolo circuito elettronico in cui noterete 11 punti di saldatura, questo circuito non fa altro che collegare le varie bobine del passo passo.

Interrompete la pista centrale come indicato nell’immagine in questo modo renderemo il passo passo bipolare.
Questa modifica potrà farvi raggiungere gli 800 gcm che è almeno il doppio rispetto all’unipolare in full step (380 gcm) e quasi 3 volte di più per un unipolare half step (300 gcm).

A questo punto avremo bisogno di un driver che consenta il pilotaggio del motore, per questo potreste utilizzare L293D oppure un ULN2003 o ancora un A4988.

Fate riferimento agli articoli passati.

Non dimenticare di regolare al minimo la corrente del vostro driver A4988 / DRV8825, in quanto per questi motori non è possibile fornire più di 100 mA per fase, se superate questo valore potreste distruggere il motore.

Buon Making a tutti. 🙂

Controllare uno Stepper 28BYJ-48 con ULN2003 mediante Arduino

Il 28BYJ-48 è un motore passo passo unipolare a 5 fili tra i più economici che potete trovare in commercio (poco meno di 3€), è spesso inserito all’interno dei kit Arduino compatibili che troviamo su molti store online.

Si presenta in due versioni, a 5V e a 12V

Generalmente forniscono una buona coppia anche in stato di stop fintanto che viene fornita alimentazione al motore. L’unico aspetto negativo è l’elevato assorbimento anche in stato di stop che risulta di 240 mA.

Specifiche tecniche (derivate dal datasheet del motore)

Dimensioni del motore (derivate dal datasheet del motore)
Di seguito le dimensioni fisiche del motore nel caso in cui dobbiate realizzare parti meccaniche (bracci robot, plotter, ecc…) su cui fissare il motore.

Per quanto riguarda il funzionamento degli Stepper Motor vi rimando ai due articoli:

Questo tipo di motore è spesso venduto con una scheda di controllo.
Ho utilizzato spesso questo stepper per piccoli bracci robot o piccoli plotter, avrei potuto ovviamente utilizzare motori più performanti, ma il basso costo risulta particolarmente compatibile con il portafoglio anche dei miei studenti.

Per questa lezione useremo:

  • motore passo passo 28BYJ-48
  • scheda di controllo con ULN2003A
  • scheda Arduino UNO R3
  • 6 connettori maschio femmina
  • una breadboard

Ma prima di iniziare con la pratica alcuni richiami di teoria.

Sono presenti 5 fili di connessione che fanno riferimento alle bobine e all’alimentazione. All’interno del motore sono presenti due bobine, al centro di ogni bobine abbiamo la connessione alla tensione di alimentazione (5V o 12V) filo di colore rosso, mentre gli altri connettori:

  • arancione;
  • rosa;
  • giallo;
  • blu;

saranno connessi ciclicamente a massa in modo che ci sia passaggio di corrente tra questi e il positivo ed ogni volta vi sarà il passaggio di corrente in queste bobine, l’albero del motore compirà un passo.

All’interno del motore sono presenti due bobine, al centro di ogni bobine abbiamo la connessione alla tensione di alimentazione (5V) filo di colore rosso, mentre gli altri connettori: arancione, rosa, giallo, blu saranno connessi ciclicamente a massa in modo che ci sia passaggio di corrente tra questi e il positivo ed ogni volta vi sarà il passaggio di corrente in queste bobine l’albero del motore compirà un passo (fare riferimento agli articoli indicati all’inizio).

Secondo la scheda tecnica, quando il motore 28BYJ-48 funziona in modalità a full step, ogni passo corrisponderà ad una rotazione di 11,25°. Ciò significa che verranno effettuati 32 passi per giro (360°/11,25° = 32), però il motore possiede al suo interno una riduzione di 1/63,68395 che viene approssimato ad 1/64 ciò implica che ci saranno in realtà 32*63,68395 passi per giro = 2037,8864 all’incirca 2038 passi (attenzione che se si approssima il rapporto la riduzione ad 1/64 il numero di passi per giro risulta 2048).

E’ possibile controllare questo motore in modo più preciso utilizzando i micro stepping, in questa guida ne mostrerò il funzionamento in full step e successivamente utilizzando un’apposita libreria, che ne semplifica l’utilizzo, verrà controllato in half step.

Per i 28BYJ-48 l’intervallo tra ogni passo è di 2 millisecondi, quindi teoricamente potrebbe funzionare ad una velocità massima di 500 passi/s, da ciò si desume che per fare una rotazione completa sono necessari 4 secondi.

La scheda di controllo.

Sulla scheda di controllo trova posto l’integrato ULN2003A che include un array di 7 transistor Darlington, ognuno in grado di gestire una corrente di 500mA con tensioni nell’ordine dei 50V

L’ULN2003A risulta utile per la gestione di carichi di tipo induttivo come: stepper (passo-passo), motori CC, rele’, ecc… E’ presente su ogni Darlington un diodo che consente la soppressione di disturbi, rendendo superflua l’installazione di diodi esterni.

Sulla scheda di controllo troviamo anche 4 diodi LED con in serie le resistenze per limitane la corrente. I 4 LED indicati con le lettere A, B, C, D indicano lo stato di attivazione delle varie bobine.

La scheda può essere utilizzata per stepper 28BYJ-48 a 5V o a 12 V. Inserire il negativo sul pin in cui è presente il e il positivo dove è presente il simbolo +. I pin ON/OFF consentono di attivare o disattivare la scheda di controllo, nella posizione indicata nell’immagine che segue la scheda è in stato ON, togliendo il ponticello passa nello stato OFF.

Poiché l’assorbimento del passo passo può arrivare fino a 240 mA è indispensabile utilizzare un’alimentazione esterna mantenendo comuni le masse tra il microcontrollore e scheda di controllo dello stepper, però in questa lezione per rendere agevole la sperimentazione a titolo dimostrativo utilizzerò l’alimentazione a 5V direttamente ad Arduino, di seguito sono riportati i due circuiti con alimentazione da scheda Arduino ed esterna.


Schema di collegamento
(con alimentazione presa da scheda Arduino)


Schema di collegamento
(con alimentazione esterna)

Collegherò i pin IN1, IN2, IN3, IN4 della scheda di controllo del motore ai pin di Arduino: 8, 9, 10, 11.

Per rendere più semplice la programmazione possiamo utilizzare la libreria stepper presente all’interno dell’IDE di Arduino così come fatto nei due articoli indicati ad inizio di questa lezione. La libreria permette il controllo di stepper unipolari che bipolari.

Come indicato sul reference di Arduino, la libreria è dotata delle seguenti funzioni:

Utilizzerò lo sketch stepper_oneRevolution presente nell’IDE di Arduino.
Lo sketch farà muovere il motore passo-passo in senso orario lentamente e poi rapidamente in senso antiorario.

Come detto nella parte iniziale di questa lezione, l’albero del motore eseguirà 2048 passi per effettuare un’intera rotazione.

In questo esempio, l’albero esegue una rotazione completa in senso orario, eseguendo il numero di 2048 passi utilizzando la libreria Arduino Stepper.
Così come per l’esempio precedente utilizzeremo anche in questo caso i pin digitali di Arduino: 8, 9, 10, 11 così come indicato nello schema precedente.

Come detto nella parte iniziale di questa lezione, l’albero del motore eseguirà 2048 passi per effettuare un’intera rotazione.

In questo esempio, l’albero esegue una rotazione completa in senso orario, eseguendo il numero di 2048 passi utilizzando la libreria Arduino Stepper.
Così come per l’esempio precedente utilizzeremo anche in questo caso i pin digitali di Arduino: 8, 9, 10, 11 così come indicato nello schema precedente.

1/*
2 * Prof. Michele Maffucci
3 * 28.10.2020
4 */
5 
6// inclusione della libreria Stepper
7#include <Stepper.h>
8 
9// definizione del numero di passi per rotazione
10const int stepsPerRevolution = 2048;
11 
12// creazione dell'istanza della classe stepper
13 
14/*
15 * IN1 -> 8
16 * IN2 -> 9
17 * IN3 -> 10
18 * IN4 -> 11
19 */
20 
21Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
22 
23void setup() {
24  /*
25   * non è necessario impostare i pin di Arduino
26   * a cui collegare la scheda dello stepper
27   * vengono gestiti dalla libreria
28   */
29 
30// imposta la velocità a 15 rpm:
31  myStepper.setSpeed(15);
32 
33// inizializzazione della porta seriale
34  Serial.begin(9600);
35}
36 
37void loop() {
38  // imposta una rotazione in senso orario
39  Serial.println("orario");
40  myStepper.step(stepsPerRevolution);
41  delay(500);
42 
43// imposta una rotazione in senso antiorario
44  Serial.println("antiorario");
45  myStepper.step(-stepsPerRevolution);
46  delay(500);
47}

Spiegazione del codice

Lo sketch inizia con l’inclusione della libreria Stepper.

1#include <Stepper.h>

Successivamente, definiamo una costante stepsPerRevolution che contiene il numero di “passi” che il motore eseguirà per completare un giro. Nel nostro caso, è il 2048

1const int stepsPerRevolution = 2048;

Il motore passo-passo unipolare 28BYJ-48 viene azionato agendo sui pin IN1-IN3-IN2-IN4 per fare ciò deve essere create un’istanza della libreria stepper chiamata myStepper in cui inseriamo la sequenza di pin 8, 10, 9, 11.
Assicuratevi di effettuare questa operazione correttamente altrimenti il motore non funzionerà correttamente.

1Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);

Nel setup definiamo la velocità di rotazione e inizializziamo la Serial Monitor in quanto invieremo su questa il senso di rotazione del motore.

1void setup() {
2  /*
3   * non è necessario impostare i pin di Arduino
4   * a cui collegare la scheda dello stepper
5   * vengono gestiti dalla libreria
6   */
7 
8// imposta la velocità a 15 rpm:
9  myStepper.setSpeed(15);
10 
11// inizializzazione della porta seriale
12  Serial.begin(9600);
13}

Nella funzione loop, nella prima parte del codice, stampiamo sulla Serial Monitor la stringa “orario” e successivamente usiamo la funzione step() per impostare il numero di passi che deve effettuare, nella seconda parte del codice stampiamo sulla Serial Monitor la stringa “antiorario” e successivamente usiamo la funzione step() impostando un valore negativo che farà ruotare il motore in senso antiorario.

1void loop() {
2  // imposta una rotazione in senso orario
3  Serial.println("orario");
4  myStepper.step(stepsPerRevolution);
5  delay(500);
6 
7// imposta una rotazione in senso antiorario
8  Serial.println("antiorario");
9  myStepper.step(-stepsPerRevolution);
10  delay(500);
11}

Il primo frammento di codice farà ruotare il motore in senso orario molto lentamente. E il secondo farà girare il motore in senso antiorario a una velocità molto più veloce.

Esercizi per i miei studenti

Esercizio 1
Fare ruotare in modo continuo l’albero dello stepper, ad ogni rivoluzione accendere un LED per 200 ms. Visualizzare sulla serial monitor il contatore di rivoluzioni.

Esercizio 2
Aggiungere due pulsanti di controllo per lo start e per lo stop del motore. Indicare lo stato del pulsante sulla Serial Monitor.

Esercizio 3
Alla pressione del pulsante P1 il motore avanza di 512 passi alla pressione del pulsante P2 il motore torna indietro di 512 passi.

Esercizio 4
All’avvio del programma sulla Serial Monitor inserire un numero che identifica il numero di passi utilizzati per incrementare e decrementare il numero di passi mediante due pulsanti P1 e P2. Il numero di passi per l’incremento e il decremento è lo stesso.
Stampare sulla Serial Monitor il valore totale dei passi compiuti dallo stepper.

Esercizio 5
All’avvio del programma sulla Serial Monitor inserire due valori che identificano: il numero di passi utilizzati per incrementare e il numero di passi per decrementare. In questo esercizio si desidera impostare due valori che possono essere anche diversi per l’incremento e il decremento dei passi del motore.
Stampare sulla Serial Monitor il valore totale dei passi compiuti dallo stepper.

Esercizio 6
Mediante un sensore ad ultrasuoni realizzare un programma che nell’intervallo tra 3 cm e 19 cm avvicinando un ostacolo, per ogni centimetro il sensore incrementa di 128 passi e allontanandosi dall’ostacolo per ogni centimetro il numero di passi decremento di 128 passi.