Supporto per motore a spazzola kit ELEGOO

La quasi totalità dei miei studenti, per svolgere le attività di sperimentazione di elettronica e automazione a casa e a scuola in questo periodo di crisi pandemica, ha acquistato uno dei molti kit ELEGOO in cui, anche nella versione base del kit, sono presenti tutti i componenti per svolgere le prime esercitazioni di automazione. All’interno dei diversi kit è presente un motore CC a spazzola 3-6 V come quello indicato nell’immagine che segue a cui è possibile connettere una ventola.

Questo semplice motore viene utilizzato in diverse esperienze di laboratorio: marcia e arresto, controllo di velocità e molto altro. Per far si che il banco di lavoro sia ordinato ho realizzato in 3D tre elementi che permettono di disporre il motore su un supporto di legno ricavato da una comune bacchetta di legno 20×20 mm che può essere acquistata in qualsiasi brico.

Condivido su Thingiverse i sorgenti grafici per la realizzazione del supporto.

Di seguito alcune immagini della semplice struttura… e quando farà caldo tutti avranno il proprio ventilatore personale 🙂

Buon Making a tutti 🙂

SumoFoam – per realizzare velocemente una struttura per robot didattico

“5 minuti da Maker” è orami un’abitudine che ho da qualche tempo: progettare in 5 minuti un oggetto o una soluzione e realizzarla. Alcune volte realizzarla mi richiede un po’ più di 5 minuti, ma cerco di non superare in tutto 60 minuti. E’ un’esercizio che mi sono imposto settimanalmente, un po’ come svago un po’ per dar sfogo ad idee nascenti che potrebbero diventare qualcosa di più importante.

Questa volta l’esercizio consiste nel rendere ancora più semplice la realizzazione del SumoBot, picco robot realizzato in compensato, trasformandolo in una versione realizzata con un materiale ancora più semplice da manipolare per gli studenti più giovani, il Foam Core, (per saperne di più continua la lettura 😉 ).

Durante una delle tante attività di PCTO feci realizzare ai miei studenti di 3′ automazione un il piccolo SumoBot su una base di compensato da 3mm, l’attività consisteva nel montare la struttura, l’elettronica e programmare i robot affinchè potessero gareggiare. Il tutto era stato realizzato con schede Arduino UNO R3 e anche con degli Arduino micro, due micro servo SG90 a rotazione continua ed un sensore ad ultrasuoni. Alcuni aggiunsero al robot una scheda Bluetooth per poter pilotare il robot anche via smartphone. Fu un’attività divertentissima che voglio riproporre ai ragazzi.

Nel riprendere in mano il progetto ho pensato di realizzare una versione della struttura in Foam Core, un materiale utilizzato dagli architetti per costruire plastici di abitazioni.  Si tratta di uno strato di spugna racchiuso da due fogli di cartoncino. Viene venduto in fogli di diverso spessore e dimensione, attualmente sto utilizzando fogli A3 di spessore 5mm. Le strutture che se ne ricavano sono sufficientemente solide. Utilizzo questo materiale quando voglio prototipare rapidamente oggetti per le mie sperimentazioni, come quello che vedete nell’immagine che segue, un supporto per un display 16×2.

In genere stampo su fogli adesivi bianchi A4 la struttura che voglio realizzare, dispongo i fogli adesivi sul Foam Core e con un cutter ne ritaglio il profilo. Tutti gli elementi poi vengono incastrati e incollati con normalissima colla vinilica.

Con il Foam Core ho provato a realizzare una serie di piccoli robot e sono rimasto più che soddisfatto.

Di seguito la sequenza fotografica delle fasi di montaggio, il taglio degli elementi non è perfetto, con un po’ più tempo e pazienza si può fare molto meglio.

Tra qualche giorno, quando terminerò di effettuare le ultime prove sul SumoFoam renderò pubblico il file pdf.

Stampo su foglio adesivo bianco il profilo del robot ed incollo su Foam Core.

Si nota la struttura a sandwich del pannello: cartoncino – materiale spugnoso – cartoncino

Oltre ad incastrare i vari elementi ho utilizzato della colla vinilica.

Prossimamente il montaggio dell’elettronica da parte dei miei studenti.

Buon Making a tutti 🙂

Siemens TIA Software Updater – Impossibile creare il collegamento al server. Come risolvere il problema.

