Arduino – algebra booleana e funzioni logiche – dai componenti discreti, agli integrati, alla codifica in C

Nuovo Istituto, nuove avventure didattiche. Con le classi di questo nuovo anno scolastico più elettronica e più automazione. Tra gli argomenti che ho rivisto negli scorsi mesi in virtù delle attività che vorrò svolgere, molte sperimentazioni dedicata all’elettronica digitale e all’algebra di Boole, ho riformulato le esercitazioni con componenti discreti che utilizzano i classici integrati TTL 74XX: 7404, 7432, 7408, 7402, 7400, 7486, 74266 corrispondenti alle porte logiche: NOT, OR, AND, NOR, NAND, XOR, XNOR a queste attività aggiungerò, in una fase successiva, la realizzazione delle porte logiche con Arduino, quindi progettazione di semplici shield per la dimostrazione delle tabelle di verità degli operatori logici fondamentali e derivati.

Per rendere più interessante il laboratorio di elettronica, oltre che usare la breadboard, realizzare pcb e saldare, cercherò se il tempo lo permetterà, di far realizzare la scheda Arduino prima su breadboard e poi realizzare una nostra personalissima scheda Arduino con protezioni specifiche sulle uscite digitali ed altro… sogni nel cassetto… vedremo, un passettino alla volta.

Questo articolo è da intendersi come esercitazione e di supporto alla parte teorica ed è dedicata agli studenti delle classi 3′ e 4′ automazione, per lo svolgimento si richiede che gli allievi abbiano seguito un corso base su Arduino. Di seguito senza dilungarmi riprendo alcuni concetti di base che hanno solo l’obiettivo di comprendere meglio la parte sviluppata su Arduino, al fondo due circuiti e due sketch di esempio che potrete migliorare ed espandere.

Avviso per gli studenti

Quest’anno faremo automazione, non solo con PLC ma anche con microcontrollori (Arduino), quindi incominciare a strutturare in C le funzioni logiche sarà essenziale per iniziare a costruire i mattoncini di base dell’automazione, vedremo come costruire altre funzioni nel corso dell’anno.

Premessa (per ripassare velocemente)

I circuiti digitali sono presenti in moltissimi strumenti che utilizzimo ogni giorno, i più noti sono i computer costituiti principalmente da circuiti digitali che, come già sapete, elaborano segnali logici 0 e 1.

Qualsiasi calcolo all’interno di un computer utilizza l’aritmetica binaria e l’adozione di questa aritmetica è stata fatta perché i bit sono rappresentabili in modo semplice tramite dispositivi elettronici in cui è possibile distinguere i 2 stati del potenziale elettrico: high e low a cui si associano i numeri 1 e 0.

Partendo da questi presupposti è possibile costruire un sistema di calcolo che impiega i soli due simboli 0 e 1 che viene chiamato sistema logico binario.

Fu George Boole (1815-1864) che per primo costruì un modello matematico fondato su una logica di tipo binario, tale modello prende il nome di: algebra di Boole.

Come diffusamente esposto durante le lezioni di teoria, l’algebra booleana utilizza equazioni ed espressioni, ma segue le leggi della logica e non quelle dell’aritmetica, per cui le operazioni seguono regole differenti dall’algebra convenzionale.

Le porte logiche realizzano le operazioni logiche dell’algebra binaria.

Porte logiche fondamentali

Somma logica OR

L’operazione può essere effettuata su due o più variabili di ingresso. La somma logica OR assumerà il valore 1 se almeno una delle variabili di ingresso è al valore 1.

Se chiamiamo con A e B le variabili di ingresso e con Y la variabile di uscita, la somma logica assumerà lo stato logico 1 se almeno una delle due variabili assume lo stato logico 1.


si legge A OR B

Nella figura che segue è mostrata la tabella della verità con le quattro possibili combinazioni delle variabili di ingresso A e B è il simbolo logico corrispondente. Nella colonna Y sono indicati i valori dalla variabile di uscita Y che soddisfa la definizione della porta logica OR.

Prodotto logico AND

L’operazione può essere effettuata su due o più variabili di ingresso. Il prodotto logico AND assumerà il valore 1 se tutte le variabili di ingresso assumeranno il valore 1.

