Archivi categoria: i miei allievi

Errori comuni nell’uso di Arduino – utilizzo dell’operatore ++

Nella “Lezione 2 – Corso di Elettronica Creativa con Arduino Sensor Kit” ho promesso che avrei fornito alcuni esempi pratici sull’utilizzo dell’operatore “++” come prefisso e come suffisso nell’incremento di una variabile. Durante la correzione delle esercitazioni dei miei studenti noto che la posizione del “++” crea qualche confusione, quindi ho pensato di inserire questa spiegazione nella sezione “Errori comuni nell’uso di Arduino”.

Esempio 1: “++variabile” (incremento come prefisso)

Questo sketch dimostra come il valore della variabile viene incrementato prima di essere stampato sulla Serial Monitor.

1// Prof. Maffucci Michele
2// utilizzo del ++ come prefisso
3 
4void setup() {
5  Serial.begin(9600);  // Avvia la comunicazione seriale a 9600 bps
6}
7 
8void loop() {
9  int conteggio = 0;
10  Serial.println("Incremento come prefisso:");
11  for(int i = 0; i < 5; i++) {
12    Serial.print("Valore attuale di conteggio: ");
13    Serial.println(++conteggio);  // Stampa il valore di conteggio dopo essere stato incrementato
14    delay(1000);                  // Attendi un secondo tra ogni iterazione
15  }
16  Serial.println("Fine del ciclo");
17  while(true);  // Termina il loop per evitare ulteriori incrementi
18}

Nell’Esempio 1, vedrete che i valori stampati iniziano da 1 e arrivano fino a 5, perché l’incremento avviene prima della stampa del valore di conteggio.

Esempio 2: “variabile++” (Incremento come suffisso)

Questo sketch illustra come il valore della variabile sia stampato prima di essere incrementato.

1// Prof. Maffucci Michele
2// utilizzo del ++ come suffisso
3 
4void setup() {
5  Serial.begin(9600);  // Avvia la comunicazione seriale a 9600 bps
6}
7 
8void loop() {
9  int conteggio = 0;
10  Serial.println("Incremento come suffisso:");
11  for(int i = 0; i < 5; i++) {
12    Serial.print("Valore attuale di conteggio: ");
13    Serial.println(conteggio++);  // Stampa il valore corrente di conteggio, poi lo incrementa
14    delay(1000);                  // Attendi un secondo tra ogni iterazione
15  }
16  Serial.println("Fine del ciclo");
17  while(true);  // Termina il loop per evitare ulteriori incrementi
18}

Nell’Esempio 2, i valori stampati iniziano da 0 e arrivano a 4, poiché l’incremento avviene dopo la stampa del valore.

Esempio 3: alternanza tra incremento come prefisso e suffisso

L’esempio che segue utilizza un contatore che aumenta ogni secondo e un messaggio che mostra sulla Serial Monitor il valore del contatore prima e dopo l’incremento, alternando tra incremento come prefisso e suffisso.

1// Prof. Maffucci Michele
2// utilizzo del ++ come suffisso
3 
4int contatore = 0;
5bool usaPrefisso = true// Flag per alternare tra incremento prefisso e suffisso
6 
7void setup() {
8  Serial.begin(9600);  // Inizia la comunicazione seriale a 9600 bps
9}
10 
11void loop() {
12  Serial.println("Inizio del ciclo");
13  if (usaPrefisso) {
14    Serial.print("Incremento come prefisso - Valore prima dell'incremento: ");
15    Serial.println(contatore);
16    Serial.print("Valore dopo l'incremento: ");
17    Serial.println(++contatore);  // Incremento prima della stampa
18  } else {
19    Serial.print("Incremento come suffisso - Valore prima dell'incremento: ");
20    Serial.println(contatore);
21    Serial.print("Valore dopo l'incremento: ");
22    Serial.println(contatore++);  // Stampa prima dell'incremento
23  }
24 
25// Alterna tra prefisso e suffisso
26  usaPrefisso = !usaPrefisso;
27 
28Serial.println("Fine del ciclo\n");
29  delay(2000);  // Attendere 2 secondi prima del prossimo ciclo
30}

Si noti che nel loop() a ogni iterazione, si decide se usare l’incremento come prefisso o come suffisso, basandosi sul valore del flag “usaPrefisso”. Dopo ogni ciclo, il metodo di incremento viene alternato in questo modo vengono mostrati come i due metodi di incremento influenzano il valore della variabile contatore il cui valore viene stampato sulla Serial Monitor.

