Archivi tag: coding

Arduino: Qual è la differenza tra Serial.write() e Serial.print() e quando vengono usati?

Ho già trattato l’argomento sull’uso di Serial.write() e Serial.print(), però durante le lezioni svolte agli studenti negli scorsi mesi ho aggiunto alle lezioni alcuni contenuti che vi condivido.

Differenza tra Serial.write() e Serial.print()

Serial.write()

La funzione scrive dati binari sulla porta seriale. I dati vengono inviati come byte o serie di byte. Nel caso si abbia la necessità di inviare i caratteri che rappresentano le cifre di un numero bisogna utilizzare la funzione Serial.print().

Serial.print()

Stampa i dati sulla porta seriale come testo ASCII leggibile dagli esseri umani.

Quindi se scriviamo:

Serial.write(0x45); // invia sulla seriale 0100 0101

Serial.print() è più versatile, farà per noi la conversione da ASCII a binario e può anche convertire in binario (BIN), esadecimale (HEX), ottale (OCT), decimale (DEC) ma bisogna specificare come secondo argomento la codifica:

Serial.print(67, BIN) resituisce "1000 0011"
Serial.print(67, OCT) resituisce "103"
Serial.print('M', DEC) resituisce "77"
Serial.print(67, HEX) resituisce "43"

Questo il codice di test:

void setup() {
  Serial.begin(9600);

  Serial.println(67, BIN);   // resituisce "1000 0011"
  Serial.println(67, OCT);   // resituisce "103"
  Serial.println('M', DEC);  // resituisce "77"
  Serial.println(67, HEX);   // resituisce "43"
}

void loop() {

  // per ora nulla :-)

}

Altro esempio:

Serial.write(0x41);   // A
Serial.write(0x52);   // R
Serial.write(0x44);   // D
Serial.write(0x55);   // U
Serial.write(0x49);   // I
Serial.write(0x4E);   // N
Serial.write(0x4F);   // O

Questo il codice di test:

void setup() {
  Serial.begin(9600);

  Serial.write(0x41);   // A
  Serial.write(0x52);   // R
  Serial.write(0x44);   // D
  Serial.write(0x55);   // U
  Serial.write(0x49);   // I
  Serial.write(0x4E);   // N
  Serial.write(0x4F);   // O
}

void loop() {
  
  // per ora nulla :-)

}

In modo più rapido con la Serial.print() si ottiene il medesimo risultato:

Serial.print("ARDUINO");

Questo il codice di test:

void setup() {
  Serial.begin(9600);

  Serial.print("ARDUINO");
}

void loop() {

  // per ora nulla :-)

}

Serial.println() aggiungerà 2 byte di fine riga 0x0D e 0x0A:

Serial.println("ARDUINO");

che permette la stampa del contenuto tra virgolette con l’aggiunta di una nuova linea. Per mostrare l’inserimento di una nuova linea, aggiungiamo la stampa del carattere “-“:

void setup() {
  Serial.begin(9600);

  Serial.println("ARDUINO");
  Serial.print("-");
}

void loop() {

  // per ora nulla :-)

}

Stesso risultate si ottiene se aggiungiamo manualmente con una Serial.write() i caratteri di fine riga: 0x0D e 0x0A:

void setup() {
  Serial.begin(9600);

  Serial.print("ARDUINO");
  Serial.write(0x0D);
  Serial.write(0x0A);
  Serial.print("-");
}

void loop() {

  // per ora nulla :-)

}

Provo a chiarire l’utilizzo della Serial.write con la trasmissione di numeri sulla seriale.

Supponiamo di dover inviare sulla seriale il numero 243. La rappresentazione binaria (in 1 e 0) di questo numero è 1111 0011. L’uso del comando Serial.write(243) invierà letteralmente solo 1111 0011. La rappresentazione esadecimale dello stesso numero è 0xF3 e il comando Serial.write(0xF3) invierà la stessa cosa: 1111 0011.

Se dovessimo usare il comando Serial.write(“243”) si avrebbe:

00110010 00110100 00110011

Cosa che può apparire molto strana.

