Hands-On Arduino -Setp by Step

96
Arduino Step by Step P. Perego- Politecnico di Milano AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno – Disegno Industriale

Transcript of Hands-On Arduino -Setp by Step

Page 1: Hands-On Arduino -Setp by Step

Arduino Step by Step

P. Perego- Politecnico di Milano

AA 2010/2011Facoltà del Design - Politecnico di Milano3.o anno – Disegno Industriale

Page 2: Hands-On Arduino -Setp by Step

Paolo Perego

Setup iniziale

Prepariamo il computer per l’utilizzo di Arduino e Processing

Cosa occorre:Arduino.zip da arduino.ccProcessing.zip da www.processing.orgFritzing.zip da fritzing.orgArduinoExamples.zip Processing.Examples.zipFritzingCircuits.zip

Scheda Arduino

2

Page 3: Hands-On Arduino -Setp by Step

Paolo Perego

Preparare il sistema per ArduinoStep 1

Donwload ed installazione:-Scaricare il software nel sito Arduino.cc-Scaricare ArduinoExamples.zip dal sito del professore o dal sito www.sensibilab.campuspoint.polimi.it nella categoria Arduino sotto la sezione download.

Procediamo con l’installazione:

1)Unzip il file Arduino.zip scaricato da Arduino.cc, non necessita di installazione.

2)Collegare la scheda Arduino tramite l’usb

Se non è la prima volta che si utilizza arduino saltare il punto tre.

3)Se si utilizza un sistema operativo windows è necessario installare il driver per arduino- Aprire Sistema nel menu del Pannello di Controllo- Selezionare Gestione Dispositivi- Selezionare “Arudino ONE” (Dovrebbe essere presente un’icona con un punto

escalmativo.- Premere il tasto destro e selezionare Aggiorna driver- Selezionare Ricerca Manuale del Driver- Selezionare la cartella /arduino-0022/drivers/- Procedere con l’installazione del driver.

3

Page 4: Hands-On Arduino -Setp by Step

Paolo Perego

Preparare il sistema per ArduinoStep 2

4) Unzip il file ArduinoExamples.zip nella cartella /arduino-0022/Example

5) Eseguire l’IDE Arduino

6) Selezionare la versione di hardware Arduino (“Arduino UNO”)

7) Selezionare la porta COM (per MAC “/dev/tty.usbmodem”, per Linux “/dev/ttyUSB#.”, per Windows controllare nel “panello di controllo/Gestione dispositivi”). Attenzione, cercate di collegare Arduino sempre nella stessa porta (soprattutto con Windows); se cambiate USB, cambierà anche la porta COM.

Ora il nostro sistema arduino è pronto per iniziare!!!

4

Page 5: Hands-On Arduino -Setp by Step

Paolo Perego

Preparare il sistema per Processing

Donwload ed installazione:-Scaricare il software dal sito www.processing.org-Scaricare ProcessingExamples.zip dal sito del professore o dal sito

www.sensibilab.campuspoint.polimi.it nella categoria Arduino sotto la sezione download.

Procediamo con l’installazione:

1)Unzip Processing.zip, non necessita di

installazione.

1)Unzip ProcessingExample.zip nella cartella

Processing/examples/

3)Eseguire l’IDE Processing

5

Page 6: Hands-On Arduino -Setp by Step

Paolo Perego

Preparare il sistema per Fritzing

Donwload ed installazione:-Scaricare il software dal sito http://fritzing.org/-Scaricare FritzingCircuits.zip dal sito del professore o dal sito

www.sensibilab.campuspoint.polimi.it nella categoria Arduino sotto la sezione download.

Procediamo con l’installazione:

1)Unzip Firtzing.zip, non necessita di installazione.

2)Cancellare il contenuto della cartella

Fritzing/sketches/

3)Unzip FritzingCircuits.zip nella cartella

Fritzing/sketches/

4)Eseguire Fritzing

6

Page 7: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0

Iniziamo…

Cosa occorre:Example0

Scheda Arduino

7

Page 8: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0Il primo programma

Carichiamo il primo esempio:

Tramite il menù file selezionare

Examples

└ EsempiLezione

└ Example0

8

Page 9: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0Integrated Development Environment (IDE)

9

