Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Arduino Step by Step PDF
Arduino Step by Step PDF
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
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
Paolo Perego
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
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)
Paolo Perego
Esempio 0
Il primo programma
Paolo Perego
Esempio 0
10
Paolo Perego
Esempio 0
Le parti principali del firmware
11
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.
Paolo Perego
La programmazione
13
Paolo Perego
14
Esempio 1
Accendiamo il led sulla scheda
Cosa serve:
Example1
Arduino
Paolo Perego
Esempio 1
Accendiamo un led
15
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
Paolo Perego
Esempio 2
Breadboard
19
Paolo Perego
Fritzing
http://fritzing.org/
20
Paolo Perego
Fritzing
21
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
Paolo Perego
Fritzing
Aggiungere componenti
27
Paolo Perego
Esempio 2
Costruiamo il circuito
28
Paolo Perego
Esempio 2
Perch la resistenza
29
3,5V
5V
1,5V
15mA
Paolo Perego
Esempio 2
Il valore della resistenza
30
Paolo Perego
Esempio 2
Accendiamo un led
31
Paolo Perego
Esempio 2
Non esiste solo un modo per fare le cose
Carichiamo lesempio Example2_2
time = millis();
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
Paolo Perego
Esempio 3
Il firmware
35
Paolo Perego
Esempio 3
Un po di interattivit pulsante e led.
Paolo Perego
36
Esempio 3
Debounce o Antirimbalzo
Carichiamo lesempio Example3_2
Lantirimbalzo cos strutturato
Paolo Perego
37
Esempio 3
Debounce o Antirimbalzo
38
ATTENZIONE: Se modifichiamo il
valore di DebounceDelay per esempio
a 1000, Arduino accetter la
pressione del pulsante solo una volta
al secondo.
Paolo Perego
39
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
Paolo Perego
Esempio 4
Costruiamo il circuito
42
Paolo Perego
Esempio 4
Il firmware
43
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
Paolo Perego
48
Paolo Perego
Esempio 4bis
Il firmware
49
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
Paolo Perego
Esempio 5
Un po di musica
53
Esempio 5Inno
Il firmware
54
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.
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
Paolo Perego
59
Esempio 7 e 8
Comunichiamo con Processing
Presentazione Processing
Software Processing
Paolo Perego
Processing
60
Paolo Perego
61
Esempio 0 Processing
Il primo programma
Cosa serve:
example0
Paolo Perego
Esempio 0
Il primo programma
62
Paolo Perego
63
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
Paolo Perego
65
rettangolo
stroke(R,G,B,alpha); Colore del contorno
strokeWeight(width); Spessore del bordo
noStroke(); Nessun bordo
noFill(); Nessuno colore di riempimento
66
Esempio 1:
Altre forme
67
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
Paolo Perego
Esempio 2: Un po di interattivit
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();
71
72
Esempio 3 Processing
Un po di interattivit: la tastiera
Cosa serve:
example3
Paolo Perego
Esempio3: Un po di interattivit
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
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
Paolo Perego
79
80
Esempio 6 Processing
Suoni
Cosa serve:
example6.1
example6.2
Paolo Perego
Esempio 6
Lets play some music
81
Paolo Perego
Esempio 6
Tastiera e musica con un po di grafica
82
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
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
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
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
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
Paolo Perego
94
Siti utili:
95
Arduino Playground:
http://www.arduino.cc/playground/
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
Paolo Perego