Se chiamiamo con A e B le variabili di ingresso e con Y la variabile di uscita, il prodotto logico assumerà lo stato logico 1 solo se tutte le variabili di ingresso sono allo stato 1.

si legge A AND B

Nella figura che segue è mostrata la tabella della verità con le quattro possibili combinazioni delle variabili di ingresso A e B è il simbolo logico corrispondente. Nella colonna Y sono indicati i valori dalla variabile di uscita Y che soddisfa la definizione della porta logica AND.

Negazione NOT

L’operazione può essere effettuata su una sola variabile di ingresso. Se chiamiamo con A la variabile di ingresso e con Y la variabile di uscita, la negazione farà assumere all’uscita il valore opposto a quello applicato all’ingresso.

si legge A NEGATO oppure A COMPLEMENTATO oppure NOT A

Nella figura che segue è mostrata la tabella della verità con le due possibili combinazioni
di A ed il simbolo logico corrispondente. Nella colonna Y è indicato il valore della variabile di uscita Y che soddisfa la definizione della porta logica NOT.

Porte logiche derivate

Sono le porte logiche ottenute partendo da una o più porte logiche fondamentali però poiché sono estremamente importanti per l’elettronica sono rappresentate con un simbolo unico.

Somma logica negata NOR

L’operazione può essere effettuata su due o più variabili di ingresso. Se chiamiamo con A e B le variabili di ingresso e con Y la variabile di uscita, la somma logica negata assumerà lo stato logico 1 solo se tutte le variabili di ingresso sono allo stato 1, in tutti gli altri casi l’uscita assumerà il valore 1.

La somma logica negata corrrisponde al collegamento di una OR seguita da una porta NOT.

si legge A NOR B

Nella figura che segue è mostrata la tabella della verità con le quattro possibili combinazioni delle variabili di ingresso A e B è il simbolo logico corrispondente. Nella colonna Y sono indicati i valori dalla variabile di uscita Y che soddisfa la definizione della porta logica NOR.

Prodotto logico negato NAND

L’operazione può essere effettuata su due o più variabili di ingresso. Il prodotto logico negato NAND assumerà il valore 1 se tutte le variabili di ingresso assumeranno il valore 0, in tutti gli altri casi l’uscita assumerà il valore 1.

Il prodotto logico negato corrrisponde al collegamento di una AND seguita da una porta NOT.

si legge A NAND B

Nella figura che segue è mostrata la tabella della verità con le quattro possibili combinazioni delle variabili di ingresso A e B è il simbolo logico corrispondente. Nella colonna Y sono indicati i valori dalla variabile di uscita Y che soddisfa la definizione della porta logica NAND.

OR esclusivo – XOR

L’operazione può essere effettuata su due o più variabili di ingresso. l’OR esclusivo assumerà il valore 1 e solo se vi è almeno un ingresso che differisce dagli altri, mentre varrà 0 se tutti gli ingressi assumono lo stesso valore.

Nel caso di due variabili di ingresso A e B, l’OR esclusivo assumerà il valore 1 se gli ingressi assumeranno valori diversi e varrà 0 se gli ingressi assumono lo stesso valore.

si legge A OR ESCLUSIVO B oppure A DIVERSO B

Nella seguente figura si mostra la tabella della verità con le quattro possibili combinazioni tra A e B ed il simbolo logico relativo ad una porta XOR. Nella colonna Y si sono posti i valori assunti dall’uscita Y che soddisfa la definizione della porta XOR.

L’OR ESCLUSIVO può essere espresso anche dalla seguente formula:

formula da ricordare quando dovrete implementare il codice C per Arduino che realizza questa funzione.

NOR esclusivo XNOR

L’operazione può essere effettuata su due o più variabili di ingresso. Il NOR esclusivo assumerà il valore 1 se e solo se tutti gli ingressi hanno il medesimo valore logico, è equivalente alla negazione della porta XOR.

Nel caso di due variabili di ingresso A e B, l’XNOR assumerà il valore 1 se gli ingressi assumeranno valori uguali e varrà 0 se gli ingressi assumono valore diverso.

e si legge A NOR ESCLUSIVO B oppure A COINCIDENTE CON B.

Nella seguente figura si mostra la tabella della verità con le quattro possibili combinazioni tra A e B ed il simbolo logico relativo ad una porta XNOR. Nella colonna Y si sono posti i valori assunti dall’uscita Y che soddisfa la definizione della porta XNOR.

