35
Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO DELLE TECNOLOGIE ICT PER I SISTEMI URBANI ED IL TERRITORIO CONOSCENZE NECESSARIE

Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

  • Upload
    vuhuong

  • View
    263

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Arduino Uno

INTRODUZIONE

INTRODUZIONE ALL'USO DELLE TECNOLOGIE ICT PER I SISTEMI URBANI ED IL TERRITORIO

CONOSCENZE NECESSARIE

Page 2: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

La piattaforma Arduino: concetti di base

• CARATTERISTICHE PRINCIPALI DELLA PIATTAFORMA ARDUINO

• ARCHITETTURA ARDUINO UNO

• COMPONENTI AGGIUNTIVE NELLO STARTER KIT

Page 3: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore.

Un microcontrollore è un dispositivo elettronico che permette di acquisire dati in ingresso (input), elaborarli e restituire dei risultati (output). E’ una versione ridotta del processore o CPU

Le caratteristiche interessanti di Arduino sono varie:

• Interfaccia semplice con sensori di vari tipo (sia analogici che digitali)

• Programmazione molto semplice

• Compatto

• Molto diffuso

• Bassi consumi

Page 4: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Concetti di base dell'elettronica

• L'elettricità è una forma di energia che si propaga attraverso conduttori (come i fili elettrici). Questa energia è facilmente trasformabile in altre forme di energia ad esempio per accendere una lampadina o far sentire suoni in un altoparlante. I dispositivi utilizzati per fare questo sono detti trasduttori.

• Più in particolare i dispositivi che trasformano altri tipi di energie in energia elettrica sono detti sensori, mentre quelli che convertono energia elettrica in altre forme sono detti attuatori.

• Un circuito è un insieme di componenti elettroniche che muove elettricità tra le componenti. Sono cicli chiusi di connessioni con un'alimentazione (es. batteria).

• In un circuito elettricità fluisce da un punto a potenziale energetico maggiore (indicato come alimentazione, VCC o semplicemente +) ad un punto di potenziale inferiore. La terra o massa (o GND o -) è tipicamente il punto a minor potenziale.

Page 5: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Concetti di base dell'elettronica

• Corrente I (misurata in ampere, simbolo A): è la quantità di carica elettrica che passa attraverso uno specifico punto del circuito

• Voltaggio V (misurato in volt, simbolo V): è la differenza di energia tra un punto del circuito ed un altro (o tensione)

• Resistenza R (misurata in ohm, simbolo Ω): misura quanto un componente resiste al passaggio dell'energia elettrica

• Potenza P (misurata in watt, simbolo W): misura l'energia dissipata dal circuito

Legge di Ohm: V=R•I

Prima legge di Joule: P=V•I=R•I2=V2/R

Page 6: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Concetti di base dell'elettronica

In un circuito, perché funzioni, ci deve essere almeno un percorso completo dall'alimentazione (VCC) a massa (GND)

La corrente elettrica cerca sempre il percorso con meno resistenza possibile. Ciò vuol anche dire che se creata una connessione diretta (senza componenti, quindi senza o quasi resistenza, un filo ad esempio) tra VCC e GND, tutta la corrente fluirà lì (e nulla nel resto del circuito) e avrete fatto un corto circuito che provoca surriscaldamento e scintille e spesso brucia il circuito.

Page 7: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Architettura di Arduino Uno

Page 8: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Architettura di Arduino Uno

Page 9: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Architettura di Arduino Uno

Page 10: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Architettura di Arduino Uno

Page 11: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Analogico vs Digitale

Segnale analogico

• Può assumere qualunque valore (eventualmente in un intervallo)

• È continuo in ampiezza (quanto vale)

• È continuo nello spazio e/o nel tempo.

Segnale digitale

• Può assumere un insieme finito di valori, cioè

• è discreto in ampiezza

• È una sequenza di numeri, quindi è discreto

• nel tempo (e/o nello spazio)

Page 12: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

PIN digitali (2/2)

• SPI: Serial Peripheral Interface, altro protocollo per la comunicazione seriale, realizzato mediante i pin

10-13

• Pin 13: questo è anche automaticamente collegato al LED che dicevamo prima e quindi se questo pin è a valore alto (1) il led è acceso, altrimenti è spento

