Sei sulla pagina 1di 96

AA 2010/2011

Facolt del Design - Politecnico di Milano


3.o anno Disegno Industriale

Arduino Step by Step


P. Perego- Politecnico di Milano

Setup iniziale
Prepariamo il computer per lutilizzo di Arduino
e Processing
Cosa occorre:
Arduino.zip da arduino.cc
Processing.zip da www.processing.org
Fritzing.zip da fritzing.org
ArduinoExamples.zip
Processing.Examples.zip
FritzingCircuits.zip
Scheda Arduino

Paolo Perego

Preparare il sistema per Arduino


Step 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 linstallazione:
1)Unzip il file Arduino.zip scaricato da Arduino.cc, non necessita di installazione.
2)Collegare la scheda Arduino tramite lusb
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 unicona 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 linstallazione del driver.
Paolo Perego

Preparare il sistema per Arduino


Step 2

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


5) Eseguire lIDE 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)

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 linstallazione:
1)Unzip Processing.zip, non necessita di
installazione.
1)Unzip ProcessingExample.zip nella cartella
Processing/examples/
3)Eseguire lIDE Processing

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 linstallazione:
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

Paolo Perego

Esempio 0
Iniziamo
Cosa occorre:
Example0
Scheda Arduino

Paolo Perego

Esempio 0
Integrated Development Environment (IDE)

LIDE Arduino il software


necessario per la generazione del
firmware per il microcontrollore di
Arduino.

Paolo Perego

Esempio 0
Il primo programma

Carichiamo il primo esempio:


Tramite il men file selezionare
Examples
EsempiLezione
Example0

Paolo Perego

Esempio 0

10

Il firmware Arduino deve essere


necessariamente
composto
almeno da tre parti:

La dichiarazione delle variabili.


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

Paolo Perego

Esempio 0
Le 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 utilizzarle
La funzione void setup() utilizzata per la configurazione iniziale di
arduino.
Questa funzione viene eseguita allaccensione 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)

Paolo Perego

Esempio 0
Upload

12

Abbiamo creato il nostro primo Firmware, procediamo con la verifica del codice e
lUpload 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.
Upload del
codice su
Arduino
Verifica del
codice
Memoria
occupata dal
programma

Paolo Perego

La programmazione

13

Durante lupload del firmware, se tutto avviene correttamente, i led TX e RX ed il led


L cominceranno a lampeggiare sino a programmazione completata.

Paolo Perego

14

Esempio 1
Accendiamo il led sulla scheda
Cosa serve:
Example1
Arduino

Paolo Perego

Esempio 1
Accendiamo un led

15

Carichiamo lesempio 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

Paolo Perego

Esempio 1
Il led

16

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 nientaltro che la scheda Arduino.

Paolo Perego

17

Esempio 2
Facciamo blinkare un led esterno
Presentazione Frizing
Cosa serve:
Example 2_1
Example 2_2
Scheda Arduino
Breadboard
Una resistenza
Un Led
1 filo lungo
1 fili di lunghezza media

Paolo Perego

Esempio 2
Collegando i componenti

18

Per creare un prototipo, Arduino deve essere collegato a sensori, attuatori


e altri componenti creando un circuito elettronico.
Per prototipare utilizziamo la Breadboard

Paolo Perego

Esempio 2
Breadboard

19

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 lalimentazione e sono
collegate tutte orizzontalmente.
Le due pi interne servono per i collegamenti tra i componenti e sono
collegate verticalmente.

Paolo Perego

Fritzing
http://fritzing.org/

20

Per realizzare il prototipo useremo i componenti e la breadboard, ma prima


possiamo creare il nostro circuito virtualmente con Frizing!

Paolo Perego

Fritzing

21

Qui sono presenti


molti dei componenti
pi utilizzati,
compresa la scheda
arduino.

Apriamo Fritzing

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

Paolo Perego

Fritzing
Il circuito virtuale

22

Proviamo a creare il circuito virtuale pe laccensione del led esterno con arduino.
1) Inseriamo Arduino. Selezioniamo a destra la scehda arduino e trasciniamola nel riquadro di
sinistra.