Buon Coding a tutti 🙂

Lezione 2 – Corso di Elettronica Creativa con Arduino Sensor Kit

Come ormai tutti sappiamo un LED si presenta come un piccolo componente elettronico che emette luce quando attraversato da corrente elettrica. I LED sono molto usati nella vita di tutti i giorni in vari dispositivi come lampadine, schermi di telefoni e computer, telecomandi, e molto altro.

Immaginate il LED come una lampadina molto piccola, ma molto più efficiente ed ecologica. A differenza delle lampadine tradizionali, che producono luce riscaldando un filamento metallico, i LED producono luce attraverso un processo chiamato “elettroluminescenza”. Questo processo avviene quando la corrente elettrica passa attraverso un semiconduttore (il materiale di cui è costituito il LED) e lo stimola a emettere luce.

Un po’ di storia

Nel corso del primo Novecento, l’ingegnere inglese Henry Joseph Round fece una scoperta rivoluzionaria: l’elettroluminescenza, ovvero la proprietà di certi materiali di emettere luce quando attraversati da corrente elettrica. Da questa scoperta, nascono i LED acronimo di Light Emitting Diode (Diodo a Emissione di Luce), diodi specializzati nell’utilizzare tale fenomeno. Il primo LED, operante nell’infrarosso, venne introdotto nel 1961 e ancora oggi è ampiamente utilizzato in dispositivi come telecomandi e fotocellule.

L’anno successivo alla creazione del primo LED infrarosso, nel 1962, Nick Holonyak Jr. fece un ulteriore passo avanti sviluppando il primo LED rosso, capace di emettere luce visibile direttamente all’occhio umano. Gli studi su questi nuovi diodi proseguirono, focalizzandosi sulle varie applicazioni pratiche, come nell’ambito dei laser, e sull’esplorazione dei materiali necessari per produrre diverse tonalità di luce, combinando più fonti luminose per ottenere una vasta gamma di colori.

Durante gli anni cruciali della ricerca sui LED, un importante contributo venne dall’ingegnere americano M. George Craford, ex studente di Holonyak all’Università dell’Illinois. Nel 1972, Craford realizzò un significativo avanzamento creando i primi LED gialli che furono commercializzati dalla Monsanto, l’azienda per cui lavorava. Dedicate interamente al settore dei LED, le ricerche di Craford furono fondamentali per la loro prima larga diffusione, come dimostra il loro impiego in applicazioni quali semafori e segnalazioni luminose stradali.

Vantaggi nell’uso dei diodi LED

  • Consumano meno energia: sono molto più efficienti delle lampadine tradizionali, il che significa che usano meno elettricità per produrre la stessa quantità di luce.
  • Durano più a lungo: possono funzionare per migliaia di ore prima di dover essere sostituiti.
  • Sono robusti: non contengono filamenti o parti fragili che si possono rompere facilmente.
  • Offrono diverse colorazioni: i LED possono emettere luce di vari colori senza l’uso di filtri colorati.

Un esempio pratico molto semplice che potete realizzare a scuola è collegare un LED a una batteria con un piccolo resistore (di seguito sono fornite le indicazioni per il calcolo del valore del resistore) per limitare la corrente e proteggere il LED: noterete come si illumina, dimostrando in modo semplice ed efficace come funziona.

Struttura Fisica del LED

Un LED è composto principalmente da un chip di materiale semiconduttore in cui sono presenti impurità per creare una giunzione P-N. La giunzione è dove avviene l’elettroluminescenza (emissione di luce). Il chip è incapsulato in un guscio di plastica o vetro, che può essere modellato per focalizzare o diffondere la luce. I LED hanno due terminali: un anodo (+) e un catodo (-). La corrente elettrica fluisce dall’anodo al catodo, e questo flusso di corrente permette al LED di emettere luce.

Modalità di Polarizzazione

Per funzionare correttamente, un LED deve essere polarizzato in modo diretto, il che significa che l’anodo deve essere collegato al polo positivo della fonte di alimentazione e il catodo al polo negativo. Se il LED è collegato al contrario (polarizzazione inversa), non si accenderà perché la corrente non può fluire attraverso di esso nel modo giusto.