L’IDE Arduino è il software necessario per la generazione del firmware per il microcontrollore di Arduino.

Page 10: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0

Il firmware Arduino deve essere necessariamente composto almeno da tre parti:

• La dichiarazione delle variabili.

• La funzione void setup()• La funzione void loop()

10

Page 11: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0Le parti principali del firmware

11

Le variabili vanno sempre dichiarate fuori da setup e loop in modo che entrambe le funzioni (setup e loop) possano utilizzarleLa funzione void setup() è utilizzata per la configurazione iniziale di arduino.

Questa funzione viene eseguita all’accensione di arduino una sola volta.

La funzione void loop() viene eseguita immediatamente dopo la funzione setup ed è continuamente rieseguita fino allo spegnimento o reset di Arduino.

In questa funzione vengono inserite le istruzioni per ciò che arduino deve veramente fare (es. accendi led, scrivi sulla seriale…)

Page 12: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0Upload

Abbiamo creato il nostro primo Firmware, procediamo con la verifica del codice e l’Upload su Arduino

Questo firmware non fa nulla in quanto sia la funzione setup che la funzione loop sono vuote.

Nota: Se una riga è preceduta da // diventa un commento e non viene eseguita da Arduino.

12

Verifica del codice

Upload del codice su Arduino

Memoria occupata dal programma

Page 13: Hands-On Arduino -Setp by Step

Paolo Perego

La programmazione

Durante l’upload del firmware, se tutto avviene correttamente, i led TX e RX ed il led L cominceranno a lampeggiare sino a programmazione completata.

13

Page 14: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1

Accendiamo il led sulla scheda

Cosa serve:Example1

Arduino

14

Page 15: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1Accendiamo un led

15

Carichiamo l’esempio Example1

Con questa riga diamo il valore 13 al nome ledPin.

Indichiamo ad Arudino che il suo pin 13 (ledPin) è un pin di uscita (OUTPUT)

Accendiamo il led sul pin 13

Page 16: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1Il led

Arduino incorpora sulla scheda un LED di test collegato al pin 13. Il led è indicato sulla scheda con la lettera L.

Per utilizzare questo led non occorre nient’altro che la scheda Arduino.

16

Page 17: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2

Facciamo “blinkare” un led esterno

Presentazione Frizing

Cosa serve:Example 2_1Example 2_2

Scheda ArduinoBreadboardUna resistenzaUn Led1 filo lungo1 fili di lunghezza media

17

Page 18: Hands-On Arduino -Setp by Step

Paolo Perego

18Esempio 2Collegando i componenti

Per creare un prototipo, Arduino deve essere collegato a sensori, attuatori e altri componenti creando un circuito elettronico.

Per prototipare utilizziamo la Breadboard

Page 19: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Breadboard

• Permette di creare circuiti senza saldare.• Permette di riconfigurare e cambiare il circuito velocemente.

La breadboard è composta da 4 aree. • Le due più esterne servono solitamente per l’alimentazione e sono collegate tutte orizzontalmente.• Le due più interne servono per i collegamenti tra i componenti e sono collegate verticalmente.

19

Page 20: Hands-On Arduino -Setp by Step

Paolo Perego

Fritzinghttp://fritzing.org/

Per realizzare il prototipo useremo i componenti e la breadboard, ma prima possiamo creare il nostro circuito virtualmente con Frizing!

20

Page 21: Hands-On Arduino -Setp by Step

Paolo Perego

Fritzing

Apriamo Fritzing

21

In questa parte metteremo i componenti necessari al nostro circuito e tracceremo i collegamenti come se lo stessimo faceno con componenti veri.

Qui sono presenti molti dei componenti più utilizzati, compresa la scheda arduino.

Page 22: Hands-On Arduino -Setp by Step

Paolo Perego

FritzingIl circuito virtuale

Proviamo a creare il circuito virtuale pe l’accensione del led esterno con arduino.

1) Inseriamo Arduino. Selezioniamo a destra la scehda arduino e trasciniamola nel riquadro di sinistra.

22

Page 23: Hands-On Arduino -Setp by Step

Paolo Perego

FritzingIl circuito virtuale

2) Ora ci occorrono una resistenza e un led. Troviamo anche questi nei componenti a destra e trasciniamoli nel riquadro di sinistra.

23