Page 13: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Altri componenti a disposizione Tralasciando i fili, i componenti principali sono: • BreadBoard (in italiano spesso chiamata millefori): è il componente

su cui inserire i vari componenti sia per tenerli fermi sia per collegarli tra loro

• Resistenze: ce ne sono molte e di tipo diverso. La caratteristica principale è il loro valore di resistenza (in ohm).

• LED: sfruttano la proprietà di alcuni semiconduttori di emettere fotoni tramite emissione spontanea. Di solito hanno due terminali: anodo e catodo. L'anodo è il terminale più lungo, oppure il catodo presenta una piegatura. Per farli funzionare bisogna collegare l'anodo al + (VCC) e il catodo al – (GND)

• Switch o interruttore: uno switch interrompe il flusso di corrente, "spezzando" il circuito quando aperto e chiudendolo quando chiuso.

• Potenziometro: è un dispositivo che permette la variazione della tensione letta in uscita modificato tramite una manovella la resistenza del dispositivo. Ha 3 terminali, uno da collegare a VCC, uno a GND e il terzo (centrale o isolato) per leggere la tensione variabile.

Page 14: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

•PRIMO PROGETTO CON ARDUINO

•SERIE VS PARALLELO NEI CIRCUITI ELETTRICI

Page 15: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Primo Progetto

Prima di cominciare a parlare di programmazione di Arduino facciamo un paio di prove per capire il concetto fondamentale di serie e parallelo. Qui Arduino fa solo da tramite fornendo alimentazione al circuito, ma null'altro.

Innanzitutto colleghiamo Arduino all'alimentazione. La cosa più pratica è di utilizzare il cavo USB a disposizione nel kit collegandolo ad un computer (ad es il portatile).

Componenti necessari: Arduino e breadboard, magari nella piattaforma in legno del kit

• Due cavi lunghi (poss. rosso e nero)

• Un led rosso

• Uno switch o pulsante

• Una resistenza da 220 ohm

• Due connettori corti

Page 16: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Primo Progetto

Prima di cominciare a parlare di programmazione di Arduino facciamo un paio di prove per capire il concetto fondamentale di serie e parallelo. Qui Arduino fa solo da tramite fornendo alimentazione al circuito, ma null'altro.

Innanzitutto colleghiamo Arduino all'alimentazione. La cosa più pratica è di utilizzare il cavo USB a disposizione nel kit collegandolo ad un computer (ad es il portatile).

Componenti necessari: Arduino e breadboard, magari nella piattaforma in legno del kit

• Due cavi lunghi (poss. rosso e nero)

• Un led rosso

• Uno switch o pulsante

• Una resistenza da 220 ohm

• Due connettori corti

Page 17: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Primo Progetto• 1) Scollegare l'alimentazione prima

di costruire il circuito

• 2) Collegare cavo rosso da pin 5V di Arduino a uno qualsiasi dei fori nella linea + della breadboard. Stessa cosa con cavo nero tra pin GND e foro nella linea -.

• 3) Posizionare lo switch a cavallo delle due parti della breadboard. La piega sui piedini deve andare verso il centro della board

• 4) Mettere una resistenza da 220 ohm tra VCC e un lato dello switch

Page 18: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Primo Progetto• 5) Collegare l'anodo (piedino più

lungo) il led rosso con l'altro piedino dello switch mediante un filo (di colore qualsiasi)

• 6) Collegare l'altro lato (catodo) del led con GND mediante un filo (colore qualsiasi) 7) Collegare l'alimentazione con il cavo USB e provare a premere lo switch

Page 19: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Serie e Parallelo

• Due componenti si dicono in serie quando vengono uno dopo l'altro. Due componenti di dicono in parallelo se esistono due percorsi paralleli della corrente, uno di fianco all'altro.

• Modifichiamo l'esempio precedente mettendo prima due switch in serie e poi in parallelo.

• In questo caso solo la pressione di entrambi gli switch fa accendere il led.

Page 20: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Serie e Parallelo

• Nel caso del parallelo invece basta che uno degli switch sia premuto per far accendere il led.

Page 21: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

PROGRAMMAZIONE ARDUINO

INSTALLAZIONE SOFTWARE

COMUNICAZIONE CON LA SCHEDA

PRIME ISTRUZIONI PRIMO PROGETTO DI PROGRAMMAZIONE