Quando una stringa viene passata come argomento viene suddivisa in singoli caratteri, convertita in ASCII e quindi inviata come byte per ogni carattere.

Si otterrebbe lo stesso risultato se si dovesse usare quanto segue:

Serial.write(50);
Serial.write(52);
Serial.write(51);

In binario: 00110010 00110100 00110011

Vediamo ora cosa succede con la Serial.print().

I comandi Serial.print(243) o Serial.print (“243”) stamperanno entrambi la stessa cosa: 00110010 00110100 00110011. Questo perché il comando print prima converte qualsiasi numero in una rappresentazione di stringa e poi usa il comando Serial.write() per inviare ogni carattere come singoli bit ASCII.

Buon coding a tutti 🙂

Scratch 3.0 e BBC micro:bit installazione e primi test

Quando avevo annunciato su queste pagine il 16 luglio scorso il futuro supporto di micro:bit da parte di Scratch 3.0 la funzionalità non era ancora disponibile, finalmente da qualche giorno questa possibilità è stata resa disponibile ed ora possiamo incominciare a sperimentare.

L’utilizzo di micro:bit con Scratch 3.0 richiede pochissimi passi, di seguito trovate le schermate che ne dettagliano l’installazione ed un paio utilizzo.

Aggiungiamo l’estensione micro:bit:

Selezionate micro:bit

Per consentire il collegamento con Scratch 3.0 è indispensabile installare “Scratch Link” per poterlo prelevare un click sul punto interrogativo “?” (o fate click sul link che vi ho indicato), si aprirà un’altra pagina che vi guiderà passo passo all’installazione:

Pagina di aiuto che trovate direttamente a questo link:

Ricordate che dovete:

Connettere il micro:bit

Scaricare e scompattare il file: scratch-microbit-1.0.hex.zip

Copiare il file .hex all’interno del micro:bit

Avviate Scratch Link:

Scratch Link attiverà un pannello di controllo:

Un click sulla voce di menù Scratch Link mostrerà l’indirizzo di collegamento e la versione:

Selezionando nuovamente l’icona di aggiunta libreria apparirà il pannello di collegamento al micro:bit, fate click sul pulsante “collega”

Avrete notifica dell’avvenuto collegamento, premete “Torna all’Editor” per proseguire con  la programmazione:

La percezione dell’avvenuto collegamento si vedrà anche sul display del micro:bit su cui comparirà il nome assegnato alla vostra scheda, nel mio caso “zuvop”:

Trascinate nell’area di programmazione il blocco:  “mostra Ciao! su display” ed ogni volta che farete click sul blocco visualizzerete il testo sul display:

La realizzazione di un programma che reagisce alla pressione dei pulsanti A e B è estremamente semplice:

Nell’attesa che giungano nuove funzionalità vi auguro…

Buon Coding e Buon inizio di Anno Scolastico 🙂

TinyTrak:bit – un cingolato con il cuore di un micro:bit

Idee che nascono sotto l’ombrellone 🙂

Qualche mese fa parlavo con l’amica e collega Maria Grazia Berardo dell’IIS Vallauri: “Michele se ti chiedessi di progettare un robot con gli allievi che tipologia realizzeresti?”

Io: “sicuramente un cingolato”

Maria Grazia: “ecco come tutti i ragazzi preferite i cingoli! 🙂 ma da cosa dipende?”

Io: “… banalmente dal fatto che da bambino sognavo di guidare un escavatore o un trattore cingolato… e poi posso andare ovunque… ed il rumore del motore… sinfonia 😊… ma in ogni caso dipende dal contesto e dalla gara robotica”

Maria Grazia: “ma sai che nel decidere con i miei allievi quale tipo di robot costruire per le varie gare robotiche quasi tutti i ragazzi hanno optato per un cingolato… sarà come per te qualcosa che nasce dall’infanzia 😀”