Page 24: Hands-On Arduino -Setp by Step

Paolo Perego

FritzingIl circuito virtuale

3) Abbiamo tutti i componenti che ci servono, dobbiamo ora piazzarli nella breadboard ed effettuare i collegmaenti.

24

Page 25: Hands-On Arduino -Setp by Step

Paolo Perego

FritzingIl circuito virtuale

4) Il circuito è fatto, ma visto così è molto confuso. Possiamo cambiare colore ai fili cliccandoci sopra con il tasto destro e scegliendone il colore o aggiungere delle curve ai fili in modo che non si sovrappongano troppo (clicchiamoci sopra con il tasto sinistro e trascinando il filo).

25

Page 26: Hands-On Arduino -Setp by Step

Paolo Perego

FritzingIl circuito virtuale

Eccol il risultato finale.

26

Page 27: Hands-On Arduino -Setp by Step

Paolo Perego

FritzingAggiungere componenti

Nel software sono già presenti molti componenti e altri se ne trovano in internet.

Le realizzazione di nuovi componenti è tuttavia semplicissima perché necessità della realizzazione di tre file svg:

1.La vista per la prototipazione virtuale

2.Il disegno per lo schema elettrico

3.Footprint per PCB

27

Page 28: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Costruiamo il circuito

28

Costruiamo ora il circuito disegnato con fritzing con componenti reali.

ATTENZIONE: Il led ha un anodo (+) ed un catodo (-). Il catodo è il piedino più corto e va collegato sotto la resistenza; l’anodo va collegato tramite il filo lungo al pin 13 di Arduino.

Page 29: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Perché la resistenza

29

Perché non colleghiamo direttamente il led tra il pin 13 e gnd?

Il led necessita di circa 1,5V e 15mA.

Arduino fornisce 5V.

Se lo colleghiamo direttamente il led brucerebbe in pochi minuti.

1,5V15mA

3,5V

5V

Page 30: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Il valore della resistenza

30

Il valore della resistenza è calcolato con la formula:

R = (VArduino – Vled) / Iled = (5V – 1,5 V) / 10mA = 350Ω

Se volessimo collegare più led la formula sarà:

R = (VArduino – (n°LED * Vled)) / Iled

Si nota quindi che al massimo con aduino possiamo collegare 3 led in serie sullo stesso pin.

Page 31: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Accendiamo un led

31

Carichiamo l’esempio Example2_1

La dichiarazione delle variabili e la funzione void setup() è identica a quella dell’esercizio 1:- Utilizziamo solo il pin 13 come uscita.

La funzione loop ha invece tre istruzioni in più:

delay (1000);Implementa una pasua di 1000ms

digitalWrite(ledPin,LOW);Spegne il led

Page 32: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Non esiste solo un modo per fare le cose

32

Carichiamo l’esempio Example2_2

Il codice è molto diverso da quello dell’esempio precedente, ma Arduino fa esattamente la stessa cosa.

time = millis();Time restituisce da quanto tempo è acceso Arduino.

digitalWrite(ledPin,!digitalRead(ledPin));Questa linea di codice fa il così detto TOGGLE

Se il led è acceso lo spegne, se è spento lo accende.Il punto esclamativo è l’operatore NOT, posto davanti ad uno stato (HIGH o LOW) ne fa il contrario.

Page 33: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3 – Un po’ d’interattività!

Accendiamo il led esterno con un pulsante

Cosa serve:example 3_1example 3_2

Scheda ArduinoCircuito Esempio 2Un pulsanteUna resistenzaUn filo cortoUn filo di lunghezza mediaUn filo lungo

33

Page 34: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3Costruiamo il circuito

34

Costuriamo il circuito come riportato qui sotto.

Il pulsante non ha un verso, va montato a cavallo della linea centrale della breadboard.

Page 35: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3Il firmware

35

Carichiamo l’esempio Example3_1

Dichiariamo che il bottone sarà collegato al pin 2

Leggiamo lo stato dell’interruttore e cambiamo lo stato del led attraverso la riga di TOGGLE vista in Example2_2

Il pin due è quindi impostato come ingresso.

Page 36: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3Un po’ di interattività… pulsante e led.

36

Cosa succede quando premo il pulsante?