In questi giorni sto progettando ulteriori esercitazioni per i miei studenti sull’uso di TIA Portal e questa attività mi ha portato anche ad eseguire una serie di aggiornamenti sul software. Attualmente ho installato sul mio computer e sui computer della scuola la versione 15.1. Eseguendo l’aggiornamento di TIA ho riscontrato un problema in TIA Software Updater nel collegarsi al server degli aggiornamenti, mi viene restituito il messaggio di errore: “Impossibile creare il collegamento al server”. Dopo tanta insistenza e ricerca online e lettura di forum ho trovato la soluzione agendo nella maniera più semplice, installazione cumulativa manuale degli aggiornamenti di TIA fino all’ultima versione, upd. 5, risalente al 08/2020. Procedendo in questo modo ho risolto e TIA Software Updater ora funziona e mi fornisce gli aggiornamenti.

Poiché questo problema lo riscontrerò anche su altri computer nei laboratori della mia scuola e sono sicuro che anche altri utenti avranno avuto il medesimo problema, ho deciso di realizzare un breve tutorial che servirà principalmente a me per mantenere memoria di come procedere nel caso in cui mi si ripresentasse il problema su altri computer.

Ma perché questo errore? Il motivo lo spiega direttamente Siemens sul suo sito:

“As of 02/2020, the Siemens Update Server will only support calls with the latest, secure protocols (at least TLS 1.2). The TIA Administrator, the TIA Updater and the TIA Updater Corporate Configuration Tool have therefore been expanded to include these new protocols. Older versions of these products will no longer be able to connect to the Siemens Update Server from 02/2020.”

Che tradotto:

“A partire dal 02/2020, Siemens Update Server supporterà solo le chiamate con i protocolli più recenti e sicuri (almeno TLS 1.2). TIA Administrator, TIA Updater e TIA Updater Corporate Configuration Tool sono stati quindi ampliati per includere questi nuovi protocolli. Le versioni precedenti di questi prodotti non saranno più in grado di connettersi al Siemens Update Server dal 02/2020.”

Procediamo con l’aggiornamento e la soluzione al problema.

Situazione di partenza, avvio di TIA Updater genera il messaggio di errore: “Impossibile creare il collegamento al server”

Controllo la versione di TIA Portal avviando TIA e selezionando: Software installato.

Vado al seguente link: Aggiornamenti per STEP 7 V15.1 e WinCC V15.1, effettuare il login

Nella pagina selezionare l’ultimo aggiornamento disponibile, alla data in cui scrivo questo post è: Update 5 (08/2020). Scaricare tutti i file che ho indicato nell’immagine con la freccia rossa.
Una volta che avrete prelevato tutti i file avviate l’installazione dal file .exe (l’ultimo nella lista indicata nell’immagine che segue).

Procedere facendo clic su “Avanti”.

Selezionata la lingua, se il vostr sistema operativo è impostato in italiano vi verrà proposto in automatico l’italiano, clic su “Avanti”.

Procedete come riportato nell’immagine, clic su “Avanti”.

Attendete l’estrazione di tutti i file, questa operazione richiede alcuni minuti.

Proseguite facendo clic su “Avanti”.

Lasciate tutto selezionato e proseguite facendo clic su “Avanti”.

Accettate le condizioni di licenza inserendo le spunte al fondo della finestra.

Anche in questo caso accettate le condizioni di sicurezza inserendo la spunta al fondo della finestra.

Confermate l’installazione facendo clic su “Installazione”.

Ora è il momento di prendersi un momento di pausa, prendete una tazza di te perché la fase di installazione durerà circa 25 minuti.

Al termine clic su “Riavvia” per riavviare il computer.

Avviate TIA Portal e controllate la versione del software installato: nel mio caso: Update 5.

Avviate nuovamente TIA Updater e noterete che il problema è stato risolto.

Buon Making a tutti 🙂

EduRobot Lift/Elevator

Nuova versione del kit EduRobot Lift, ascensore/montacarichi da utilizzare per le esercitazioni di laboratorio di sistemi elettronici e attività di PCTO negli istituti tecnici industriali e professionali.

Rispetto alla versione precedente alcune migliorie che ne facilitano la costruzione. Il controllo può essere effettuato in diverse modalità: Siemens Step 7 1200, Logo8!, Siemens IoT 2040, Arduino. La struttura è stata disegnata con Adobe Illustrator e tagliata a laser presso il Laboratorio Territoriale del mio istituto, l’ITIS G.B. Pininfarina di Moncalieri. Il materiale è costituito da compensato da 4 mm e due elementi stampati in 3D in PETG. Il montaggio della struttura richiede circa 40/45 min.