Il NOR ESCLUSIVO può essere espresso anche dalla seguente formula:

formula da ricordare quando dovrete implementare il codice C per Arduino che realizza questa funzione.

Porte logiche con Arduino

Partiamo ora con la realizzazione delle porte logiche descritte sompra utilizzando Arduino.

In un precedente post ho descritto quali sono gli operatori logici disponibili all’interno di Arduino

Se gli ingressi A e B li indichiamo con le varibili:

  • pinInA
  • pinInB

e l’uscita Y la indichiamo con

  • pinOutY

usando la notazione in C che ritrovate nel link indicato sopra si otterrà:

OR

AND

NOT

NOR

NAND

XOR

XNOR

Premesso ciò la scrittura dello sketch è estremamente semplice.

Realizziamo i due ingressi A e B mediante due pulsanti connessi rispettivamente ai pin 8 e 7, mentre l’uscita sarà connessa al pin 9.

Vediamo ora come realizzare uno sketch che permette dalla Serial Monitor di selezionare mediante menù il tipo di porta logica che si intende simulare; quando la selezione viene effettuata da menù la pressione dei pulsanti deve realizzare la tabella di verità della funzione logica selezionata.

Un pulsante aggiuntivo, che chiameremo: “AVVIA MENU'” verrà utilizzato per riavviare il menù di scelta.

Le azioni quindi saranno:

  1. primo avvio – selezione funzione (da 1 a 7) inserendo da tastiera il numero sulla Serial Monitor
  2. verifica della tabella di verità premendo i pulsanti A e B controllando che il LED, che identifica la Y, sarà acceso per un livello logico 1 e sarà spento per un livello logico 0
  3. Cambio funzione logica:
    1. premere il pulsante: “AVVIA MENU'”
    2. seleziono la funzione logica da verificare e ripetere nuovamente dal passo 1

Propongo come esercizio cinque varianti all’esempio precedente:

  1. Gli ingressi selezionati con pulsanti devono essere visualizzati con LED (1 acceso, 0 spento), create inoltre una libreria dedicata per l’implementazione delle funzioni logiche (inserite il codice in un file .h). Per sapere come creare una libreria seguire il link, al fondo del tutorial troverete la spiegazione.
  2. La selezione della funzione logica non avviene più tramite la serial monitor, ma attraverso 7 pulsanti di selezione funzione, la cui selezione deve essere visualizzata con un LED (Acceso = selezionato; Spento= non selezionato). Deve essere presente un pulsante che effettua il reset dell’operazione (non deve essere il reset della scheda Arduino).
  3. Realizzare le stesse funzionalità del punto 2 ma in questo caso non si devono utilizzare LED ma un display 16×2 del tipo Hitachi HD44780, se desiderate potete utilizzare un’interfaccia I2C HD44780 per utilizzare meno pin.
  4. Aggiungere il codice per effettuare il debounce (anti-rimbalzo) sui pulsanti.
  5. Per gli studenti di 4′ superiore realizzare un debounce usando l’elettronica a componenti discreti.

Per chi volesse esplorare nuove frontiere:

  • Realizzate tutto ciò che è stato esposto prima mediante BBC micro:bit e programmate tutto in microPython.
  • Realizzate tutto ciò che è stato esposto prima mediante Raspberry Pi e programmate tutto in Python.

Buon Coding (e studio) a tutti 🙂

Articoli simili:

Pubblicato in arduino, i miei allievi | Contrassegnato , , , , , , , , , , | Lascia un commento

Cosa sono le awesome list?

Ad ogni inizio d’anno scolastico propongo ai nuovi allievi che incontro una serie di attività e strumenti che dal mio punto di vista servono per creare un atteggiamento positivo e rilassato nei confronti dello studio e delle sperimentazioni in laboratorio. Ogni anno esordisco con una serie di starter kit per lo studente:

  • setting dei luoghi di studio, (alcune indicazioni su come gestire gli oggetti del proprio studio)
  • tecniche di studio
  • tecniche di gestione del tempo lavoro
  • sistemi di gestione dei progetti
  • tecniche di documentazione
  • ricerca dell’informazione
  • realizzazione di un propria Personal Learning Network