E per non smentirmi era da tempo che desideravo mettere i cingoli al DotBot:bit e surfando senza meta sul web sono giunto al gruppo Facebook Tiny Trak – Micro FPV Crawler che mi ha colpito, potrete vedere molti piccoli cingolati con telecamera. Il progetto mi ha ricordato una chiacchierata fatta qualche hanno fa ad un JobOrienta con un artificiere della Polizia di Stato in cui si parlava di realizzazione di micro robot con telecamera a bassissimo costo di produzione da far transitare in tubazioni o spazi ristretti… al tempo le micro telecamere erano parecchio costose, i tempi sono cambiati e gli obiettivi pure… didattica e gioco 😊

Ulteriori risorse su questa tipologia di cingolati le potete trovare su Thingiverse trovate molte informazioni.

Facendo il mix tra i progetti trovati sul gruppo Tiny Track e quanto già fatto per DotBot:bit ho realizzato velocemente il primo prototipo del piccolo cingolato. Per velocizzare la produzione ho utilizzato un cingolo Lego e modificato strutture già realizzati da altri.
Renderò disponibile tutto nei prossimi giorni, voglio solamente ottimizzare i supporti che reggono il micro:bit, bilanciare il tutto e costruire qualche piccolo esempio di programmazione.

Nel caso abbiate suggerimenti/necessità utili per le sperimentazioni che desiderate fare con i vostri allievi volentieri accetto suggerimenti.

Buon Coding a tutti.

Scratch 3.0 – alcune cose da sapere sulla nuovissima versione presto on-line

Mi stupisco sempre dell’enorme quantità di giochi, storie ed animazioni che gli studenti sono in grado di realizzare con Scratch, senza alcun dubbio è tra i software più utilizzati e conosciuti per fare Coding a scuola.
Il prossimo agosto verrà reso disponibile una nuova versione (link alle versione beta) di questo utilissimo software, Scratch 3.0 che espanderà il modo in cui gli studenti creeranno e condivideranno i loro progetti e offrirà maggiori possibilità per gli insegnanti nel supportare gli allievi all’apprendimento dell’uso di Scratch. La nuova versione includerà nuove immagini, nuovi materiali di supporto e nuove funzionalità di programmazione e potrà essere utilizzata su un’ampia varietà di dispositivi tra cui anche i Tablet.

Quindi il prossimo agosto vedremo la versione on-line di Scratch 3.0 mentre a partire dal 2 gennaio 2019 Scratch 3.0 sarà integrato all’interno del sito inoltre sarà disponibile una versione offline autonoma (da scaricare).

Scratch 3.0 avrà più modi per creare e condividere

  • Creare, condividere e remixare progetti su tablet (oltre ovviamente a laptop e desktop)
  • Scelta tra dozzine di nuovi personaggi, sfondi e suoni
  • Nuovi editor per disegnare e manipolare l’audio, quindi maggior libertà e semplicità nell’effettuare il remix e la manipolazione di personaggi, musica e suoni
  • Nuove funzioni (blocchi di programmazione) con cui gli studenti potranno programmare dispositivi fisici, (FANTASTICO!!!) come BBC micro:bit, Lego Mindstorms EV3, Lego WeDo 2.0, Lego Boost, ma anche servizi web come come Google Traduttore

Scratch 3.0 avrà un nuovo supporto per chi incomincia a fare Coding

  • Funzionalità che facilitano gli utenti inesperti ad apprendere l’uso di Scratch
  • Nuovi video tutorial di dimensioni ridotte che mostrano l’utilizzo di una particolare funzione non solamente in modalità testuale o immagine ma anche mediante video
  • Saranno aggiornate le Scratch Activity Cards and Educator Guides
  • Saranno aggiornate le Creative Computing Curriculum realizzate da ScratchEd
  • Saranno aggiornati i tutorial Code Club e CS First

Scratch 3.0 è quello che già conosci ma si espande

  • Tutti i progetti e gli account esistenti continueranno a funzionare in Scratch 3.0
  • Tutti i blocchi di programmazione che già si usavano nella versione 2 saranno ancora presenti e ne saranno aggiunti altri
  • Scratch 3.0 sarà disponibile in molte lingue
  • Le versioni offline di Scratch 1.4 e Scratch 2.0 saranno ancora disponibili
  • Potrete importare progetti realizzati in Scratch 2 in Scratch 3
  • Scratch continuerà ad essere gratuito per tutti!