Paolo Perego

Fritzing
Il circuito virtuale

23

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

Paolo Perego

Fritzing
Il circuito virtuale

24

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

Paolo Perego

Fritzing
Il circuito virtuale

25

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).

Paolo Perego

Fritzing
Il circuito virtuale

26

Eccol il risultato finale.

Paolo Perego

Fritzing
Aggiungere componenti

27

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

Paolo Perego

Esempio 2
Costruiamo 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; lanodo va collegato tramite
il filo lungo al pin 13 di Arduino.

Paolo Perego

Esempio 2
Perch 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.

3,5V
5V
1,5V
15mA

Paolo Perego

Esempio 2
Il 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 (nLED * Vled)) / Iled
Si nota quindi che al massimo con aduino possiamo collegare 3 led in serie
sullo stesso pin.

Paolo Perego

Esempio 2
Accendiamo un led

31

Carichiamo lesempio Example2_1

La dichiarazione delle variabili e la


funzione void setup() identica a
quella dellesercizio 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

Paolo Perego

Esempio 2
Non esiste solo un modo per fare le cose
Carichiamo lesempio Example2_2

Il codice molto diverso da quello


dellesempio 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 loperatore NOT, posto davanti ad
uno stato (HIGH o LOW) ne fa il contrario.

Paolo Perego

32

33

Esempio 3 Un po dinterattivit!
Accendiamo il led esterno con un pulsante
Cosa serve:
example 3_1
example 3_2
Scheda Arduino
Circuito Esempio 2
Un pulsante
Una resistenza
Un filo corto
Un filo di lunghezza media
Un filo lungo

Paolo Perego

Esempio 3
Costruiamo 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.

Paolo Perego

Esempio 3
Il firmware

35

Carichiamo lesempio Example3_1

Dichiariamo che il bottone sar


collegato al pin 2
Il pin due quindi impostato come
ingresso.

Leggiamo lo stato dellinterruttore e


cambiamo lo stato del led attraverso
la riga di TOGGLE vista in
Example2_2

Paolo Perego

Esempio 3
Un po di interattivit pulsante e led.

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 laccensione e lo
spegnimento del led.
Il problema viene risolto con il cos detto antirimbalzo.

Paolo Perego

36

Esempio 3
Debounce o Antirimbalzo
Carichiamo lesempio Example3_2
Lantirimbalzo cos strutturato

Paolo Perego

37

Esempio 3
Debounce o Antirimbalzo

38

Lanti-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.

Paolo Perego

Arduino e la community online


La filosofia opensource

39

OK, lesempio 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

Paolo Perego

40

Esempio 4
Regoliamo lintensit di un led
Cosa serve:
example 4_0
example 4_1
example 4_2
Scheda Arduino
Circuito Esempio 3
Un pulsante
Una resistenza
Un filo corto
Un filo lungo

Paolo Perego

Esempio 4
Costruiamo 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.

Paolo Perego

Esempio 4
Costruiamo 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

Paolo Perego

Esempio 4
Il firmware

43

Carichiamo lesempio 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.

Paolo Perego

Esempio 4
Il firmware

44

Abbiamo tuttavia inserito nel circuito due pulsanti che non utilizziamo
Carichiamo lesempio Example4_1
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.

Paolo Perego

Esempio 4
Il firmware

45

Complichiamo un po il tutto
Carichiamo lesempio Example4_2
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.

Paolo Perego

46

Esempio 4bis
Regoliamo lintensit di un led con una resistenza variabile
Cosa serve:
example 4bis
Scheda Arduino
Circuito Esempio 4
Una resistenza variabile
Due fili corti
Un filo lungo

Paolo Perego

Esempio 4bis
Costruiamo 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.

Paolo Perego

A cosa serve la resitenza variabile

48

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.

Paolo Perego

Esempio 4bis
Il firmware

49

Carichiamo lesempio 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).
Paolo Perego

50

Esempio 5 Un po di rumore
Facciamo suonare un Buzzer
Cosa serve:
example5
example5INNO
Scheda Arduino
Circuito Esempio 4bis
Buzzer o altoparlante

Paolo Perego