Se desideri realizzare il kit, seguire il link su Thingiverse, da cui potrete prelevare il file PDF per il taglio laser e i file STL per la stampa 3D della struttura del motore.

Volutamente per la realizzazione di questo kit sono stati scelti materiali economici in quanto il mio desiderio è quello di assegnarne un kit ad ogni studente.

  • foglio di compensato da 4mm 80×60 mm (costo indicativo: €4)
  • 24 viti M3 da 12 mm
  • 24 dadi M3
  • motorino passo passo 28BYJ-48
  • colla vinilica
  • due elementi stampati in 3D
  • spago

Nel kit viene utilizzato un motore passo passo economico il 28BYJ-48 in modo che possa essere acquistato da tutti gli studenti. Con qualche piccola modifica è possibile utilizzare anche un motorino DC da 6V, i classici “motorini gialli” utilizzati dagli studenti per la costruzione di piccoli robot.

Quattro gli obiettivi di questo progetto:

  1. offrire una guida fotografica per i miei studenti della classe 3′ che dovranno svolgere il PCTO (ex Alternanza Scuola Lavoro) facendo una simulazione di attività aziendale, quest’anno dovranno diventare tecnici di un’azienda che produce ascensori e montacarichi;
  2. mostrare agli studenti che è possibile imparare ad imparare attraverso attività laboratoriali che prevedono la progettazione e la costruzione dei propri strumenti di apprendimento;
  3. il mercato offre molteplici strumenti, kit robotici di ogni tipo che rispondono a molteplici esigenze didattiche, ma alcune volte non rispondono ad esigenze specifiche di un percorso di studio o di un argomento, ecco che la scuola diventa produttrice dei propri ausili didattici specifici;
  4. rispondere alle numerose richieste di realizzazione del kit pervenutemi da molti colleghi di scuole italiane dopo il mio intervento per SCE Siemens in cui ho mostrato le mie sperimentazioni didattiche nell’ambito dell’automazione, tra queste anche EduRobot Lift. Ringrazio tutti.

Di seguito un breve video che mostra la struttura generale del kit e di seguito una guida fotografica passo passo che ne dettaglia le fasi di costruzione.

In successive lezioni verranno proposti modalità di controllo del sistema.

Sentitevi liberi di apportare modifiche e migliorie alla struttura. Mi farebbe piacere avere un vostro parere ed eventualmente, se utilizzate il kit, inviatemi le fotografie dei vostri lavori in modo che io possa pubblicarle su questo sito.

Il progetto è rilasciato con la seguente licenza: Attribuzione 4.0 Internazionale (CC BY 4.0)

Come viene mostrato nell’immagine che segue il kit è costituito da 21 elementi di compensato e due elementi stampati in 3D, nell’immagine potete notare anche un 3′ elemento, una piccola rondella di plastica, che è stata poi sostituita da un dado M3 (i dettagli al fondo di questa lezione).

Struttura impiegata per fissare il motore passo passo e il rocchetto utilizzato per avvolgere lo spago a cui verrà fissata la cabina dell’ascensore.

Nell’immagine si vedono viti M3 da 12 mm e dadi M3.

La colla vinilica viene utilizzata solamente per fissare i piedini alla base della struttura.

Poiché sulla base del kit sono presenti delle viti, per evitare che queste raschino la base di appoggio, sono stati previsti dei piedini la cui altezza è di 8 mm, ciò si ottiene incollando tra loro due elementi.

Incollare i piedini sugli angoli della base.

Allineare i piedini come riportato nell’immagine che segue.

Fare in modo che ci sia anche un allineamento rispetto alla verticale.

Predisporre il montaggio della cabina dell’ascensore. Si consiglia di inserire prima il dato nella fessura così come riportato nell’immagine. La parte inferiore della cabina è identica a quella superiore con la differenza che la parte superiore ha un foro in cui andremo ad inserire lo spago.

Inserire la parete laterale e dalla parte opposta inserire la vite. Bloccare i due elementi, ma attenzione a non avvitare con forza.

Procedere allo stesso modo per la parte posteriore della cabina dell’ascensore: Inserire i dadi, incastrare nella fessura la parete ed avvitare con le due viti.

