Imparare a programmare con Flowcode e Arduino

Il concetto di programmazione è acquisito dalle nuove generazioni fin dai primi anni di scolarizzazione, che con il programma Scratch (https://scratch.mit.edu/) apprendono e si divertono costruendo giochi con e per il computer.

Il discorso cambia per i nati prima del 2000, quando i computer costavano ancora molto e tranne i veri appassionati che negli anni 80’ con il Commodore 64 o lo ZX80, ZX81 e spectrum, si avvicinarono al computer per gioco diventando  professionisti dell’informatica.

C’è anche chi nonostante avesse avuto le possibilità economiche per imparare a utilizzare il computer, proprio non riuscì ad appassionarsi perché fu terrorizzato dai responsabili d’informatica, gelosi del loro sapere o perché forse non geneticamente predisposti, preferendo scrivere sulla carta e leggere libri o riviste in formato cartaceo, perché amano l’odore della carta, “ vuoi mettere il piacere di godersi una lettura in tutta tranquillità, magari a luce di candela”.

Io non sono uno di questi, ho studiato programmazione Fortran nei primi anni 70’, più tardi ho studiato l’Assembler per lo Z80 e ancor più tardi l’Assembler per i PIC.

Non sono, né tantomeno mi sento, un programmatore, ma non riesco a concepire la mia vita senza computer, quando finalmente ho avuto un e-book Reader, ho finalmente potuto dedicarmi alle mie letture sdraiato o meglio “stravaccato” su di un divano o sotto un ombrellone sul terrazzo.

Poiché ho una pessima grafia, finalmente potei (potetti) scrivere in modo che chiunque potesse comprendere quello che scrivo, concetti e condizionali a parte.

Approccio alla programmazione

Esistono molti oggetti acquistabili pronti all’uso per accendere le luci all’imbrunire o al passaggio di qualcuno,  irrigatori per l’orto o il giardino che si accendono all’alba per qualche minuto e finché i sensori di umidità inseriti nel terreno avvertono che è tempo di chiudere il rubinetto, sono alcuni esempi facilmente auto costruibili senza necessariamente dover progettare anche “l’orologio” che può essere acquistato già fatto e collegato al vostro progetto finché non avrete imparato a usare gli RTC (Real Time Clock) che servono per aggiungere anche la gestione del tempo.

Il diagramma di flusso di un programma è composto dalle funzioni inserite tra BEGIN (inizio del programma) ed END (fine del programma).

Flowcode, avvalendosi di componenti di “Outputs” associabili alla funzione “OUTPUT”, permette di simulare il programma inserendo i componenti nella “DashBoard” (visualizzazione grafica bidimensionale degli oggetti) o nel “3D System Panel” (visualizzazione grafica tridimensionale).

 accendere o spegnere un led collegato alla uscita definita con la funzione “OUTPUT”

la funzione OUTPUT, inserita tra END (fine) e BEGIN (inizio), fa unicamente quello per cui è programmata; se ho stabilito che l’uscita (B1), collegata al pin 1 della porta B, dovrà esserci il valore logico 1, quando fornirò l’alimentazione a Arduino, sulla uscita B1, avrò una tensione di 3,3 Volt, che accenderà il led collegato alla porta B1, dopo di che il programma si blocca.

Per spegnere il led, inserirò una nuova funzione OUTPUT, successiva alla funzione OUTPUT precedente, che invierà uno zero logico su B1.

Quello che osserverò sarà un led spento perché l’operazione sarà eseguita molto rapidamente tanto che non sarà visibile dall’occhio umano.

Per vedere il led che si accende e poi si spegne, introdurrò la funzione DELAY (ritardo) tra le due funzioni OUTPUT; la funzione DELAY esegue tante operazioni successive, che in pratica non fanno niente se non rallentare l’esecuzione del programma, l’istruzione DELAY sarà ripetuta in modo da far passare il tempo necessario che può protrarsi per 1 microsecondo o svariati secondi.

Con la funzione DELAY = 1 secondo, il led si accenderà, rimarrà acceso per 1 secondo, quindi si spegnerà, e il programma si chiuderà.

Per avere un led che rimane acceso per 1 secondo poi si spegne per 1 secondo, continuando indefinitamente fintanto che Arduino è alimentato, è necessario introdurre il programma all’interno di un ciclo (LOOP); ; la funzione CICLO può essere condizionata anche da altri parametri (Expression).

Riccardo Monti