HOW-TO: PYTHON NEL MONDO REALE

python-logo-notext-svg

Scritto da Greg D. Walters

Tradotto da Full Circle Magazine, numero 116

Bentornati nel nostro viaggio volto a comprendere come controllare il nostro ambiente circostante usando Python, Raspberry Pi, e i microcontrollori come Arduino Uno. In questa tappa del viaggio ci concentreremo ad apprendere le basi di Arduino.

Ciò richiede la comprensione basilare di Arduino e del linguaggio di programmazione usato per programmarlo, che sfortunatamente, non è Python, ma è basato sul linguaggio C. La buona notizia è che non ci vorrà molto per padroneggiarlo e non dovremo andare troppo a fondo di esso, per le cose che faremo.

Il Microcontroller Arduino

Arduino (citando quanto riportato nel sito Arduino.cc) è una piattaforma elettronica open-source basata su un hardware e un software facili da usare. Fu creata come scheda e software open-source, con l’intenzione, che il progetto e la lista dei componenti fossero disponibili gratuitamente a tutti, permettendo quindi di costruirsi, dal nulla, la scheda.

Arduino, detto in maniera sommaria, permette di leggere gli ingressi e pilotare le uscite sugli appositi pin della scheda, in maniera similare alla gestione dei pin GPIO nel Raspberry Pi.

E’ possibile ottenere la scheda originale Arduino per circa $35 USD, ma vi sono delle buone schede non originali (vedasi Sparkfun Red Board) per circa $20 USD.

Suggerisco in questo articolo, per il nostro progetto due schede: UNO e MEGA.

La figura qua sotto fornisce una breve sintesi delle due.

_116_18_1

Se desidererete andare oltre al progetto basilare qui esposto, potreste prendere seriamente in considerazione la scheda Mega.

Qua sotto vi è l’immagine di una scheda standard (un po’ polverosa) Arduino Uno.

_116_18_2

Per iniziare apriamo l’ambiente di sviluppo Arduino IDE e selezioniamo File | Examples | 01 .Basics |Blink . Si aprirà una nuova finestra con un nuovo codice sorgente, che è riportato nella pagina successiva di questo articolo di modo che possiate seguire il commento di questo semplice progetto.

_116_19_1

Noterete immediatamente che il codice sorgente è scritto in C. Non preoccupatevi, quello che andremo a realizzare, usa costrutti semplici del linguaggio.

La parte superiore è un commento che si estende su più righe (blocco) che inizia con “/*” e finisce con “*/”. Come nel caso di Python, il compilatore C ignora tali blocchi di commenti.

Le linee che iniziano con “//” sono commenti che si estendono solo sulla linea corrente di codice e possono essere messi ovunque nel codice. Tutto ciò che segue “//” viene ignorato dal compilatore.

Vi sono due funzioni che debbono essere incluse in ogni progetto: la funzione setup e la funzione loop. E’ possibile scrivere le proprie funzioni setup e loop, ma esse debbono essere presenti. La funzione setup viene eseguita ogni qualvolta la scheda viene connessa all’alimentazione elettrica, oppure quando viene premuto il pulsante di reset. Quando la funzione setup finisce la sua esecuzione, viene eseguita la funzione loop (almeno nel nostro esempio) in maniera continuativa eseguendo tutte le istruzioni in essa contenute.

Nella funzione setup dobbiamo solo configurare la scheda affinché il pin numero 13 funzioni come uscita. Sulle schede UNO e MEGA, vi è un led collegato a tale pin, e quindi sfrutteremo (il pin) per controllare il led, facendo a meno di addizionali componenti in questa occasione. Nella funzione loop, tramite la funzione digitalWrite generiamo un segnale con voltaggio alto, segnale che ci accenderà il led, attendiamo un secondo usando la funzione delay, generiamo un segnale in uscita basso, che ci spegnerà il led, attendiamo ancora un secondo, sempre con la funzione delay, e il processo si ripeterà all’infinito.

Inserite a questo punto il cavo di collegamento USB tra PC e scheda Arduino, e premete il bottone rotondo con segno di spunta per compilare e verificare che non vi siano errori nel codice. Una volta ottenuto il messaggio del successo della compilazione, premete sul bottone vicino (quello con la freccia verso destra) per caricare il codice appena generato sulla scheda Arduino. In pochi istanti, se tutto funzionerà a dovere, dovrete vedere il led (sulla scheda di Arduino) cominciare a lampeggiare, rimanendo un secondo acceso e un secondo spento.

Se riceverete invece un errore durante il caricamento (upload) del programma sulla scheda, verificate la voce “settings” posta nel menù “Tools”. La tipologia di scheda in essa riportata deve essere la stessa di quella che è attualmente collegata. La porta a cui è connessa la scheda deve combaciare con quella riportata in questa schermata (solitamente è il sistema che automaticamente verifica e imposta tale porta).

Cerchiamo ora di divertirci un poco modificando tale codice. La funzione delay, necessita di un parametro che è pari al numero di millisecondi del ritardo. Nel nostro esempio noi attendiamo 1000 millisecondi, che è pari a un secondo. Cambiamo tale valore (in ambedue le chiamate della funzione delay) in 250 ms e vediamo che cosa accade.

delay(250);

Non dimenticate di inserire il punto e virgola (semicolon) a fine dell’istruzione.Premete sul pulsante di verifica (“check”) per ricompilare il codice, e poi ricaricatelo sulla scheda.

Dovreste vedere come il led lampeggia due volte in un secondo.

Cerchiamo di essere ancor più creativi.Facciamo sì che la scheda lampeggi in codice Morse, inviando il messaggio SOS.Questo messaggio è composto da tre lampeggi breve, una piccola pausa, tre lampeggi lunghi, una piccola pausa, e tre ulteriori brevi lampeggi. Senza essere originale, mi limiterò a copiare e incollare ulteriori chiamate a digitalWrite e delay, impostando i dovuti ritardi. Qua di seguito la funzione loop modificata.

_116_20_1

Compilate il codice e caricatelo sulla scheda.

La prossima volta incominceremo a lavorare con altri componenti che noi usammo nei precedenti progetti con Raspberry Pi.Quindi armatevi di alcuni led e resistori per essere pronti.

Fino al quel momento, giocate con i progetti di esempio che troverete in Arduino IDE e divertitevi.

Greg Walters è il proprietario di RainyDay Solutions, LLC, una società di consulenza ubicata in Aurora, Colorado, è programmatore fin dal 1972. Ama cucinare, fare escursioni, la musica, e spendere tempo con la sua famiglia.
Questa voce è stata pubblicata in Pubblicazioni e contrassegnata con , , , . Contrassegna il permalink.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...