Quando il pulsante viene premuto il contatto non viene semplicemente chiuso ma, a causa di microvibrazioni, continua ad aprirsi e chiudersi per qualche decimo di secondo.

Queste continue aperture e chiusure impediscono di controllare in maniera chiara l’accensione e lo spegnimento del led.

Il problema viene risolto con il così detto anti-rimbalzo.

Page 37: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3Debounce o Antirimbalzo

37

Carichiamo l’esempio Example3_2

L’antirimbalzo è così strutturato

Page 38: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3Debounce o Antirimbalzo

38

L’anti-rimbalzo lascia passare almeno 30ms prima di ritenere valido un cambiamento di stato del bottone.

ATTENZIONE: Se modifichiamo il valore di DebounceDelay per esempio a 1000, Arduino accetterà la pressione del pulsante solo una volta al secondo.

Page 39: Hands-On Arduino -Setp by Step

Paolo Perego

Arduino e la community onlineLa filosofia opensource

39

OK, l’esempio di prima è un po’ complesso ma…

… non occorre saper programmare per utilizzare Arduino.

Sono infatti presenti online molti siti, blog, forum in cui altri mettono a disposizione la loro esperienza, i loro circuiti ed i loro programmi.

Arduino supporta la filosofia del cut & paste

Page 40: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4

Regoliamo l’intensità di un led

Cosa serve:example 4_0example 4_1example 4_2

Scheda ArduinoCircuito Esempio 3Un pulsanteUna resistenzaUn filo cortoUn filo lungo

40

Page 41: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4Costruiamo il circuito

41

Costuriamo il circuito come riportato qui sotto.

ATTENZIONE: Il led non va più collegato al pin 13 ma al pin 11. Ci serve un IO con PWM.

Page 42: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4Costruiamo il circuito

42

Le I/O Digital con PWM sono indicate con una tacchetta sotto al numero del pin.

Sono 11, 10, 9, 6, 5 e 3

Page 43: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4Il firmware

43

Carichiamo l’esempio Example4_0

Dichiariamo che il led questa volta è collegato al pin 11

Scriviamo un valore analogico al sul pin 11. Il valore che possiamo scrivere non è più solo HIGH e LOW come nel caso di digitalWrite ma un valore tra 0 e 255;

0 0V

128 2,5V

255 5V

Cambiando questo valore possiamo cambiare la luminosità del led.

Page 44: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4Il firmware

44

Carichiamo l’esempio Example4_1

Abbiamo tuttavia inserito nel circuito due pulsanti che non utilizziamo

Questo esempio permette di modificare la luminosità del LED cliccando i due pulsanti. Il pulsante collegato al pin 2 aumenta la luminosità. Il pulsante collegato al pin 4 diminuisce la luminosità.

Il firmware è abbastanza complesso ed è composto da 3 parti:

1)Controllo il pulsante sul pin 2 (con anti-rimbalzo) e se premuto eseguo ledValue++;2)Controllo il pulsante sul pin 4 (con anti-rimbalzo) e se premuto eseguo ledValue--;3)Scrivo il valore di ledValue sul pin 11 con la funzione analogWrite

ledValue++ e ledValue–- rispettivamente incrementano e decrementano il valore ledValue di uno.

Page 45: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4Il firmware

45

Carichiamo l’esempio Example4_2

Complichiamo un po’ il tutto

Si nota subito a prima vista la complessità di questo firmware.

Abbiamo infatti aggiunto:

1)I contolli sul valore massimo e minimo da scrivere sul pin 11. Se infatti continuiamo a fare ledValue++ o ledValue-- il valore potrebbe non essere più tra 0 e 255. In questo caso il led si illumierà in modo errato.

2)Far cambiare la luminostià del led in questo modo è lunghissimo. Abbiamo quindi aggiunto un controllo che varia velocemente la luminosità del led se il pulsante viene premuto per più di due secondi.

Page 46: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4bis

Regoliamo l’intensità di un led con una resistenza variabile

Cosa serve:example 4bis

Scheda ArduinoCircuito Esempio 4Una resistenza variabileDue fili cortiUn filo lungo

46

Page 47: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4bisCostruiamo il circuito

47

Costuriamo il circuito come riportato qui sotto.

ATTENZIONE: Il led non va più collegato al pin 13 ma al pin 11. Ci serve un IO con PWM.