Calcolo della Resistenza Serie

Per proteggere il LED da correnti eccessive, si usa una resistore connesso in serie. Il calcolo di questa della resistenza (R) dipende dalla tensione di alimentazione (VS), dalla tensione del LED (VI​) e dalla corrente desiderata attraverso il LED (ILED​):

Dove:

  • VS​ è la tensione di alimentazione
  • VLED​ è la tensione di funzionamento del LED, tipicamente tra 1.8V e 3.3V a seconda del colore
  • ILED​ è la corrente di funzionamento desiderata per il LED, solitamente intorno a 20mA per la maggior parte dei LED, ma può variare.

Corrente di Funzionamento e Colore

La corrente di funzionamento del LED influisce sulla luminosità, ma anche il colore del LED ha un ruolo nella determinazione della tensione di funzionamento. Ecco alcune tensioni di funzionamento approssimative in base al colore:

  • Rosso: 1.8V – 2.2V
  • Verde: 2.0V – 3.0V
  • Blu, Bianco, UV: 3.0V – 3.5V

Questi valori possono variare a seconda del tipo specifico di LED. Per un funzionamento sicuro, è essenziale controllare le specifiche del produttore del LED che si sta utilizzando.

Ricordate, utilizzare un resistore di valore adeguato è cruciale per prevenire il danneggiamento del LED a causa di una corrente troppo elevata. Il calcolo della resistenza in serie aiuta a garantire che il LED riceva la corrente corretta per il suo ottimale funzionamento e durata.

Di seguito un esempio di collegamenti per controllare l’accensione di un diodo LED rosso:

Materiali Necessari

  • 1 LED rosso
  • 1 resistenza (calcoleremo il valore)
  • 1 batteria (per esempio, una batteria da 9V)
  •  Cavi di collegamento

Calcolo della Resistenza

Prima di collegare il circuito, dobbiamo calcolare il valore della resistenza necessaria per proteggere il LED. Supponendo che il LED rosso abbia una tensione di funzionamento di circa 2V e che la corrente ideale per il LED sia di 20mA (0,02A), usiamo una batteria da 9V come alimentazione. Il calcolo della resistenza (R) si basa sulla formula precedentemente indicata dove:

  • Vs, tensione di alimentazione vale 9V
  • VLED​, tensione di funzionamento del LED vale 2V per un LED rosso
  • ILED, corrente di funzionamento desiderata per il LED, vale 0,02A (2 mA)

Sostituendo i valori nella formula otteniamo:

Il valore 350 Ohm è quello calcolato, bisognerà quindi ora scegliere il valore commerciale prossimo al valore calcolato, si potrà scegliere quindi tra 330 Ohm o 360 Ohm.

Collegamento del Circuito

  1. Collega un’estremità della resistenza a uno dei terminali della batteria (il polo positivo, se state usando un portabatterie con i cavi già attaccati).
  2. Collega l’altra estremità della resistenza al terminale più lungo (anodo) del LED. L’anodo è il lato positivo del LED.
  3. Collega il terminale più corto (catodo) del LED al polo negativo della batteria. Puoi fare questo direttamente o usando un cavo.
  4. Una volta completato il collegamento, il LED dovrebbe accendersi. Se non si accende, verifica i collegamenti e assicurati che la batteria sia carica.

Ricordate come detto sopra, è importante non invertire la polarità del LED, perché non si illuminerà se collegato al contrario.

Nel modulo Grove LED incluso nell’Arduino Sensor Kit, la resistenza di limitazione della corrente è già integrata sul PCB (circuito stampato), quindi, non c’è bisogno di preoccuparsi di aggiungere manualmente una resistenza esterna quando lo usate; questa parte del lavoro è già stata fatta per voi. Questo tipo di collegamento verrà approfondito in un corso successivo.

Ricordate, state partecipando a un corso introduttivo il cui scopo è guidarvi, passo dopo passo, nel mondo della programmazione e nella realizzazione di sistemi elettronici. Questo approccio semplificato vi permette di concentrarvi sull’apprendimento delle basi, evitando inizialmente di soffermarvi troppo sui dettagli tecnici.

Utilizzare l’Arduino Sensor Kit

Le funzioni che verranno usate nei programmi che seguono saranno le seguenti:

pinMode()
La funzione pinMode() in Arduino è essenziale per impostare la modalità di funzionamento di uno specifico pin della scheda Arduino. Questa funzione permette di definire se un pin deve comportarsi come un ingresso (input) ovvero riceve un segnale in ingresso o come un’uscita (output) ovvero fornisce un segnale in uscita.

digitalWrite()
La funzione digitalWrite() in Arduino è utilizzata per scrivere un valore HIGH (1 logico corrispondente a 5V) o LOW (0 logico, corrispondente a 0V) su un pin configurato come OUTPUT. Questo permette di controllare dispositivi elettronici come LED, motori e altri componenti elettronici.

delay()
La funzione delay() in Arduino è utilizzata per introdurre un ritardo nel programma per un determinato numero di millisecondi. Durante questo ritardo, il programma si ferma e non esegue altre istruzioni. Questo può essere utile per controllare il timing di varie operazioni, come il lampeggio di un LED, il ritardo tra due azioni. Vedremo in lezioni successive come utilizzare un’altra tecnica per la gestione dei ritardi che permette di non bloccare l’intera esecuzione del programma.

Sketch 1

1// Prof. Maffucci Michele
2// Blink del LED connesso al pin digitale 6
3 
4// #define permette di assegnare un none ad un valore costante prima che
5// il programma venga compilato.
6// Le costanti così definite non occupano spazio nella memoria del mirocontrollore
7 
8#define LED 6
9 
10void setup() {
11// inserire quì il codice che deve essere eseguito una sola volta
12// dal momento che colleghi all'alimentazione Arduino
13pinMode(LED, OUTPUT); // con pinMode indichiamo come verrà usato il pin, in questo caso come output
14}
15 
16void loop() {
17// Inseriamo nel loop il codice che vogliamo
18// venga ripetuto continuamente
19 
20digitalWrite(LED, HIGH); // Imposta ad HIGH (5V) la tensione sull'anodo del LED
21delay(1000); // Attesa di 1000 millisecondi
22digitalWrite(LED, LOW); // Imposta ad LOW (0V) la tensione sull'anodo del LED
23delay(1000); // Attesa di 1000 millisecondi
24}

Sketch 2

Continua a leggere

Contenitore per stazione meteorologica

Come promesso nei scorsi giorni sui social, spero di fare cosa gradita nel condividere i progetti per la realizzazione di una piccola casetta da esterno per ospitare i circuiti elettronici che serviranno per realizzare una stazione meteorologica. Nel video allegato il contenitore della stazione meteorologica realizzato in compensato e tagliato a laser che può essere anche stampato in 3D.

La struttura è volutamente realizzata ad incastro per facilitarne la realizzazione e l’assemblaggio. All’interno saranno inseriti i circuiti necessari che in funzione della classe frequentata dagli studenti potranno essere: microbit, schede Arduino, Esp32 ecc…

L’attività con i ragazzi prevede: corso di meteorologia, esercitazioni sulle tecnologie elettroniche e realizzazione della stazione meteorologica.

Sul tetto del della stazione meteorologica verrà disposto un piccolo pannello solare che permetterà la ricarica della batteria di alimentazione utilizzata per i circuiti elettronici.

Per prelevare i sorgenti per il taglio laser e la stampa 3D seguire il link su Thingiverse.

Buon Making a tutti 🙂

BBC micro:bit – MakeCode Multi-Editor

Durante i miei corsi online mi trovo spesso nella condizione di dover simulare la  trasmissione dati tra due microbit, ad esempio il primo dedicato alla rilevazione della temperatura ed il secondo dedicato alla visualizzazione della temperatura su display, o ancora programmare e gestire istantaneamente due micro:bit reali collegati al medesimo PC.

Per eseguire questa operazione ci viene in aiuto la funzione Multi Editor del MakeCode editor che offre un modo utilissimo per gestire simultaneamente la programmazione di dispositivi diversi. Questa caratteristica permette di avere due finestre di editor separate, una per il trasmettitore e una per il ricevitore, consentendo agli utenti di creare, modificare e testare due programmi contemporaneamente​.

Questa funzionalità si rivela particolarmente utile per simulare l’esperienza reale di gestione di programmi radio sul micro:bit, facilitando lo sviluppo e il testing di comunicazioni wireless tra dispositivi, pertanto questa funzionalità risulta utilissima in  ambito didattico.

