Archivi tag: programmazione

Attività didattiche in costruzione: rilevatore di vibrazioni con BBC micro:bit

Nuove idee per il prossimo corso che realizzerò per Tecnica della Scuola sui laboratori STEAM con BBC micro:bit tra le nuove sperimentazioni proporrò:

il rilevatore di vibrazioni dovute al camminamento degli allievi nei corridoi della scuola.

Presto disponibile su questo sito la scheda didattica per la realizzazione dell’attività di laboratori e i file per la stampa 3D della struttura che regge il sensore e la bacchetta di legno.

Nell’attività sono previsti:

  • generazione dei grafici dell’oscillazione,
  • allarmi di vibrazione,
  • trasmissione remota dei dati rilevati,
  • datalogging.

Il tutto diventerà un’attività didattica per i miei studenti dell’ITIS Pininfarina di Moncalieri, percorso di Elettronica e Automazione.

BBC micro:bit – funzioni

Sto svolgendo in questi giorni il corso sulla didattica laboratoriale e nelle giornata di ieri ho svolto un approfondimento sull’uso delle funzioni con il MakeCode editor di micro:bit che rendo pubblico su questo sito.

NOTA. Gli esempi in questo post hanno il solo scopo di mostrare l’utilizzo delle funzioni (chiamata di una funzione, passaggio per valore, restituzione di un valore da una funzione, ecc…) e non quello di risolvere un specifico problema, pertanto gli esempi potrebbero essere realizzati in modalità sicuramente più efficiente.

Le funzioni con BBC micro:bit

Una funzione consente di creare una porzione di codice che possiamo riutilizzare più volte nel nostro programma, quindi invece di copiare lo stesso codice in molte sezioni del programma, possiamo semplicemente utilizzare un unico blocco funzione da utilizzare all’interno del nostro codice tutte le volte che ci necessita.

Una funzione è definita dal suo nome e dal corpo della funzione che ospita tutte le istruzioni.

La funzione ha un nome univoco e non può essere costituita da parole staccate tra loro. E’ utile assegnare alle funzioni nomi che specificano cosa fa la funzione, ad esempio “calcoloVolume”, “calcoloArea”, “distanzaOstacolo”, “impostaLed”, “displayOn”. Si consiglia inoltre di adottare una notazione camel case (testo a cammello), ovvero scrivere parole composte o frasi, come il nome di funzioni, unendo tutte le parole tra loro, ma lasciando le loro iniziali con lettera maiuscola, in questo modo viene meglio decodificato da un essere umano il significato del nome composto. E’ buona regola adottare una strategia di questo genere anche per il nome delle variabili.
La prima lettera della frase può essere maiuscola o minuscola, tendenzialmente si preferisce usare la lettera minuscola.

Il corpo della funzione è il codice all’interno del blocco funzione, quello che viene chiamato body.

Continua a leggere

Node.js e Typescript: corso base online

Più volte vi ho segnalato le iniziative dell’amico Ludovico Russo, con lui ho condiviso avventure di making in ambiti diversi: robotica, informatica e molto altro. Ludovico è un esperto nello sviluppo di applicazioni cloud, si occupa sia dello sviluppo fullstack che della parte architetturale. Anche lui formatore nel settore informatico e recentemente, in collaborazione con lacerba.io, ha realizzato il corso: Node.js e Typescript: corso base online, in cui potrete apprendere le basi di Node.js e Typescript, sviluppando una semplice app lato Back End e Front End. Con questo corso potrete approcciarvi allo sviluppo di applicazioni web moderne.
Durante l’attività formativa vi verranno fornite competenze nella programmazione in Typescript, un linguaggio derivato da Javascript e sarete introdotti al concetto di programmazione Fullstack grazie a NodeJS.
Il corso richiede una buona conoscenza delle logiche fondamentali della programmazione, in particolare HTML, CSS e Javascript.

Per maggiori informazioni sulle modalità di iscrizione e sul programma del corso vi rimando alla pagina di riferimento dove potrete vedere il video di presentazione.

Errori comuni nell’uso di Arduino – inizializzazione di più variabili

La tentazione di risparmiare linee di codice è sempre in agguato e tentare di inizializzare più variabili su una sola riga è forte, però alcune volte ciò che intendiamo fare non corrisponde a ciò che correttamente intende il compilatore.

Con la scrittura:

int x, y, z = 67;

non viene assegnato il valore 67 ad ogni singola variabile, ma solamente la variabile z viene inizializzata a 67.

L’errore quindi non risiede nella scrittura, il compilatore non restituirà errore, ma nel modo in cui il programmatore intende l’assegnamento credendo che tutte le variabili vengano inizializzate a 67.

La scrittura

int x = 67, y = 67, z = 67;

permette l’assegnamento del valore 67 ad ogni singola variabile. Si ricordi di separare ogni assegnamento da una virgola, ciò accade solo e soltanto se si indicano tipo e assegnamento su stessa linea.

Per l’assegnamento di valori diversi scriveremo:

int x = 99, y = 3, z = 67;

Io in genere preferisco una scrittura di questo tipo:

int x = 99;
int y = 3;
int z = 67;

che permette di visualizzare meglio le variabili utilizzate, non favorisce fraintendimenti nell’assegnamento e permette inoltre di scrivere chiaramente un commento a lato di ogni assegnamento.

Esercizio (semplice semplice 🙂 ) per i miei studenti:

Realizzare uno sketch che dimostra quanto esposto in questo post.

Buon Coding 🙂

Errori comuni nell’uso di Arduino – fare più azioni nell’if senza l’uso delle parentesi graffe

Continua la segnalazione degli errori che spesso vengono commessi durante le prime attività di programmazione con Arduino.
La sequenza di istruzioni da eseguire se risulta vera la condizione dell’istruzione if  (il corpo della if) deve essere racchiusa tra parentesi graffe. L’errore è immaginare che l’indentazione sia sufficiente per indicarne l’appartenenza al corpo della if, modalità valida in altri linguaggi di programmazione come in Python, ma non in C:

Uso non corretto

if (temperatura > 25)
  digitalWrite (normaleTemp, LOW);
  digitalWrite (allarmeTemp, HIGH);

Uso corretto

if (temperatura > 25)
{
  digitalWrite (normaleTemp, LOW);
  digitalWrite (allarmeTemp, HIGH);
} // fine del controllo temperatura > 25

Buon lavoro 🙂