Page 48: Hands-On Arduino -Setp by Step

Paolo Perego

A cosa serve la resitenza variabile

il piedino centrale corrisponde ad un cursore che si muove lungo una resistenza.

Collegando una resistenza variabile tra 0 e 5V, sul piedino centrale avremo un valore di tensione che va da 0 a 5V a seconda della posizione del cursore.

E’ il così detto partitore di tensione; il resistore variabile può essere visto come due resistenza collegate attraverso il piedino centrale:

Vout = Vin * R2/(R1+R2);

Vout è la tensione sul piedino centrale.

48

Page 49: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4bisIl firmware

49

Carichiamo l’esempio Example4bis

Dichiariamo che la resistenza variabile è collegata al pin 5

Leggiamo il valore analogico:

analogRead(analogPin);

Restituisce il valore letto sul pin 5 come valore tra 0 e 1024;

0 0V

512 2,5V

1024 5V

Il valore letto viene scritto sul pin 11.

Dobbiamo dividere per 4 perché analogWrite accetta solo valori tra 0 e 255 (vedi esempio 4).

Page 50: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 5 – Un po’ di rumore

Facciamo suonare un Buzzer

Cosa serve:example5example5INNO

Scheda ArduinoCircuito Esempio 4bisBuzzer o altoparlante

50

Page 51: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 5Costruiamo il circuito

51

Page 52: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 5Il firmware

52

Carichiamo l’esempio Example5

Dichiariamo che il buzzer è collegato al pin 8

Due nuove funzioni, tone e noTone

tone (pinBuzzer, freq, time);

Suona una nota di frequenza freq e durata time sul buzzer collegato al pin pinBuzzer.

noTone (pinBuzzer);

Ferma il tono generato in precedenza dalla funzione tone.

Page 53: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 5Un po’ di musica

E se volessimo suonare una canzone con più note?

Carichiamo l’esempio Example5INNO

In questo esempio abbiamo utilizzato un file esterno: «note.h»

Il comando #include "note.h ";

Permette di inserire all’interno di un progetto un altro file. Con questa operazione è come se copiassimo l’intero contenuto del file nella posizione dove è presente il comando.

In questo modo abbiamo inserito le note (con le relative frequenze), le durate e le pause della nostra canzone.

Solitamente questa operazione viene utilizzata:•per includere file contenenti dei dati/valori;•per includere ed utilizzare una libreria esterna.

In questo modo il firmware risulta più leggibile ed i file possono essere riutilizzati in altri progetti senza la necessità di riscriverli.

53

Page 54: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 5InnoIl firmware

54

Notiamo che le operazioni da fare sono inserite nella funzione setup, la funzine loop è vuota. Questo significa che queste operazioni verranno eseguite una sola volta immediatamente dopo il reset.

Si nota anche un nuovo tab.

Viene generato premendo il pulsante a destra.

Serve per includere nuovi file nel progetto.

Page 55: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6

Comunichiamo con il computer: inviamo dati!

Cosa serve:example6

Scheda ArduinoCircuito Esempio 5

55

Page 56: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6Comunicazione seriale

Arduino comunica con il PC attraverso una porta seriale virtuale (COM) via USB.

Attraverso questa porta è possibile inviare/ricevere dati al/dal PC:• per scambiare informazioni;• per debuggare.

56

Alcune volte è necessario controllare se i dati che Arduino sta utilizzando sono quelli corretti. Per fare ciò occorre leggerli in qualche modo e visualizzarli fermando l’esecuzione del programma. Questo non è possibile nel IDE Arduino a meno di utilizzare la comunicazione seriale.

Page 57: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6Il firmware

57

Carichiamo l’esempio 6

Dobbiamo indicare ad Arduino di utilizzare la seriale e a quale velocità.

Serial.println(analogRead(pinInput));

Scrive sulla porta seriale il valore letto dalla resistenza variabile utilizzata nell’esempio 4bis.

Page 58: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6Comunicazione seriale

I dati inviati possono essere visualizzati tramite il Serial Monitor.

Apre serial monitor

58

Page 59: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 7 e 8

Comunichiamo con ProcessingPresentazione Processing

Software Processing

59

Page 60: Hands-On Arduino -Setp by Step

