Errori comuni nell’uso di Arduino – utilizzo scorretto dei tipi float e integer

Continuo la segnalazione degli errori più comuni che riscontro nella correzione delle esercitazioni su Arduino che svolgo con i miei allievi.

Capita molto spesso per errore di effettuare calcoli in cui i valori appartengono a tipi diversi, ad esempio quando dividiamo un numero di tipo float ed un numero di tipo int. L’operazione è permessa dal compilatore in quanto l’operazione può essere sfruttata dal programmatore, ma se non si conosce come funzionano le conversioni di tipo in C si rischia di commettere errori.

L’operazione di conversione di tipo è conosciuta anche come typecasting e converte una variabile da un tipo di dato a un altro e può avvenire nelle due direzioni, ad esempio da float ad int o da int a float

Ricordo che:

Il tipo di dato int viene usato per gestire numeri interi, quindi senza decimali e memorizzano valori a 16 bit (2 byte) nel range da 32.767 a -32.768

Il tipo di dato float è usato per i numeri in virgola mobile per la rappresentazione di numeri piccolissimi o grandissimi con o senza segno e con o senza decimali. I float sono memorizzati utilizzando 32 bit (4 byte) nel range tra 3,4028235E+38 a -3,4028235E+38.

int pippo = 4;
float pluto = 10 / pippo; // verificate se questa operazione è corretta
Serial.println(pluto);

Cosa vi aspettate venga visualizzato sulla Serial Monitor?
Dovreste verificare che la divisione restituisce il valore 2, anche se l’operazione dovrebbe restituire il valore 2,5.

Il compilatore vi mostrerà solamente il valore intero.
Per evitare questo problema potete agire in due modi.

Modo 1

Possiamo convertire gli interi in float, in modo che il compilatore sappia trattarli come float anziché interi:

int pippo = 4;
float pluto = (float)10 / (float)pippo;
Serial.println(pluto);

Modo 2

Potete aggiungere un decimale al valore di tipo float, nel caso del valore 10 il valore decimale che possiamo aggiungere è 0, quindi scriveremo il numero come 10.0

int pippo = 4;
float pluto = 10.0 / pippo; // verificate se questa operazione è corretta
Serial.println(pluto);

Qual è il metodo migliore? Dipende, probabilmente il secondo metodo risulta più chiaro e snello nella scrittura, ma siete liberi di scegliere quello che preferite.

Buona Sperimentazione 🙂

EduRobot il ritorno

Prossima settimana per le classi terze impegno di Alternanza Scuola Lavoro presso l’ITIS G.B. Pininfarina, attività di azienda simulata, purtroppo sono stati ridotti i tempi grazie alla legge di bilancio e quindi cosa fare per le due classi 3 Automazione che seguo?

Ho strutturato un’attività derivata da una parte di un modulo didattico di automazione e microcontrollori che sviluppai negli scorsi anni e che ho riadattato nei contenuti e nella forma per poter essere sviluppata in una settimana, come ho disegnato il tutto?

Obiettivo:

ci si pone nelle condizioni di un’azienda che vuole produrre kit robotici per la didattica, l’obiettivo è assemblare i kit che fornirà il Prof., produrre esempi di codice, sviluppare miglioramenti nella struttura e nel codice, pensare al materiale pubblicitario, sviluppare la documentazione tecnica e pubblicitaria in italiano e in inglese.

Per accelerare i tempi ho ripreso il progetto EduRobot sviluppato qualche anno fa, un kit in legno molto semplice nella struttura e nell’elettronica, il progetto si era perso tra gli scatoloni della mia soffitta 🙂

Ho riesumato il tutto e realizzato alcuni elementi 3D adattandoli ai fori già presenti sulla basetta di compensato, in questo modo il kit diventa più semplice nell’assemblaggio.

Curiosamente ho notato che con 4 piccoli elementi stampati in 3D è possibile realizzare un robot semplice di qualsiasi forma si desidera, potreste fissare questi elementi su una basetta rigida: compensato, plexiglass, cartone, ecc… Mi sto convincendo che diventerà uno degli ausili che utilizzerò nei prossimi mesi a scuola, perché?

“Poca spesa tanta resa” 🙂

Per ridurre gli spazi ho impilato un L298N Dual H-Bridge su un Arduino.
Per ora ho utilizzato come fonte di alimentazione una batteria da 9V, certamente so che non è la soluzione migliore, ma pensando a due classi 3, risulta la soluzione che nei tempi e nelle disponibilità economiche risulta più vantaggiosa, modificare il tutto con una pratica batteria LiPo è molto semplice… ci penserò nei prossimi mesi.
Per bilanciare meglio il robot ho aggiunto come peso un batteria aggiuntiva di riserva posta in prossimità della caster ball. Sto già disegnando adattamenti per Raspberry Pi e BBC micro:bit che cercherò di rendere disponibile nel breve.

Certamente entro lunedì proporrò un breve manuale di costruzione e programmazione (riprendo molte cose che ho già realizzato e scritto su queste pagine) per quanto riguarda i sorgenti per la stampa 3D anche questi saranno disponibili da lunedì su Thingiverse, in modo che anche altri, spero, possano utilizzare il materiale per sviluppare attività didattiche.

Tanto merito per la riuscita di questo piccolo progetto alla mia nuova Anet A8 sta stampando giorno e notte da 3 giorni 🙂