Esempio 5
Costruiamo il circuito

51

Paolo Perego

Esempio 5
Il firmware

52

Carichiamo lesempio 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.

Paolo Perego

Esempio 5
Un po di musica

53

E se volessimo suonare una canzone con pi note?


Carichiamo lesempio Example5INNO
In questo esempio abbiamo utilizzato un file esterno: note.h
Il comando #include "note.h ";
Permette di inserire allinterno di un progetto un altro file. Con questa operazione come se
copiassimo lintero 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.
Paolo Perego

Esempio 5Inno
Il 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.

Paolo Perego

55

Esempio 6
Comunichiamo con il computer: inviamo dati!
Cosa serve:
example6
Scheda Arduino
Circuito Esempio 5

Paolo Perego

Esempio 6
Comunicazione 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.

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
lesecuzione del programma. Questo non possibile nel IDE
Arduino a meno di utilizzare la comunicazione seriale.

Paolo Perego

56

Esempio 6
Il firmware

57

Carichiamo lesempio 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 nellesempio 4bis.

Paolo Perego

Esempio 6
Comunicazione seriale

58

I dati inviati possono essere visualizzati tramite il Serial Monitor.


Apre serial monitor

Paolo Perego

59

Esempio 7 e 8
Comunichiamo con Processing
Presentazione Processing
Software Processing

Paolo Perego

Processing

60

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.

Lambiente di sviluppo molto simile ad Arduino, cos come il linguaggio di programmazione


utilizzato, molto semplice, intuitivo e immediato.

Paolo Perego

61

Esempio 0 Processing
Il primo programma
Cosa serve:
example0

Paolo Perego

Esempio 0
Il primo programma

62

Carichiamo il primo esempio:


Tramite il men file selezionare
Examples
EsempiLezione
Example0

Paolo Perego

Struttura del codice

63

La struttura del codice molto


simile ad Arduino:
Carichiamo lesempio Example0

Dichiarazione Variabili
in questa parte si dichiarano le variabili che verranno poi
richiamate allinterno del programma.