e proprio su quest’ultimo punto, ripreso dai corsi che svolgo per gli insegnanti, mi focalizzo. Ritengo essenziale saper selezionare e far diventare un’attività periodica la ricerca e l’utilizzo di fonti attendibili ed autorevoli on-line da utilizzare per ampliare le proprie competenze.

Quando parlo di Personal Learning Network intendo banalmente (cito le mie slide):

la rete di relazioni online che fa uso di tutti gli strumenti web come: blogs, wiki, twitter, facebook, … per creare connessioni con altre persone al fine di estendere le nostre conoscenze, imparando insieme ad altri, come parte di una comunità globale.

Ciò permetterà di ottimizzare tempi e sforzi nell’utilizzo di particolari tecnologie.

Ovviamente un grande sforzo da parte del docente deve essere fatto per insegnare a saper discriminare le fonti, è un’azione da costruire “un passettino alla volta” e ritengo che ciò possa innescare il volano che mi piace chiamare: “cerco-studio-mi-diverto-condivido”

Ma da dove cominciare?

Io ho costruito negli anni la mia procedura e le mie collezioni che rinnovo settimanalmente, ma per studenti “grintosi” che hanno voglia di costruire e calarsi subito nella pratica della materia, è essenziale collezionare i “punti di osservazione web” (consiglierò anche un buon sistema per collezionare le fonti, sarà motivo di un’altra lezione) tra questi segnalo ai miei studenti le awesome list su GitHub, “liste fantastiche” su ogni argomento dal fantasy, alla musica, al gaming, ma anche all’elettronica, automazione, programmazione, all’uso di Arduino o di Raspberry Pi e mille altre cose, tutto realizzato dalla comunità di GitHub.
(Per saperne di più su GitHub seguire il link: Documentare la didattica con la sintassi Markdown su GitHub)

Questo il repository principale delle awesome list“.

Molte liste sono aggiornate periodicamente altre un po’ meno, ma prendendosi un po’ di minuti al giorno potrete scoprire tantissimo.

Come promesso oggi nella mia 4B Automazione (ma lo sarà anche per tutte le altre classi) le collezioni da cui partire, molte altre risorse (riviste, siti internet, ecc…) le segnalerò durante l’anno scolastico, di seguito alcune collezioni interessanti:

Compito: segnalatemi o realizzate una lista più interessante di quelle indicate sopra, (è possibile segnalare argomenti di altre discipline tecniche).

Buona esplorazione 🙂

Articoli simili:

Pubblicato in i miei allievi | Contrassegnato , , , , , , , , | 2 commenti

Premio Scuola Digitale 2018 – Fase Provinciale Alessandria e Asti

La città dorata 4.0 – Tre giorni per il piano nazionale scuola digitale: formazione, dibattiti, esperienza.

Sono felice di informarvi che sono stato nominato dal MIUR membro della giuria (costituita 9 soggetti), per la valutazione dei progetti didattici innovativi in concorso per le province di Alessandria ed Asti, nei prossimi giorni la valutazione.
I finalisti al concorso parteciperanno all’iniziativa finale interprovinciale, che si svolgerà in data 28 settembre 2018 a Valenza, in una fase successiva il progetto vincitore a livello regionale parteciperà alla sessione finale nazionale del Premio.

Il Premio Scuola Digitale intende promuovere l’eccellenza e il protagonismo delle scuole italiane nell’apprendimento e nell’insegnamento digitale, incentivando l’utilizzo delle tecnologie digitali nel curricolo, secondo quanto previsto dal Piano nazionale per la scuola digitale, e favorendo l’interscambio delle esperienze nel settore della didattica digitale coinvolgendo le istituzioni scolastiche dei singoli territori.

Sicuramente per me un bel momento da vivere per vedere quanto di positivo riescono a produrre i nostri allievi.

Articoli simili:

Pubblicato in news | Contrassegnato , , , , , | Lascia un commento

STOP CYBERVIOLENCE: si parte il 19 settembre

Mi segnalano e volentieri pubblico il corso gratuito in oggetto.
Il progetto Erasmus+ Stop Cyber Violence si rivolge ai giovani, agli operatori giovanili, agli insegnanti e alle famiglie e ha l’obiettivo di aumentare la consapevolezza aiutando gli adulti nel cogliere i segnali di cyberbullismo, fornendo un approccio metodologico adeguato per dare agli operatori giovanili, agli educatori e agli insegnanti gli strumenti per comprendere le opportunità e i rischi del mondo digitale.