A presto.

Robottillo badge

Tra qualche settimana incomincerò un corso di Coding e Robotica per bambini di scuola elementare. Per creare un’identità di gruppo e per rompere il ghiaccio iniziale ho deciso di realizzare “Robottillo badge” da regalare agli studenti.

Ho realizzato 4 tipi di badge che potrete scegliere in funzione dell’attività che dovrete svolgere:

  1. coder
  2. maker
  3. mini maker
  4. micro:bit

Per prelevare i sorgenti stl per la stampa 3D seguite il link su Thingiverse.

Buon divertimento 🙂

Avventure robotiche: ROB-O-COD

Ecco svelato l’arcano, avevo accennato su Facebook ma ora posso finalmente rispondere pubblicamente su queste pagine a quanti mi chiedevano cosa stessi combinando in tutti questi mesi con strani esagoni, robot Lego Mindstorms EV3 e draghi 🙂

ROB-O-COD è la riposta

Ora posso parlarne visto che la trasmissione è stata ufficialmente presentata ieri 1/1/19 pomeriggio durante il TG Leonardo, dal minuto 09:32 al minuto 12:55 è possibile guardare la il servizio su ROB-O-COD:

Da alcuni mesi sto collaborando con Rai e da alcune settimane partecipo alle registrazioni della trasmissione ROB-O-COD, primo game show televisivo italiano dedicato al coding e robotica, prodotto dalla Direzione Rai Ragazzi per il canale RAI Gulp per studenti di scuola media di tutt’Italia. l’USR Piemonte qualche mese fa aveva promosso la call per le scuole.

Nello specifico mi sto occupando della progettazione dei campi gara, immaginando percorsi e meccanismi che aggiungono gradi di difficoltà diversi, ovviamente tutto ciò fatto in stretta collaborazione con persone incredibilmente creative: centro Ricerche Rai, autori, scenografi e tantissime altri, un grande lavoro di squadra.
Inoltro sono di supporto ai giovanissimi programmatori che gareggiano.

La trasmissione andrà in onda da febbraio, nei pomeriggi, e tra qualche settimana saranno rese disponibili le date.

Coma già detto ad amici vedere giovani studenti così appassionati riempie il cuore, inoltre la trasmissione evidenzia come lo spirito di squadra è fondamentale per risolvere problemi ed imprevisti, vedere poi che tutto questo pensare e programmare viene svolto sui campi gara che ho contribuito a realizzare mi rende enormemente felice.

Dal punto di vista personale inoltre è una bella occasione per incontrare fisicamente i molti amici/colleghi conosciuti sui social con cui condivido esperienze didattiche, un modo per confrontarsi e per parlare di Coding.

Ovviamente è un mondo totalmente diverso da quello che vivo quotidianamente, osservare ed interagire nelle dinamiche di uno studio televisivo offre spunti interessantissmi per sviluppare contesti didattici e strategie di insegnamento.

Questa esperienza posso riassumerla con una sola frase: “mi sto divertendo da matti” 🙂

I miei corsi per La Tecnica della Scuola – il Coding con il nuovo Scratch 3: per una didattica attiva

Inaugurazione del ciclo dei webinar per il nuovo anno con un corso dedicato a Scratch 3 che uscirà dallo stato di beta version domani.

L’intera azione formativa sarà svolta utilizzando la nuova versione dell’ambiente di sviluppo, si analizzeranno in modo specifico le nuove funzionalità offerte:

  • Creare, condividere e remixare progetti su tablet (oltre che a laptop e desktop)
  • Modalità di gestione tra i numerosi sprite aggiunti, sfondi e suoni
  • Analisi del rinnovato editor per disegnare e manipolare l’audio, in cui è possibile con maggior libertà e semplicità effettuare il remix e manipolare i personaggi creati, musica e suoni
  • Utilizzo delle istruzioni per manipolare applicativi e hardware esterno con cui gli studenti potranno programmare dispositivi fisici come BBC micro:bit, Lego Mindstorms EV3, Lego WeDo 2.0, Lego Boost, ma anche servizi web come come Google Traduttore

Il corso ha l’obiettivo di fornire le competenze per sviluppare in autonomia un percorso laboratoriale di Coding per all’apprendimento dell’uso di Scratch 3 secondo modalità attive e inclusive attraverso la realizzazione di progetti di storytelling, giochi didattici ed esercizi interattivi.
Verranno fornite schede di lavoro, immediatamente spendibile in classe, che guideranno il docente alla sviluppo di esercitazioni con possibilità di personalizzazione in funzione delle esigenze didattiche.
Durante il corso verranno analizzate anche le precedenti versioni di Scratch 1.4 e Scratch 2.

Saranno svolti 4 incontri in webinar di 2 ore ciascuno per un totale di 10 ore di formazione:

  • Mercoledì 9 gennaio 2019 – Ore 17.00/19.00
  • Lunedì 21 gennaio 2019 – Ore 17.00/19.00
  • Martedì 22 gennaio 2019 – Ore 17.00/19.00
  • Lunedì 28 gennaio 2019 – Ore 17.00/19.00
  • Martedì 29 gennaio 2019 – Ore 17.00/19.00

Per maggiori informazioni sui contenuti, sulle modalità di iscrizioni e sui costi seguire il link allegato al sito di Tecnica della Scuola.