Inserire la parte superiore della cabina contraddistinta da un foro centrale.

Passiamo ora alle colonne. Sono presenti 6 colonne di due tipi: con fori e senza fori, hanno tutte la stessa dimensione. Le colonne con fori hanno un’orientamento, nell’immagine si nota che i fori hanno distanze diverse dal bordo che va incastrato alle basi. I fori che hanno una distanza di 4 cm dalla base vanno rivolti verso la base di appoggio dell’ascensore.

Tre sono le colonne frontali ed andranno inserite nelle apposite fessure. Anche in questo caso si consiglia di inserire prima i dadi.

Posizione in cui devono essere inserite le colonne frontali.

Inserire le viti dalla parte inferiore della base.

Inserire le colonne laterali. Prima di inserirle nelle fessure incastrare i dadi M3.

Bloccare con viti.

Montare la colonna posteriore.

Procedere nel montaggio così come fatto per le altre colonne.

Inserire la cabina dell’ascensore, con la parte aperta disposta frontalmente.

Le scanalature laterali permettono di far scorrere la cabina tra le guide.

Fissare la base superiore del kit. Inserire nelle colonne i dadi e successivamente inserire nella posizione indicata dalle frecce le viti.

Avvitare, ma attenzione a non serrare con forza, rischiereste di rompere il compensato.

Inserire 4 viti nella posizione indicate dalle frecce.

Avvitare i dadi.

Inserire il rocchetto all’interno dell’asse del motore. Attenzione che il rocchetto ha un’orientamento, ciò è mostrato nel video ad inizio di questa lezione. Come si nota l’asse del motore non è cilindrico.

Inserire la vite nella posizione indicata dalla freccia, questa costituisce un supporto per il rocchetto. Avvitare il motore alla struttura.

Fissiamo lo spago alla cabina. Inserite lo spago nel foro dalla parte superiore e legateci un dado.

Poggiate la cabina sulla base della struttura e fate in modo che il filo sia ben dritto ed incollatelo sul rocchetto. Il risultato dovrebbe essere il seguente:

Buon Making a tutti 🙂

Arduino – Uso di LED RGB – approfondimento

Scrivo questa lezione come approfondimento della guida realizzata tempo fa: Arduino – lezione 09: uso di LED RGB in cui mostravo come funzionano e come si gestiscono i LED RGB con Arduino. Negli esercizi proposti utilizzavo un LED ad ANODO comune. In questa nuova lezione utilizzerò un diodo a CATODO comune e mostrerò tre esempi, nel primo ripropongo in una modalità diversa l’esercizio della prima lezione in cui faccio alcuni approfondimenti sull’uso della direttiva #define, mentre nel secondo e terzo esercizio viene mostrato come impostare il colore emesso dal LED RGB mediante input da tastiera su Serial Monitor richiamando con questi esempi l’uso del qualificatore const per una variabile e l’utilizzo della funzione parseInt(). Come sempre nei commenti, all’interno del codice, trovate la spiegazione del funzionamento di ogni parte dello sketch.

Esempio 01

Variazione colore continuo di un LED RGB secondo lo schema:

ROSSO > VERDE, VERDE > BLU, BLU > ROSSO

Scema di collegamento

/*  Prof. Maffucci Michele
    06.01.2021

    Esempio 01
    Variazione colore continuo
    di un LED RGB secondo lo schema:

    ROSSO > VERDE, VERDE > BLU, BLU > ROSSO

*/

/* Utilizzo della direttiva #define per definire una costante
   La direttiva viene utilizzata per definire una MACRO ovvero
   un simbolo.

   La sintassi per la definizione di una macro è:
   #define nome-MACRO  valore_MACRO

   Per convenzione il nome della macro viene scritta in maiuscolo.

   Il preprocessore legge la definizione di ogni MACRO e ogni volta che
   ne incontra il nome all'interno del programma (file sorgente) sostituisce
   al simbolo il valore corrispondente, senza che venga effettuata la verifica
   della correttezza sintattica dell'espressione risultante.
*/

#define VERDE 9
#define BLU 10
#define ROSSO 11

// tempo di dissolvenza tra i colori
#define tempoRitardo 10

void setup()
{
  // impostazione ad OUTPUT dei pin
  pinMode(ROSSO, OUTPUT);
  pinMode(VERDE, OUTPUT);
  pinMode(BLU, OUTPUT);

  // all'avvio viene emesso il colorore ROSSO
  digitalWrite(BLU, LOW);
  digitalWrite(VERDE, LOW);
  digitalWrite(ROSSO, HIGH);
}