Per raggiungere questi obiettivi il progetto produrrà materiali a supporto e organizza un corso di formazione gratuito della durata di 48 ore, che si svolgerà nei mesi di Ottobre e Novembre 2018.

Per maggiori informazioni vi rimando al link in allegato.

Articoli simili:

Pubblicato in news | Contrassegnato , , , | Lascia un commento

Arduino – Concatenare la stampa di stringhe e variabili

In un recente post ho approfondito l’uso di Serial.write() e Serial.print(), proseguo riprendendo gli appunti che di volta in volta aggiungo a quanto sviluppato durante i corsi. Come sapete per inviare sulla seriale un testo molto lungo è necessario scrivere molte linee di codice, una sequenza di Serial.print() che hanno come argomento il testo che si vuole visualizzare, questo un esempio:

Tutte queste righe potrebbero essere scritte in una forma più compatta, accodando tutte le Serial.print() :

Sarebbe interessante poter avere la possibilità di concatenare il testo da stampare così come è possibile fare con altri linguaggi di programmazione: Java / VB / C # / C ++, ecc…

Questa funzionalità è stata implementata qualche tempo fa da Mikal Hart che ha realizzato la libreria Streaming (file zip). I vantaggi di utilizzo risiedono nella compattezza del codice prodotto e nella velocità di scrittura.

Con l’uso della libreria Streaming il codice precedente che stampa una serie di stringhe utilizzando la Serial.print(), diventa:

Nel caso si volesse suddividere l’invio sulla seriale su più linee::

Prendendo spunto dall’esempio che trovate nella libreria:

Realizzimo uno sketch che conta il numero di pressioni del pulsante e visualizziamo sulla Serial Monitor una stringa che ne da indicazione, il circuito è costituito da:

  • Arduino UNO R3
  • Resitore da 1KOhm
  • 1 pulsante

Lo sketch di esempio è il seguente:

Ad ogni pressione del pulsante sulla seriale compariranno le stringhe:

Esercizio

L’invio dello dello stream del testo può avvenire non solo sulla seriale ma anche su qualsiasi classe derivata da Print, ad esempio su display.

Sapreste ottenere la stessa cosa con un display a 16 colonne e 2 righe?

Suggerimento:

Buon Coding a tutti 🙂

Articoli simili:

Pubblicato in arduino | Contrassegnato , , , , , , | Lascia un commento

DotBot:Smart – un robot didattico veloce da costruire

Durante alcuni corsi di Coding e robotica per colleghi di scuola media mi è stato manifestato il desiderio di poter avere a disposizione un kit robotico estremamente semplice da realizzare poco costoso e che occupasse poco spazio, che potesse adattarsi, come sempre, a microcontrollori di ogni tipo, soprattutto Arduino e micro:bit.

Esplorando per altri scopi il sito youmagine ho scoperto i moltissimi lavori realizzati da RCCM anche lui come me insegnante (vi consiglio di guardare i suoi lavori) ed ho notato il progetto Micro Servo Chassis, per cui sulla stessa idea ho realizzato una struttura simile ed inserito gli elementi di aggancio per i servomotori che avevo realizzato per il DotBot:bit.

Per ridurre la quantità di materiale ho eliminato, rispetto alle strutture precedentemente realizzate la caster ball, la biglia di supporto, che ho sostituito con una piccola bacchetta costituita da un punto di appoggio al terreno ricurvo, il tutto vincolato alla struttura portante dei motori.

Nel caso si debba aggiungere parecchia elettronica, per aumentare ancor di più la stabilità ho sviluppato una doppio supporto strisciante così come potete notare nelle immagini allegate.

Su questo piccolo chassis robotico potrete, secondo necessità ed in funzione di ciò che disponete, predisporre una base di appoggio come ad esempio: cartone, compensato o plexiglas fissata con viti o fascette di plastica.

Ecco giustificato il nome DotBot:Smart perché veloce da costruire, due elementi da stampare e poi Coding a volontà 🙂

Questo nuovo kit didattico si aggiunge alla famiglia DotBot.