Per maggiori dettagli su ciò che sta arrivando in Scratch 3.0, date uno sguardo all’FAQ di Scratch 3.0.

Buon coding a tutti 🙂

MakeCode per LEGO MINDSTORMS Education EV3

E’ da qualche tempo che ho ripreso ad utilizzare Lego Mindstorms, come sapete molte delle mie attività di didattica della robotica le incominciai con NXT e poi NXT 2. In questo periodo sto svolgendo un’attività lavorativa in cui devo utilizzare l’EV3 e in queste nottate 🙂 sto realizzando sperimentazioni e tutorial. Dirvi che mi sto divertendo ad usare questo oggetto di “tecnologia didattica” è scontato, usare l’ambiente di programmazione grafico di Lego oltre che piacevole è semplicissimo.
Da tempo utilizzo BBC micro:bit di cui ho apprezzato tantissimo l’interfaccia di programmazione grafica a blocchi, che ben si adatta ad ogni livello di studio.

Da qualche tempo MakeCode di Microsoft ha reso disponibile in versione beta il supporto a Lego Mindstorms EV3, in questo modo potrete ritrovare la stessa interfaccia grafica di programmazione a blocchi drag-and-drop che avete per l’ambiente di sviluppo di BBC micro:bit, in questo modo potrete costruire lezioni usando tecnologie diverse ma un ambiente di sviluppo praticamente identico.

Per la programmazione dell’EV3, così come accade per micro:bit, non sarà necessario installare nessun software sul proprio computer, avrete bisogno solamente di una connessione internet, un browser per accedere all’ambiente di sviluppo online e di una connessione USB tra il vostro computer e l’EV3.

All’interno dell’ambiente di programmazione troverete una serie di blocchi che vi permetteranno di visualizzare immagini e disegni sullo schermo

E’ stata semplificata la visualizzazione dei sensori e la visualizzazione dei valori dei sensori sullo schermo dell’EV3.

Per chi programma con l’ambiente grafico ufficiale di Lego avrà notato che spesso risulta difficoltoso orientarsi tra le molte opzioni dei vari blocchi, con l’ambiente di MakeCode la navigazione tra le varie opzioni risulta decisamente più semplice.

Alcuni esempi

Assegnazione a sensori e motori porte differenti

Tipologia di motore da usare

Valore assegnato alla sterzata

Selezione dell’effetto sonoro, di cui potete averne un’anteprima passando con il puntatore del mouse sull’audio scelto

Interessante anche la modalità con cui è possibile commentare il codice e mantenere ordinati anche i commenti, ad ogni blocco infatti è possibile associare qualcosa di molto simile ad un post-it.

Probabilmente la cosa più interessante di tutte è quella di poter utilizzare il simulatore EVO LEGO MINDSTORMS Education che fornisce un feedback immediato del programma realizzato, quindi un buon modo per effettuare il debug di programmi, in questo modo gli studenti potranno modificare i valori di input del sensore, vedere come si comportano i motori e visualizzare le informazioni sullo schermo.

Naturalmente, così come accade per micro:bit anche con MakeCode per EVO LEGO MINDSTORMS Education è possibile passare da una modalità di programmazione grafica a blocchi a quella mediante editor JavaScript in questo modo studenti con maggiori competenze informatiche potranno realizzare blocchi personalizzati.

Numerosi sono gli esempi di programmazione disponibili sulla piattaforma MakeCode per LEGO MINDSTORMS Education EV3, tutte le esercitazioni forniscono indicazioni dettagliate su come utilizzare ciascun sensore o motore, mentre i progetti contengono istruzioni complete sulla codifica e sulla creazione dei robot

Per iniziare con MakeCode per LEGO MINDSTORMS Education EV3, avrete bisogno di:

  • Un computer con una porta USB e accesso a Internet tramite un browser
  • Il set di base EV3 Education LEGO MINDSTORMS
  • Attenzione che per utilizzare questa modalità di programmazione bisognerà aggiornare il firmware dell’EV3, seguendo le istruzioni che trovate a questo link: makecode.mindstorms.com

Buon coding a tutti 🙂