Archivi categoria: arduino

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 🙂

Starter kit delle competenze digitali 4′ edizione


Ultimo webinar per Tecnica della Scuola prima di concedersi un periodo di riposo 🙂 Lo Starter kit delle competenze digitali giunge alla 4′ edizione, un percorso formativo sempre molto apprezzato che in quest’ultima edizione si arricchisce di ulteriori suggerimenti soprattutto per quanto riguarda il Coding. Tra settembre ed ottobre ripartiranno nuovi webinar e per tale occasione sto riformulando tutte le proposte con nuovi contenuti non ultimo l’espansione dello Starter kit. Più volte mi viene chiesto di proporre percorsi di didattica della robotica con diverse tecnologie: Arduino, BBC micro:bit, Raspberry Pi e ultimamente anche con Lego Mindstorms EV3 pertanto ci saranno corsi di Coding con queste specifiche tecnologie.

Nel prossimo corso dello Starter kit mostrerò come affrontare attività di Coding con la robotica, fornirò linee guida e riferimenti tecnologici, ovviamente partendo da un livello accessibile per tutti.

Date del corso:

  • Giovedì 12 luglio 2018 – dalle ore 17.00 alle 19.00
  • Lunedì 16 luglio 2018 – dalle ore 17.00 alle 19.00
  • Mercoledì 18 luglio 2018 – dalle ore 17.00 alle 19.00

Per maggiori informazioni sui contenuti del corso e sulle modalità di iscrizione vi rimando alla pagina specifica del sito di Tecnica della Scuola.

Grazie 🙂

Nome in codice DotBot Bubble

Obiettivo di quest’ultima versione: tondeggiante, veloce da costruire, trasportabile, economicamente accessibile per le scuole, multipiattaforma: #Arduino (UNO e Nano), #Raspberry Pi (3, 2, Zero), #microbit, #STM32F401 #Nucleo-64 e visto che lo avevo promesso ad una persona durante la scorsa Maker Faire di Roma anche #UDOO #NEO. Per ogni piattaforma ho disegnato un tutorial per realizzare un robot segui linea, evita ostacoli e altre tipologie di interazioni in cantiere. La struttura avrà, in una successiva versione, un involucro trasparente per proteggere i circuiti elettronici aggiungerò inoltre  elementi che permetteranno personalizzazioni estetiche.
Sto ancora studiando l’alimentazione più efficace, ho sperimentato con Li-Po però per alleggerire la struttura sto pensato a delle batterie Li-Ion che sperimenterò nella prossima settimana, per la versione preliminare 6 batterie AA da 1,5 V.

I sorgenti grafici per la stampa 3D per realizzarlo?
Entro qualche settimana,

perché?

Sto verificando l’efficacia della struttura meccanica e del software e della didattica, nel corso che si svolge presso l’IIS Vallauri di Fossano: ITS “Tecnico Superiore per l’Automazione e l’Innovazione di Processi e Prodotti Meccanici” – ITS VI (2016-2018), 2^ annualità (studenti neodiplomati) per cui sto svolgendo il corso: Microcontrollori.

Inoltre sperimenterò l’utilizzo con un nutrito gruppo di insegnanti durante il laboratorio: “La robotica tra i banchi di scuola: da BBC micro:bit ad Arduino”, attività che si svolgerà in occasione dell’evento organizzato dall’USR Piemonte: “La scuola europea del domani: le nuove tecnologie e i nuovi spazi di apprendimento ” venerdì 18 maggio 2018 presso l’Aula Magna LC M. d’Azeglio – via Parini 8 – Torino.

Spero poter regalare questa nuova piattaforma robotica al più presto in modo che possa essere usata da chi vorrà dal prossimo anno scolastico in attività di #Coding e #robotica

Buon Coding a tutti 🙂

Un’anteprima di alcuni dettagli del kit

 

Programmare micro:bit con l’IDE Arduino

Come avrete notato in questi mesi sto sperimentando molto con micro:bit, però sul mio computer è sempre aperto l’IDE di Arduino per progetti in corso per i miei studenti, ovviamente mi sono chiesto se possibile programmare micro:bit con l’IDE Arduino e certamente questo è possibile.

Qualche settimana fa ho raccolto un po’ di informazioni da questi tre link:

da queste risorse sto prendendo spunto per realizzare un manuale più corposo in cui mostro come utilizzare diversi microcontrollori con l’IDE Arduino, così come fatto qualche settimana fa su questo sito con l’uso dell’STM 32 Nucleo con l’IDE di Arduino

Lascio a voi le sperimentazioni.

Qualche Avvertenze

Nel caso voi abbiate usato in precedenza MicroPython il software di gestione della Bluetooth viene cancellato, l’IDE Arduino assume la parte di gestione sia installata, pertanto per per poterla installare potete operare in due modi:

  • scaricate il file microbit-bluetooth.hex (il file che scaricate è compresso) e tramite il JavaScript Blocks Editor installatelo
  • Usate il Library Manager di Arduino e procedete come segue:

Sketch -> Include Library -> Manage Libraries…

Scrivete BLEPeripheral dentro il campo di ricerca

Selezionate la riga in cui compare BLEPeripheral e fate click sul pulsante Install.

Per i successivi passi seguite quanto specificato nei link ad inizio post, quello che vi consiglio perché semplice ed intuitivo è Micro:bit with Arduino di Adafruit.

Buona sperimentazione a tutti 🙂

 

A Torino la Code Week si festeggia anche con la MEGAcoder

Nell’ambito della settimana della Code Week Europea 2017 l’associazione Dschola ha organizzato in collaborazione con ToolBox Coworking e FabLab For Kids il workshop gratuito MEGACoder della durata di 3 ore su coding e STEAM, rivolto agli studenti delle scuole elementari e medie. L’evento si svolgerà giovedì 19 ottobre 2017 dalle 9.30 alle 12.30 presso gli spazi di ToolBox Coworking in Via Agostino da Montefeltro 2 a Torino tantissime le adesioni, più di 400 studenti!
Attualmente purtroppo non ci si può più iscrivere come scuola, iscrizioni esaurite in pochissimi giorni, però sono ancora aperte le iscrizioni come tutor e se volete sostenere l’evento è possibile sponsorizzare le attività, tutto il ricavato sarà utilizzato per i bambini.

L’enorme evento di Coding sarà così organizzata:

  • I partecipanti saranno suddivisi in squadre da 10 membri per dare ai partecipanti la possibilità di essere attivi
  • Ogni squadra sarà seguita da un tutor che metterà a disposizione le proprie conoscenze su un tema a sua scelta
  • Ogni tutor fornirà il materiale di consumo e gli eventuali kit di lavoro alla squadra – Se le classi hanno a disposizione dispositivi (tablet o altro) possono portarli

Per l’occasione moltissimi amici colleghi di scuola superiore con i loro studenti saranno tutor per le squadre di studenti di scuola elementare e media ed anche io con 4 validissimi  miei studenti di 4A elettrici saremo insieme tutor per svolgere attività di coding e robotica con micro:bit ed Arduino. In questi giorni tra le mille attività che svolgiamo a scuola stiamo ultimando i preparativi per i laboratori che desideriamo proporre.

Passate a trovarci 🙂 saremo lieti di condividere con voi questo momento di didattica creativa.

Un enorme grazie ai miei allievi: Luca, Salvatore, Cristian, Antonio

Buon Coding a tutti.