// definizione di variabili
int valoreRosso;
int valoreVerde;
int valoreBlu;

void loop()
{
  // Impostazioni variabili per avere partire con LED:
  // ROSSO accesso, VERDE spento, BLU spento.
  valoreRosso = 255;
  valoreVerde = 0;
  valoreBlu = 0;

  // partendo dal ROSSO si sfuma al VERDE pieno quando i = 255
  for (int i = 0; i < 255; i += 1)
  {
    valoreRosso -= 1;
    valoreVerde += 1;

    // L'intensità del ROSSO viene diminuita ad ogni ciclo, mentre
    // l'intensità del VERDE viene aumentata ad ogni ciclo
    analogWrite(ROSSO, valoreRosso);
    analogWrite(VERDE, valoreVerde);
    delay(tempoRitardo);
  }

  // Impostazioni variabili per avere partire con LED:
  // ROSSO spento, VERDE acceso, BLU spento.
  valoreRosso = 0;
  valoreVerde = 255;
  valoreBlu = 0;

  // partendo dal VERDE si sfuma al BLU pieno quando i = 255
  for (int i = 0; i < 255; i += 1)
  {
    valoreVerde -= 1;
    valoreBlu += 1;

    // L'intensità del VERDE viene diminuita ad ogni ciclo, mentre
    // l'intensità del BLU viene aumentata ad ogni ciclo
    analogWrite(VERDE, valoreVerde);
    analogWrite(BLU, valoreBlu);
    delay(tempoRitardo);
  }

  // Impostazioni variabili per avere partire con LED:
  // ROSSO spento, VERDE spento, BLU acceso.
  valoreRosso = 0;
  valoreVerde = 0;
  valoreBlu = 255;

  // partendo dal BLU si sfuma al ROSSO pieno quando i = 255
  for (int i = 0; i < 255; i += 1)
  {
    valoreBlu -= 1;
    valoreRosso += 1;

    // L'intensità del BLU viene diminuita ad ogni ciclo, mentre
    // l'intensità del ROSSO viene aumentata ad ogni ciclo
    analogWrite(BLU, valoreBlu);
    analogWrite(ROSSO, valoreRosso);
    delay(tempoRitardo);
  }
}

Esempio 02

Inserimento da Serial Monitor dei valori di intensità del colore. La stringa di richiesta inserimento dei valori RGB viene ripetuta una sola volta e ad ogni nuovo inserimento non viene stampato sulla serial monitor il valore inserito.

Lo schema di collegamento è il medesimo dell’esempio 01.

/*  Prof. Maffucci Michele
    06.01.2021

    Esempio 02
    Inserimento da Serial Monitor dei valori
    di intensità del colore.
    La stringa di richiesta inserimento viene ripetuta una sola volta.
    Ad ogni nuovo inserimento non viene stampato sulla serial monitor
    il valore inserito.

    L'inserimento dei tre valori potrà essere effettuato
    in una delle due modalità:
    1. separando i tre numeri con spazio
    2. separando i tre numeri con la virgola
*/

/*
   Una variabile const indica al compilatore che il valore della
   variabile non può essere modificato durante l'esecuzione del programma.
   Una variabile const viene inizializzata nel momento della dichiarazione,
   se ciò viene fatto in un momento successivo il compilatore rileverà un
   errore che segnalerà anche errore in ogni operazione che comportano la
   modifica del valore dell avariabile definita come const
*/

const byte pinRosso = 11;
const byte pinBlu = 10;
const byte pinVerde = 9;

void setup() {
  // Inizializzazione della comunicazione seriale
  Serial.begin(9600);

  // Impostazione dei pin come OUTPUT
  pinMode(pinRosso, OUTPUT);
  pinMode(pinBlu, OUTPUT);
  pinMode(pinVerde, OUTPUT);

  // Messaggio sulla serial monitor
  Serial.println("Inserisci i valori R G B (es. 125, 50, 255)");
  Serial.println("-------------------------------------------");
  delay(1000);
}

