Lezione #3
breadboard e tipi di variabile

In questa terza lezione del corso gratuito di Arduino per principianti vediamo assieme cos’è e come funziona la breadboard ed i tipi di variabile, distinguendo tra variabili locali e globali. Come sempre, sono molto pratico, per cercare di annoiare il meno possibile e di coinvolgervi nella lezione. Applichiamo i concetti ad un esperimento dove andiamo ad accendere e spegnere un led fissato alla breadboard tramite comandi impartiti dal monitor seriale.

In tutte le lezioni cercherò di essere il più pratico e meno teorico possibile, per cercare di non annoiarvi. Purtroppo in queste prime lezioni un po’ di teoria è necessaria. A fine articolo vi lascio i bigini riassuntivi, così non è necessario che impariate tutto a memoria. Con un po’ di pratica e di tentativi vi assicuro che acquisirete le nozioni fondamentali.

Partiamo dall’esperimento della lezione precedente, la numero 2. Se ti sei perso le lezioni precedenti le trovi tutte qui.

Avevamo fatto accendere e spegnere il led 13, integrato nella scheda di Arduino, con dei comandi dalla tastiera del pc . Oggi useremo la breadboard, un comodo strumento, per accendere e spegnere un led.

Il kit che vi ho consigliato nella lezione 1, che potete acquistare su Amazon, è molto pratico. Non contiene solo tantissimo hardware con cui realizzare migliaia di esperimenti e progetti, ma anche un cd. Il cd contiene diverse cartelle. A noi interessa S48. E’ il codice che identifica il nostro kit, uno dei più completi ed economici che sono riuscito a trovare. Nella cartella troviamo anzitutto un pdf che spiega come rendere operativo l’ambiente di sviluppo: l’installazione del software di Arduino, detto IDE, ed il collegamento della scheda al pc, come abbiamo visto nella precedente lezione.

Troviamo poi la cartella “Lessons” con moltissime lezioni, dalle più semplici alle più complesse. Cominciamo dalla prima, “Lesson1-LED blink”. Nel pdf troviamo il materiale occorrente, la sua descrizione e, cosa importantissima, lo schema elettrico di ogni esperimento.

Come vedete i manuali sono in inglese, ma li utilizzerò quasi tutti nelle lezioni di questo corso, così se faticate a comprenderlo potete semplicemente seguire le mie lezioni. Nella cartella “Sample code” troviamo il codice pronto da aprire in Arduino.

Realizziamo lo schema elettrico e proviamo il codice. Chi ha acquistato il kit trova lo schema elettrico nel cd. Lo riporto qui di fianco.schema elettrico

Prima vi spiego però cos’è e come si utilizza la breadboard, la utilizzeremo in tutte le lezioni. Se non avete acquistato un kit come il mio dovete assolutamente acquistarne una.

Arduino: la breadboard

La breadboard è un componente fondamentale per costruire e sperimentare i nostri circuiti, che non richiede di saldare nulla. E’ una specie di LEGO in forma elettronica. Le righe orizzontali e verticali della breadboard portano l’elettricità attraverso sottili connettori metallici sotto la plastica forata.

Andiamo quindi ad infilare nella breadboard un led. I cinque buchi delle righe orizzontali sono collegati elettricamente attraverso strisce di metallo interne alla breadboard. Se colleghiamo qui un cavo è quindi come se lo avessimo saldato direttamente al led. Colleghiamo la gamba più lunga del led al pin 13. La gamba più corda va collegata al pin ground, detto anche massa. Con ground si intende l’alimentazione a 0 volt e si collega di norma tramite filo nero.

Nella prossima lezione vi spiegherò bene la differenza tra tensione, corrente e resistenza. 

Le strisce verticali lungo la breadboard sono connesse elettricamente. Le strisce sono normalmente utilizzate per i collegamenti a massa e all’alimentazione. Tra il cavo del ground e la gamba del led metto una resistenza, altrimenti andremmo a fulminare il led. Per il momento curatevi di utilizzare una resistenza da 220/330 Ω. .

Nella prossima lezione vi spiegherò bene i resistori, adesso copiamo semplicemente lo schema elettrico.

Ora che lo schema elettrico è completo passiamo al codice. Utilizziamo lo stesso della lezione precedente. Ho dichiarato la variabile led come 13, il numero del pin che abbiamo collegato al led. In setup ho inizializzato il pin come output e aperto la comunicazione seriale. In loop, tramite la funzione if, faccio in modo che se scrivo “a” con il monitor seriale il led si accende, e se scrivo “s” si spegne. Come vediamo nel video il sistema è perfettamente funzionante.

Ultima spiegazione teorica del corso e per oggi abbiamo finito!