void setup() {
allinterno del setup deniamo le propriet
dellapplicazione:
-dimensione finestra
-framerate
-

}
void draw() {
allinterno di draw inseriamo ci che vogliamo
disegnare.

Paolo Perego

64

Esempio 1 Processing
Disegniamo un quadrato
Cosa serve:
example1.1
example1.2

Paolo Perego

Esempio 1: Iniziamo a disegnare


Disegno di un rettangolo
Carichiamo lesempio Example1_1

Queste tre funzioni vanno sempre inserite


allinterno 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

Paolo Perego

65

Esempio 1: Iniziamo a disegnare


Disegno di un rettangolo
rect(x, y, width, height);
Disegna rettangolo con langolo 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

La posizione X e Y in pixel partono


dallangolo in alto a sinistra.
Paolo Perego

66

Esempio 1:
Altre forme

67

Proviamo con altre forme:


ellipse(x, y, width, height);

line(x1, y1, x2, y2;

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

Paolo Perego

Esempio 1_1:
Esercizio

68

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

Paolo Perego

69

Esempio 2 Processing
Un po di interattivit: il mouse
Cosa serve:
example2_1
example2_2

Paolo Perego

Esempio 2
Il mouse

70

Carichiamo lesempio Example2_1.


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.

Paolo Perego

Esempio 2: Un po di interattivit

Carichiamo lesempio 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
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
mousePressed();

Premendo il tasto destro lo sfondo


cambia colore.
Paolo Perego

71

72

Esempio 3 Processing
Un po di interattivit: la tastiera
Cosa serve:
example3

Paolo Perego

Esempio3: Un po di interattivit

Funzioni di input: Tastiera


Carichiamo lesempio Example3
key: contiene lultimo 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()
keyReleased()

Un tasto premuto
Un tasto premuto

rilasciato

Paolo Perego

73

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.

Paolo Perego

75

Esempio 4 Processing
Inseriamo unimmagine
Cosa serve:
example4

Paolo Perego

Esempio 4
Inseriamo unimmagine

76

Carichiamo lesempio Exampe4

Dichiarazione della variabile immagine;


Carica limmagine (.gif,.jpg,.tga,.png) in
memoria
Visualizza limmagine 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 limmagine presente sul web.
Il caricamento delle immagini meglio
effettuarlo nella funzione setup per evitare
rallentamenti nel programma.

Paolo Perego

77

Esempio 5 Processing
Inseriamo il testo
Cosa serve:
example5

Paolo Perego

Example 5
Scrivere con Processing
Carichiamo lesempio Example5
Generiamo un font attraveso il tool apposito:
Men Tools
Create Font

Paolo Perego

78

Example 5
Scrivere con Processing
Carichiamo lesempio Example5
Caricare il font

Settare il font da utilizzare e la dimensione


Settare il colore della scritta
Scrivere

Paolo Perego

79

80

Esempio 6 Processing
Suoni
Cosa serve:
example6.1
example6.2

Paolo Perego

Esempio 6
Lets play some music

81

Carichiamo lesempio Example6.1

Importiamo libreria esterna


Dichiariamo un oggetto per
laudio e uno per caricare lmp3
Inizializziamo loggetto minim e
carichiamo il file mp3.
Inizia lesecuzione del file mp3
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.

Paolo Perego

Esempio 6
Tastiera e musica con un po di grafica

82

Carichiamo lesempio 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 lampiezza della forma donda sonora dellmp3.

Paolo Perego

83

Esempio 7 Processing
Altre funzioni interessanti
Cosa serve:
example7

Paolo Perego

Altre funzioni ed esempi

84

Processing pu essere anche usato per generare PDF, DXF, visualizzare webcam, visualizzare
elementi 3d (file obj, 3ds).
Caricare lesempio Example7
Sul sito di processing e direttamente nellIDE sono a disposizione molti esempi e tutorial per
lutilizzo di processing.
Una lista delle funzioni fino a qui utilizzate pi molte altre pu essere trovata allindirizzo:
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/

Paolo Perego

85

Esempio 7
Comunichiamo con Processing: riceviamo dati dal pc
Cosa serve:
x Arduino
example7
x Processing
example7_Arduino
Scheda Arduino
Circuito Esempio 5

Paolo Perego

Esempio 7 - Arduino
Ricevere dati Lato Arduino
Carichiamo lesempio 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.

Paolo Perego

86

Esempio 7 - Arduino
Ricevere dati Lato Arduino

87

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.

Paolo Perego

Comunicazione Arduino-Processing
Ricevere dati - Lato processing
Caricare lesempio 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 loggetto 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);

Paolo Perego

88

Comunicazione Arduino-Processing
Ricevere dati - Lato processing

La finestra di processing si presenter tutta


nera ma alla pressione del tasto sinistro del
mouse il led di Arduino si accende.

Paolo Perego

89

90

Esempio 8
Comunichiamo con Processing: trasmettiamo dati a processing
Cosa serve:
x Arduino
example6
x Processing
example8 _Arduino
Scheda Arduino
Circuito Esempio 5

Paolo Perego

Esempio 8 - Arduino
Inviare dati Lato Arduino
Carichiamo lesempio 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.

Paolo Perego

91

Esempio 7 - Arduino
Inviare dati Lato Arduino

92

Caricato il firmware in Arduino possiamo testarlo con il serial monitor

Ricevere i dati e visualizzarli in questo


modo non tuttavia molto utile. Sarebbe
preferibile una visualizzazione tramite
grafici.

Paolo Perego

Esempio 8 - Arduino
Inviare dati Lato Processing
Carichiamo lesempio 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
laltezza della finestra per essere disegnato.
Successivamente si disegna una linea che va
dal valore precedente a quello appena letto.
Lultima parte serve per resettare il grafico
quando si raggiunge il fondo.
Paolo Perego

93

Comunicazione Arduino-Processing
Lato Processing

Andando a variare la resistenza variabile


collegata ad Arduino, il valore letto viene
riportato come grafico su processing.

Paolo Perego

94

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/

Paolo Perego

Arduino Shield

96

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: paolo.perego@polimi.it
Buon divertimento!!!

Paolo Perego

Potrebbero piacerti anche