void loop() {

  // Controlla se è disponibile almeno un carattere sulla seriale
  // La Serial.available() restituisce
  // 1 se presente un cattere,
  // 0 se non è presente un carattere

  // per maggior informazioni sull'uso di parseInt() consultare il link:
  // https://wp.me/p4kwmk-4Ah

  if (Serial.available()) {
    // memorizzazione dei colori nelle variabili
    int rosso = Serial.parseInt();
    int verde = Serial.parseInt();
    int blu = Serial.parseInt();

    // impostazione del PWM
    analogWrite(pinRosso, rosso);
    analogWrite(pinVerde, verde);
    analogWrite(pinBlu, blu);
  }
}

Esempio 3

Inserimento da Serial Monitor dei valori di intensità del colore.
Il valore inserito verrà stampato sulla Serial Monitor e ad ogni invio verrà richiesto di inserire un nuovo valore.

Lo schema di collegamento è il medesimo dell’esempio 01.

/*  Prof. Maffucci Michele
    06.01.2021

    Esempio 03
    Inserimento da Serial Monitor dei valori
    di intensità del colore.
    Il valore inserito verrà stampato sulla Serial Monitor e ad ogni
    invio verrà richiesto di inserire un nuovo valore.

    L'inserimento dei tre valori potrà essere effettuato
    in una delle due modalità:
    1. separando i tre numeri con spazio
    2. separando i tre numeri con la virgola
*/

/*
   Una variabile const indica al compilatore che il valore della
   variabile non può essere modificato durante l'esecuzione del programma.
   Una variabile const viene inizializzata nel momento della dichiarazione,
   se ciò viene fatto in un momento successivo il compilatore rileverà un
   errore che segnalerà anche errore in ogni operazione che comportano la
   modifica del valore dell avariabile definita come const
*/

const byte pinRosso = 11;
const byte pinBlu = 10;
const byte pinVerde = 9;

// per stampare una sola volta il messaggio sulla Serial Monitor
bool abilitaMessaggio = 0;

void setup() {
  // Inizializzazione della comunicazione seriale
  Serial.begin(9600);

  // Impostazione dei pin come OUTPUT
  pinMode(pinRosso, OUTPUT);
  pinMode(pinBlu, OUTPUT);
  pinMode(pinVerde, OUTPUT);
}

void loop() {
  // consente di visualizzare sulla Serial Monitor
  // una sola stampa delle stringa
  if (abilitaMessaggio == 0) {
    // ritardo che evita la doppia stampa del messaggio
    delay(200);
    Serial.print("Inserisci i valori R G B (es. 125, 50, 255): ");
    abilitaMessaggio = 1;
  }

  // Controlla se è disponibile almeno un carattere sulla seriale
  // La Serial.available() restituisce
  // 1 se presente un cattere,
  // 0 se non è presente un carattere

  // per maggior informazioni sull'uso di parseInt() consultare il link:
  // https://wp.me/p4kwmk-4Ah


  if (Serial.available()) {
    // memorizzazione dei colori nelle variabili
    int rosso = Serial.parseInt();
    int verde = Serial.parseInt();
    int blu = Serial.parseInt();
    Serial.print(rosso);
    Serial.print(", ");
    Serial.print(verde);
    Serial.print(", ");
    Serial.println(blu);
    Serial.println("-------------------------------------------");

    // impostazione del PWM
    analogWrite(pinRosso, rosso);
    analogWrite(pinVerde, verde);
    analogWrite(pinBlu, blu);

    // abilita alla stampa di una nuova stringa:
    // "Inserisci il ritardo in millisecondi: "
    abilitaMessaggio = 0;
  }
}

Esercizi per i miei studenti

Esercizio 1

Utilizzare tre pulsanti che funzionino come interruttori che permettono di accendere e spegnere un solo LED alla volta:

  • pulsante 1: LED ROSSO
  • pulsante 2: LED VERDE
  • pulsante 3: LED BLU

Ogni cambiamento di stato deve essere segnalato sulla Serial Monitor.

Esercizio 2

Utilizzare due pulsanti in gredo di realizzare la seguente automazione:

  • pulsante 1: attivare/disattivare la modalità di variazione continua del colore, così come esposta nell’esempio 01
  • pulsante 2: attivare/disattivare la generazione casuale di un colore

Ogni cambiamento di stato deve essere segnalato sulla Serial Monitor.

Esercizio 3

Utilizzando la Serial Monitor come unico strumento per inviare comandi ad Arduino, realizzare un menù di selezione che permette di impostare le funzionalità dell’esercizio 01 e dell’esercizio 03.