Led è una variabile. Una variabile è in parole povere una scatola, che può contenere diversi valori. Immaginiamo di avere un codice lungo centinaia di righe in cui agiamo decine di volte sul led 13. Se non utilizzassimo una variabile e dovessimo cambiare il numero del pin, poniamo in 26, dovremmo variare manualmente tutte le righe in cui il numero è contenuto. Così facendo, invece, andiamo a dichiarare prima della funzione setup che il valore della variabile led è 13. Se cambiamo idea e vogliamo utilizzare il pin 26 dovremmo cambiare solo questa riga.

Arduino: variabili globali e locali

Distinguiamo con un esempio tra variabili globali e variabili locali.

In questo caso led è una variabile globale, perchè l’ho dichiarata all’inizio del codice, non all’interno di una funzione. Vi ricordo che, ad esempio, setup e loop sono due funzioni.

Le variabili globali manterranno il loro valore per tutta la durata del programma e sono accessibili da qualsiasi funzione. Uso infatti la variabile led nelle funzioni setup e loop senza problemi.

Proviamo invece a dichiarare la variabile led all’interno di una funzione, per esempio alla funzione setup. Verifichiamo il codice e riscontriamo un errore. Questo accade perchè se dichiariamo una variabile all’interno di una funzione, tutto il codice che sta  all’esterno non ne conosce il valore.

Vediamo ora i tipi di variabili: prima di led troviamo la scritta int. Significa che il contenuto della variabile led è un numero senza decimali. Int memorizza numeri interi, senza la virgola, nel range da 32.767 a -32.768.

Quando dichiariamo una variabile dobbiamo avere ben chiara la lunghezza massima che può avere.

Tralasciamo per un attimo il codice che ci permette di accendere il led. Manteniamo la variabile led, a cui diamo il valore di 32.767. Aumentiamone il valore di 1 e guardate cosa succede. Il nuovo valore è di -32.768.

Una variabile di tipo intero non può assumere un valore superiore a 32.767, e se andiamo ad aumentare questo valore di uno il nuovo valore non è zero, come ci si potrebbe aspettare, ma il minor valore che la variabile può assumere.

Per evitare l’errore dovremmo dichiarare la variabile come long, che memorizza sempre numeri interi, ma in un range più ampio, che va da 2.147.483.647 a -2.147.483.648. Se abbiamo a che fare con numeri decimali, che hanno quindi la virgola, dobbiamo dichiarare la variabile come float.

Float è un tipo di dato usato per i numeri decimali ed è usato per la rappresentazione di numeri piccolissimi o grandissimi con o senza segno e con o senza decimaili. I float sono memorizzati nel range che trovate scritto qui a video tra 3,4028235E+38 a -3,4028235E+38.

Ci sono anche altri tipi di variabili, riporto qui sotto un bigino.

Se non ti interessa approfondirle non preoccuparti, perchè durante il corso spiegherò ogni nuovo tipo di variabile in cui ci imbatteremo

Bene gente, per oggi vi ho detto tutto! Vi aspetto per la prossima lezione, se non volete perderla iscrivetevi al canale YouTube!!

Bigino: riassunto tipi di variabile di Arduino

Boleano: la variabile di tipo boleano può assumere un solo valore: vero o falso.

Char: contiene un solo carattere definito secondo lo standard ASCII, quindi qualsiasi lettera (maiuscola o minuscola), cifra (da 0 a 9) e simbolo previsto dalla codifica. Arduino lo conserva in forma di numero, anche se quello che si vede è un testo.

Byte: occupa 8 bit, può contenere un valore numerico senza decimali e può assumere un valore compreso tra 0 e 255.

Int: memorizza numeri senza decimali e può assumere valori negativi. Occupa 2 byte, quindi 16 bit di memoria. Il valore può essere compreso tra -32.768 e 32.767.

Unsigned int: è uguale a int, occupa 2 byte di memoria e non può assumere valori negativi. Il suo intervallo va da 0 a 65.535.

Long: è come un int, che utilizza 4 byte, quindi 32 bit per estendere il valore da memorizzare. Infatti il valore che può contenere è compreso tra -2.147.483.648 e 2.147.483.647. Non può contenere decimali.

Unsigned long: è una versione di long che non contiene numeri negativi; può contenere valori compresi tra 0 e 4.294.967.295.

Float: memorizza un numero a virgola mobile compreso tra -3.4028235E+38 e + 3.4028235E+38. Può rappresentare numeri molto piccoli o numeri molto grandi, positivi e negativi con o senza decimali. La precisione dopo il punto decimale è di 7 cifre.

Double: è un numero che ha una precisione a virgola mobile doppia rispetto a Float e può contenere un valore massimo di 1.7976931348623157 x 10308.

String: il set dei caratteri ASCII può essere usato per contenere informazioni testuali (un messaggio su un display LCD o un messaggio attraverso la comunicazione seriale). Per la memorizzazione viene utilizzato un byte per ogni carattere, più un carattere null (vuoto) per dire ad Arduino che la stringa di caratteri è finita.