Le due aree di programmazione possono esser ridimensionate muovendo orizzontalmente la linea di separazione, oppure possiamo mantenere modalità diverse di vista, ad esempio di codice su un micro:bit e  full screen del micro:bit sull’altra metà.

Nell’esempio mostrato di seguito un semplicissimo programma, realizzato durante uno dei miei corsi, sulla sinistra è presente un micro:bit (1) che trasmette in modo continuo la temperatura rilevata, sulla destra un secondo micro:bit (2) su cui premendo il pulsante A mostra la temperatura rilevata dal micro:bit (1). Questa operazione potrà essere fatta sia in modalità virtuale che reale.

Modalità virtuale:

Modalità reale: entrambi i microbit sono connessi allo stesso computer, vengono programmati ed usati insieme:

Quando farete il pairing tra Browser e micro:bit, vedrete che nel pannello di scelta del dispositivo potrete selezionare più micro:bit, accoppiatene uno alla volta per capire in quale area di programmazione agirete.

Se non riuscite ad effettuare il pairing, scollegate i dispositivi, ricaricate la pagina, riconnettete i micro:bit e riprovate ad effettuare il pairing.

Per provare la versione Multi-edit dell’editor seguite il link.

In alternativa se volete utilizzare la versione Multi-edit utilizzando tutti i file che avete nel vostro account online o nella cache di navigazione seguite il link.

Buon Coding a tutti 🙂

EduRobot MicroMoto – Versione Arduino

Qualche mese fa durante un corso per docenti avevo realizzato EduRobot MicroMoto un piccolo kit robotico nato dalla necessità di realizzare attività di Coding e Robotica che potessero essere sperimentate da un numero elevato di allievi, inclusivo dal punto di vista economico, facile da assemblare e personalizzare.

MicroMoto nasce per essere essenziale, sia nella costruzione che nell’uso quotidiano, con  una forma compatta per essere utilizzato comodamente a scuola, sia aula che in laboratorio o a casa.

Il piccolo MicroMoto è stato adottato da diverse classi 🙂 e ringrazio i colleghi che hanno seguito i miei corsi per aver usato questo progetto. In questi mesi mi sono giunte richieste per la realizzazione di una versione Arduino, nello specifico della versione R4 che permette comunicazione Bluetooth e WiFi con un display per mostrare gli stati del sistema e possibilità di essere programmato in C ed in MicroPython e questa versione la utilizzerò da domani per un corso di robotica indirizzato a docenti.

La modalità costruttiva per questa versione Arduino è la medesima di quella realizzata per la versione BBC micro:bit con scheda motori :MOVE, sono presenti però alcune piccole differenze nella faccia superiore, nel taglio delle palline da Ping Pong utilizzate come Caster Ball e nell’uso di un pacco batteria posto nella parte interna del robot, fate riferimento a questo breve tutorial ed utilizzate il PDF allegato effettuare i tagli.

Ricordo che la modalità per vincolare i motori alla struttura avviene sempre con elastici.

Come già segnalato nel post di presentazione, il design del kit è stato pensato per essere minimale e simmetrico, misurando solamente 10×10 cm. Assomiglia a una piccola scatola, assemblata con colla a caldo, un metodo che non solo garantisce maggiore sicurezza durante il montaggio, ma accelera anche significativamente il processo rispetto alle precedenti versioni che utilizzavano viti, facilitando così tutto il lavoro di costruzione.

Utilizzando cartone come materiale base, il kit permette una grande flessibilità per l’espansione e la personalizzazione. L’uso è quello di un cartone di 4 mm di spessore, ricoperto da un foglio bianco adesivo su cui sono stampati i contorni per il taglio. Questo permette agli studenti di esprimere la loro creatività, colorando e personalizzando le superfici bianche. MicroMoto può essere ulteriormente arricchito incollando pezzi Lego sulle sue superfici, offrendo così una versatile adattabilità a diverse esigenze educative.

Nel corso che sto realizzando verranno aggiunte altre funzionalità:

  • evita ostacoli
  • segui linea
  • segui luce

Allego il file PDF con i profili ritaglio in colore rosso. Nel video allegato ho usato un foglio A4 adesivo bianco, ma è possibile utilizzare anche un comune foglio di carta che potrà essere incollato al cartone.

Di seguito le istruzioni per la costruzione.

Continua a leggere