Paolo Perego

Processing

E’ un linguaggio di programmazione basato su Java che consente di sviluppare diverse applicazioni come giochi, animazioni e contenuti interattivi.

É distribuito sotto licenza Open Source ed è supportato dai sistemi operativi GNU/Linux, Mac OS X e Windows.

60

L’ambiente di sviluppo è molto simile ad Arduino, così come il linguaggio di programmazione utilizzato, molto semplice, intuitivo e immediato.

Page 61: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0 Processing

Il primo programma

Cosa serve:example0

61

Page 62: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 0Il primo programma

Carichiamo il primo esempio:

Tramite il menù file selezionare

Examples

└ EsempiLezione

└ Example0

62

Page 63: Hands-On Arduino -Setp by Step

Paolo Perego

Struttura del codice

La struttura del codice è molto simile ad Arduino:

Carichiamo l’esempio Example0

Dichiarazione Variabiliin questa parte si dichiarano le variabili che verranno poi richiamate all’interno del programma.

void setup() {all’interno del setup definiamo le proprietà dell’applicazione:

-dimensione finestra

-framerate

-…

}

void draw() { all’interno di draw inseriamo ciò che vogliamo disegnare.

}

63

Page 64: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1 Processing

Disegniamo un quadrato

Cosa serve:example1.1example1.2

64

Page 65: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1: Iniziamo a disegnareDisegno di un rettangolo

Carichiamo l’esempio Example1_1

65

Queste tre funzioni vanno sempre inserite all’interno di setup per inizializzare il programma.

Size(400,400); imposta la larghezza della finestra a 400x400 pixel.

smooth(); attiva filtro antialiasing

background (255,255,255); imposta lo sfondo bianco

Page 66: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1: Iniziamo a disegnareDisegno di un rettangolo

rect(x, y, width, height);

Disegna rettangolo con l’angolo in alto a sinistra in posizione x,y e di dimensione width e height

fill (R,G,B,alpha); Colore interno al rettangolo

stroke(R,G,B,alpha); Colore del contorno

strokeWeight(width); Spessore del bordo

noStroke(); Nessun bordo

noFill(); Nessuno colore di riempimento

66

La posizione X e Y in pixel partono dall’angolo in alto a sinistra.

Page 67: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1:Altre forme

Proviamo con altre forme:

ellipse(x, y, width, height);

triangle(x1, y1, x2, y2, x3, y3);

67