Page 22: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Programmazione dell’ Arduino

• Cominciamo a vedere, sempre tramite esempi pratici, come programmare il microcontrollore di Arduino.

• Programmarlo serve per modificare il suo comportamento a seconda degli ingressi (tipicamente dai sensori) e dell'algoritmo che si vuole realizzare. Tralasceremo se non strettamente necessario di fare disamine teoriche su algoritmi e concetti della programmazione

• Innanzitutto è necessario che vi scarichiate ed installate l'IDE (Integrated Development Environment) per Arduino. Un IDE è un software che vi permette di scrivere direttamente il codice, compilarlo e scaricarlo sulla scheda Arduino per farlo funzionare. Spesso mette a disposizione anche altre funzionalità (come il debugger, l'help, l'evidenziazione delle parole chiavi, ecc.)

Page 23: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Progetto con IDEIl progetto prevedrà 3 led (due rossi e uno verde): inizialmente il led verde sarà acceso e gli altri spenti. Alla pressione di un pulsante (switch– già visto) vogliamo che il verde si spenga e i due rossi lampeggino.

Componenti necessari: • Arduino e breadboard• Due cavi lunghi (poss. rosso e nero)• Due led rossi e uno verde • Uno switch o pulsante • Tre resistenze da 220 ohm e una da 10 Kohm• Quattro connettori lunghi e uno corto

Page 24: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Progetto con IDE1) Come al solito come prima cosa

collegiamo GND e VCC

2) Inseriamo i 3 led

3) Colleghiamo l'anodo di ciascuno con un PIN digitale (es: 4 e 5 ai rossi e 3 al verde). Il catodo è invece collegato attraverso una resistenza da 220 ohm a GND

4) Mettiamo lo switch come negli esempi precedenti. Colleghiamo ad alimentazione e a massa attraverso una res. da 10 kohm

5) Aggiungiamo una connessione tra un lato dello switch e il PIN digitale 2

Page 25: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Progetto con IDEIn pratica noterete che questa volta non c'è un collegamento diretto tra switch e led, ma solo attraverso Arduino che utilizzerà il pin digitale 2 per verificare se è stato premuto lo switch e a questo punto cambierà il comportamento (acceso/spento) dei led mediante i pin digitali 3,4 e 5.

Dobbiamo quindi scrivere il codice che effettua questa operazione

Page 26: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Uso dei pin digitaliI pin digitali hanno solo due stati possibili: HIGH (o ON, acceso) e LOW (o OFF, spento). Se un PIN in OUTPUT è messo HIGH significa che avrà una tensione di 5V.

• Come detto in precedenza, i pin digitali di Arduino possono essere posti sia come input che come output

• Di solito si parte almeno con il pin 2 perché i pin 0 e 1 come visto sono utilizzati per la trasmissione seriale

ci serviranno 3 comandi:1. pinMode per scegliere se un pin è input o output per quel programma2. digitalRead per leggere un valore da un pin digitale in input3. digitalWrite per scrivere un valore su un pin digitale in output

Page 27: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Uso dei pin digitaliOgni programma o sketch di Arduino ha due funzioni principali. Una funzione è una parte di programma che esegue comandi specifici (simile al concetto di funzione in matematica). Le funzioni hanno nomi univoci e vengono "chiamate" (o "invocate") quando serve.

Le funzioni principali di Arduino sono chiamate setup() e loop() (dove le parentesi stanno ad indicare i parametri di ingresso alla funzione che in questo caso non ci sono).

La dichiarazione base di queste funzioni è la seguente:void setup() {}void loop() {}

Il codice racchiuso tra parentesi graffe rappresenta la lista di comandi di quella funzione

Page 28: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Uso dei pin digitaliI programmi (in qualsiasi linguaggio) ricevono in ingresso dei dati, li elaborano e forniscono in uscita dei risultati.Per raggiungere questo risultato fanno uso di variabili, costanti, funzioni e comandi