Nel caso desiderate effettuare la stampa questo il link diretto di DotBot:Smart su Thingiverse.

Come sempre se durante le sperimentazioni con i vostri allievi si evidenziano correzioni o miglioramenti da fare, non esitate a contattarmi.

Di seguito le foto che mostrano come costruire il robot.

Materiali occorrenti

  • qualsiasi tipo di microcontrollore: micro:bit, Arduino, oppure Raspberry Pi (qualsiasi modello)
  • n. 2 bulloni M3 – viti da 10 mm
  • n. 2 FS90R servo a rotazione continua
  • n. 2 due ruote per FS90R 60mm x 8mm

La barra centrale deve avere un orientamento, rispetto ai servomotori, identico a quello indicato nell’immagine (notate l’albero di rotazione del servo). I servomotori sono fissati con piccole viti in dotazione quando acquistate i servo:

Le viti di blocco della barra centrale sono sotto il livello di appoggio della base in modo da non creare un rialzamento:

Scegliete il materiale di cui disponete, (nell’immagine cartone) e con del nastro biadesivo fissate breadboard ed elettronica:

Il fissaggio può avvenire mediante fascette di plastica:

Nel caso abbiate necessità di maggior superficie di appoggio e maggior stabilità potete utilizzare la barra centrale con doppio appoggio:

Buon Coding a tutti.

Articoli simili:

Pubblicato in arduino, micro:bit, Raspberry Pi, robotica | Contrassegnato , , , , , | Lascia un commento

Tecnica del pomodoro con un orologio Casio da pochi euro

Durante i Webinar che ho svolto negli scorsi mesi per Tecnica della Scuola, mi sono occupato anche di tecniche di gestione del tempo studio e lavoro e nelle scorse settimane via mail alcuni colleghi mi hanno chiesto qualche suggerimento su modalità semplici per gestire il timing della tecnica del pomodoro.

Smartphone, Smartwatch…. SmartQualcosa… abbondano i sistemi per gestire progetti e tempi di lavoro, in realtà il sistema che adotto dipende da luogo in cui mi trovo e dagli oggetti che uso.

Quando sono seduto davanti al mio Mac od uso l’iPhone prediligo Be Focused Pro estremamente pratica e semplice da utilizzare, tra le funzioni che apprezzo di più il report dei “pomodori”.

Molto spesso però utilizzo anche altre strategie molto meno digitali non ultima quella che ho proposto qualche tempo fa in cui utilizzo mattoncini Lego, una soluzione che ben si adatta all’utilizzo con gli studenti più piccoli.

Come sapete per usare la tecnica del pomodoro è sufficiente un timer, anche meccanico, carta e penna. Usare il cellulare è comodo ma in diverse occasioni diventa poco pratico, ad esempio se state svolgendo un’attività manuale.

Ho quindi pensato di aggiungere al set di strumenti anche un orologio da polso.

Caratteristiche cercate:

  • economico
  • robusto
  • subacqueo
  • dotato di almeno 3 timer

La mia scelta è stata: Casio H5AE-1300WH-8AV acquistato qualche tempo fa per circa € 30 su Amazon.

I 9 timer programmabili sono più che sufficienti per applicare la tecnica del pomodoro, inoltre l’essere impermeabile fino a 100 m lo rendono compagno ideale durante le immersioni insieme al computer che porto al polso.

A questo punto mi direte: “è come mantieni traccia con un orologio del numero di pomodori necessari per svolgere il compito?

I 9 timer disponibili sono programmabili in durata, pertanto con 9 timer posso impostare 4 pomodori da 25 min, 4 intervalli da 5 min ed un intervallo lungo da 15 min.

Di seguito un estratto del manuale:

Vi allego le schermate per impostare i 9 timer ed il link al PDF del manuale sintetico.

Articoli simili:

Pubblicato in produttività | Contrassegnato , , , , , | Lascia un commento

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.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:

Questo il codice di test:

Altro esempio:

Questo il codice di test:

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

Questo il codice di test:

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

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 “-“:

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

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:

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 🙂

Articoli simili:

Pubblicato in arduino | Contrassegnato , , , | Lascia un commento

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 🙂

Articoli simili:

Pubblicato in micro:bit | Contrassegnato , , , , , | Lascia un commento