line(x1, y1, x2, y2;

Page 68: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 1_1: Esercizio

Disegnamo ora in una finestra di 400x400 quattro quadrati dello stesso colore (blue) su sfondo bianco.

Carichiamo l’esempio Example1_2.

68

Page 69: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2 Processing

Un po’ di interattività: il mouse

Cosa serve:example2_1example2_2

69

Page 70: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2Il mouse

Carichiamo lesempio Example2_1.

70

mouseX e mouseY: sono variabili che contengono la posizione del mouse.

pmouseX, pmouseY: posizione al frame precedente.

Attraverso queste quattro variabili possiamo identificare la posizione del mouse.

Il cerchio segue il mouse.

Se inseriamo background nella funzione draw, la finestra viene continuamente cancellata.

frameRate(12); imposta la velocità a 12 frame al secondo, rallenta quindi la visualizzazione dei contenuti.

Page 71: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 2: Un po’ di interattività

Carichiamo l’esempio Example2_2

Esistono quattro funzioni che vengono eseguite quando una delle azioni del mouse si verifica; sono utilizzate come la funzione draw e setup.

mouseClicked(); Mouse premuto e rilasciato

mousePressed(); Mouse premuto (posso controllare quale tasto tramite mouseButton)

mouseDragged(); Un tasto è premuto ed il mouse è mosso

mouseMoved(); Il mouse è mosso

mouseRelease(); Il tasto precedentemente premuto è rilasciato

Premendo il tasto destro lo sfondo cambia colore.

71

Page 72: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3 Processing

Un po’ di interattività: la tastiera

Cosa serve:example3

72

Page 73: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio3: Un po’ di interattivitàFunzioni di input: Tastiera

73

Carichiamo l’esempio Example3

key: contiene l’ultimo tasto premuto

keyCode: se viene premuto un tasto speciale (freccette, alt, ctrl e shift) la variabile key avrà il valore CODED. Keycode conterrà invece il tasto premuto (UP,DOWN…)

Come per il mouse esistono funzioni speciali per controllae quando un tasto viene premuto:

keyPressed() Un tasto è premuto

keyReleased() Un tasto premuto è rilasciato

Page 74: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 3 74

Example3

A seconda di che tasto viene premuto la forma cambia colore:

b = blue;

n = nero;

r = rosso;

g = giallo;

v = verde;

w = bianco.

Se premo le frecce la forma si sposta a seconda della direzione premuta.

Page 75: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 4 Processing

Inseriamo un’immagine

Cosa serve:example4

75

Page 76: Hands-On Arduino -Setp by Step

Paolo Perego

Carichiamo l’esempio Exampe4

Dichiarazione della variabile immagine;

Carica l’immagine (.gif, .jpg, .tga, .png) in memoria

Visualizza l’immagine caricata in a nella posizione posX, posY con dimensione dimX e dimY.

Se mettiamo un indirizzo web al posto del nome del file immagine, processing caricherà l’immagine presente sul web.

Il caricamento delle immagini è meglio effettuarlo nella funzione setup per evitare rallentamenti nel programma.

Esempio 4Inseriamo un’immagine

76

Page 77: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 5 Processing

Inseriamo il testo

Cosa serve:example5

77

Page 78: Hands-On Arduino -Setp by Step

Paolo Perego

Example 5Scrivere con Processing

Carichiamo l’esempio Example5

Generiamo un font attraveso il tool apposito:

Menù Tools

└ Create Font…

78

Page 79: Hands-On Arduino -Setp by Step

Paolo Perego

Example 5Scrivere con Processing

Carichiamo l’esempio Example5

Caricare il font

Settare il font da utilizzare e la dimensione

Settare il colore della scritta

Scrivere

79

Page 80: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6 Processing

Suoni

Cosa serve:example6.1example6.2

80

Page 81: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6Let’s play some music

81

Chiude la libreria e ferma il suono alla chiusura del programma. Va sempre messo per evitare errori.

La libreria può inoltre essere utilizzata anche per registrare e modificare in real-time un segnale audio.

Carichiamo l’esempio Example6.1

Importiamo libreria esterna

Dichiariamo un oggetto per l’audio e uno per caricare l’mp3

Inizializziamo l’oggetto minim ecarichiamo il file mp3.

Inizia l’esecuzione del file mp3

Page 82: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 6Tastiera e musica con un po’ di grafica

82

Carichiamo l’esempio Example6.2

In questo esempio la libreria audio viene utilizzata per eseguire un file mp3 con voce, mentre nel frattempo viene disegnata una linea che segue l’ampiezza della forma d’onda sonora dell’mp3.

Page 83: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 7 Processing

Altre funzioni interessanti

Cosa serve:example7

83

Page 84: Hands-On Arduino -Setp by Step

Paolo Perego

Altre funzioni ed esempi

Processing può essere anche usato per generare PDF, DXF, visualizzare webcam, visualizzare elementi 3d (file obj, 3ds…).

Caricare l’esempio Example7

Sul sito di processing e direttamente nell’IDE sono a disposizione molti esempi e tutorial per l’utilizzo di processing.

Una lista delle funzioni fino a qui utilizzate più molte altre può essere trovata all’indirizzo: http://processing.org/reference/

OpenProcessing mette ha disposizione spazio online per lo scambio di sketch processing. Il sito contiene molti sketch funzionanti dai quali potete prendere spunto per realizzare i vostri software.

http://www.openprocessing.org/

84

Page 85: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 7

Comunichiamo con Processing: riceviamo dati dal pc

Cosa serve:x Arduinoexample7x Processingexample7_Arduino

Scheda ArduinoCircuito Esempio 5

85

Page 86: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 7 - ArduinoRicevere dati – Lato Arduino

Carichiamo l’esempio Example7

X Trasmettere dati:Controlla se sono presenti dati inviati dal PC

if (Serial.read()==‘’k’’)

Controlla se il dato ricevuto corrisponde al carattere che desidero, in tal caso cambio lo stato del led.

86

Page 87: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 7 - ArduinoRicevere dati – Lato Arduino

Caricato il firmware in Arduino possiamo testarlo con il serial monitor

Scriviamo qui il carattere da inviare.

Premere Send per inviare.

Se inviamo k il LED cambia stato, per ogni altro carattere non cambia nulla.

87

Page 88: Hands-On Arduino -Setp by Step

Paolo Perego

Comunicazione Arduino-ProcessingRicevere dati - Lato processing

88

Caricare l’esempio Example7_Arduino in processing.

Tutto quello che Arduino scrive deve essere compreso da Processing. Per tale ragione la velocità della seriale e il formato dei dati trasmessi e ricevuti dovrà essere il medesimo.

Processing usa una libreria esterna, occorre importarla con il comando:import processing.serial.*;

Occorre poi creare l’oggetto seriale con il comando: Serial myPort;

Nella funzione void Setup() di processing occorre quindi inizializzare la seriale con velocità e nome porta corretti.

myPort = new Serial(this, “COMN”, velocità);

Page 89: Hands-On Arduino -Setp by Step

Paolo Perego

Comunicazione Arduino-ProcessingRicevere dati - Lato processing

89

La finestra di processing si presenterà tutta nera ma alla pressione del tasto sinistro del mouse il led di Arduino si accende.

Page 90: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 8

Comunichiamo con Processing: trasmettiamo dati a processing

Cosa serve:x Arduino example6x Processingexample8 _Arduino

Scheda ArduinoCircuito Esempio 5

90

Page 91: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 8 - ArduinoInviare dati – Lato Arduino

Carichiamo l’esempio Example6

X Ricevere dati:

Serial.println(valore);

Scrive sulla seriale un dato, nel nostro caso il dato letto dal pin analogico 0 (analogRead(analogPin)) e successivamente invia il carattere «a capo».

In questo modo, quando andrò a leggere con arduino saprò che dopo ogni dato mi aspetto il carattere a capo, sarò quindi in grado di leggere i miei dati.

91

Page 92: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 7 - ArduinoInviare dati – Lato Arduino

Caricato il firmware in Arduino possiamo testarlo con il serial monitor

92

Ricevere i dati e visualizzarli in questo modo non è tuttavia molto utile. Sarebbe preferibile una visualizzazione tramite grafici.

Page 93: Hands-On Arduino -Setp by Step

Paolo Perego

Esempio 8 - ArduinoInviare dati – Lato Processing

Carichiamo l’esempio Example8_Arduino in processing

La funzione draw() è vuota.

Tutte le operazioni sono eseguite dalla funzione serialEvent(Serial myPort);

Questa funzione viene chiamata tutte le volte che la seriale riceve un dato.

Nella funzione il dato viene letto fino a che non viene ricevuto il carattere a capo «\n»

Il dato letto (tra 0 e 1024) viene converti tra 0 e l’altezza della finestra per essere disegnato.

Successivamente si disegna una linea che va dal valore precedente a quello appena letto.

L’ultima parte serve per resettare il grafico quando si raggiunge il fondo.

93

Page 94: Hands-On Arduino -Setp by Step

Paolo Perego

Comunicazione Arduino-ProcessingLato Processing

Andando a variare la resistenza variabile collegata ad Arduino, il valore letto viene riportato come grafico su processing.

94

Page 95: Hands-On Arduino -Setp by Step

Paolo Perego

Siti utili: 95

Arduino Playground: http://www.arduino.cc/playground/

Freeduino (the best): http://www.freeduino.org/

Instructables: http://www.instructables.com/

Sparkfun: http://www.sparkfun.com

Make magazine: http://makezine.com/

Hack n mod: http://hacknmod.com

CircuitLake: http://www.circuitlake.com

NuElectronics: http://www.nuelectronics.com

Seeduino: http://www.seeedi.com/warehouse/

Page 96: Hands-On Arduino -Setp by Step

Paolo Perego

Arduino Shield

Gli shield di Arduino sono circuiti già montati e testati che possono essere direttamente collegati con arduio.

Hanno svariate funzioni tra le quali:-GPS-GSM/GPRS-BLUETOOTH-Motori-Audio/MP3-Display Oled-Ethernet-USB

Per qualsiasi problema o difficolta:

1. googlate!!!

2. Mandatemi una mail: [email protected]

Buon divertimento!!!

96