• Le variabili sono delle entità che memorizzano dei dati (all'interno della memoria di Arduino). Esse hanno un nome (significativo), un tipo (che indica quale tipo di dato può essere memorizzato) ed eventualmente un valore iniziale (o di default; se non indicato il valore può essere zero o indefinito a seconda del processore). Il dato contenuto in una variabile può appunto variare valore, a differenza delle costanti.

Basti per ora sapere che la dichiarazione di una variabile si fa con: <tipo> <nome> [ = <valore iniziale ];

Page 29: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Uso dei pin digitali

Le variabili possono essere dichiarate fuori da qualsiasi funzione (ed in tal

caso si chiamano globali) o all'interno di una funzione (ed in tal caso si

chiamano locali). Le variabili globali sono "visibili" (cioè utilizzabili) da tutto

il programma e da ogni funzione. Le variabili locali sono invece visibili solo

all'interno della funzione dove sono dichiarate.

• Non possono esserci due variabili "allo stesso livello" con lo stesso

nome, ma possono esserci (anche se meglio non farlo per evitare

confusione) due variabili con lo stesso nome (e tipo diverso volendo!) che

tra loro sono visibili. Es:

int a=0; int a=0;

void setup() { int a=1;

int a=1; } void setup() { }OK! NO!!

Page 30: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Il codice

Programma di prova (2/3) La fuzione setup() citata prima viene eseguito solo una volta quando l'Arduino viene acceso (o la prima volta che viene caricato un nuovo sketch). In questa funzione di solito si fanno le operazioni di inizializzazione del programma. Nel nostro esempio dobbiamo solo settare per i 4 pin digitali se sono input o output.

void setup() { pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(2,INPUT); }

Page 31: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Il codice• La fuzione loop() invece viene eseguita in continuazione dopo la fine

dell'esecuzione di setup(). Questo è il cuore del programma. Nel nostro caso dobbiamo leggere il valore del pin 2 per verificare se è stato premuto il bottone e di conseguenza cambiare lo stato switchState e il comportamento dei led.

• Per verificare il valore di un pin in input si usa digitalRead con un parametro che è il numero del pin da leggere.

void loop() {switchState = digitalRead(2);

• // questo è un commentoSe avete necessità di inserire un commento si usano le doppie barre (dritte /, sopra al 7, non quelle rovesciate \ a sinistra di 1).

• Se c'è tensione sul pin 2 (e si ha solo se il circuito è chiuso dal bottone, quindi il bottone è premuto), allora nella variabile switchState si mette il valore 1 (HIGH) altrimenti il valore 0 (LOW).

Page 32: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

IF ed ELSE

Cominciamo a vedere le strutture di controllo. Queste permettono di modificare l’esecuzione sequenziale del programma. La prima e più semplice (anche più usata) è l'istruzione condizionale IF che permette di eseguire due parti di programma diverse a seconda che una condizione sia VERA o FALSA.

Per verificare una condizione si usano i predicati booleani e gli operatori relazionali o Gli operatori relazionali sono: == (uguale), != (diverso), <, <=, >, >=. Mettono a confronto due valori e se il confronto è vero (es 5>4) allora restituiscono il valore VERO (true, 1) altrimenti FALSO (false, 0).

Page 33: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

IF ed ELSE

I predicati booleani si basano sull'Algebra di Boole. I simboli (valori) di base dell’algebra di Boole sono lo 0 (falso) e 1 (vero), come nel sistema binario. oLe operazioni di base dell’algebra sono: osomma o OR logico oprodotto o AND logico ocomplemento o NOT logico

O Le tabelle di verità di queste operazioni sono le seguenti:

Legge di De Morgan: NOT(a AND b) = NOT(a) OR NOT(b) NOT(NOT(a) OR (b AND c)) = a AND NOT(b AND c) = = a AND NOT(b) OR NOT(c)

Page 34: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Il codice

Riprendiamo quindi il nostro progetto. Eravamo rimasti alla funzione loop() che iniziava così: void loop() { switchState = digitalRead(2); Ora verifichiamo il valore letto dal pin 2:

if (switchState == LOW) { digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); } Quindi se il pulsante non è premuto, il pin 2 è a LOW, quindi anche switchState, quindi si esegue la parte IF accendendo il led verde e tenendo spenti quelli rossi

Page 35: Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO … · Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un

Il codiceSe invece il pulsante viene premuto vogliamo far lampeggiare i due led rossi e spegnere il verde: else { digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); delay(250); // aspetta per ¼ di secondo digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW); delay(250); // aspetta per ¼ di secondo } } // fine loop()