arduino step by step -...
TRANSCRIPT
Arduino Step by Step
P. Perego- Politecnico di Milano
AA 2010/2011Facoltà del Design - Politecnico di Milano3.o anno – Disegno Industriale
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
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
Paolo Perego
Preparare il sistema per ArduinoStep 2
4) Unzip il file ArduinoExamples.zip nella cartella /arduino-0022/Example5) Eseguire l’IDE Arduino6) 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 l’installazione:1)Unzip Processing.zip, non necessita di installazione.1)Unzip ProcessingExample.zip nella cartella Processing/examples/3)Eseguire l’IDE Processing
5
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
Paolo Perego
Esempio 0
Iniziamo…
Cosa occorre:Example0
Scheda Arduino
7
Paolo Perego
Esempio 0Integrated Development Environment (IDE)
8
L’IDE Arduino è il software necessario per la generazione del firmware per il microcontrollore di Arduino.
Paolo Perego
Esempio 0Il primo programma
Carichiamo il primo esempio:
Tramite il menù file selezionare Examples └ EsempiLezione
└ Example0
9
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
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…)
Paolo Perego
Esempio 0Upload
Abbiamo creato il nostro primo Firmware, procediamo con la verifica del codice e l’Upload su ArduinoQuesto 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
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
Paolo Perego
Esempio 1
Accendiamo il led sulla scheda
Cosa serve:Example1
Arduino
14
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
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
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
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
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
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
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.
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
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
Paolo Perego
FritzingIl circuito virtuale
3) Abbiamo tutti i componenti che ci servono, dobbiamo ora piazzarli nella breadboard ed effettuare i collegmaenti.
24
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
Paolo Perego
FritzingIl circuito virtuale
Eccol il risultato finale.
26
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 virtuale2.Il disegno per lo schema elettrico3.Footprint per PCB
27
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.
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
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.
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
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.
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
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.
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.
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.
Paolo Perego
Esempio 3Debounce o Antirimbalzo
37
Carichiamo l’esempio Example3_2L’antirimbalzo è così strutturato
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.
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
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
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.
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
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 0V128 2,5V255 5V
Cambiando questo valore possiamo cambiare la luminosità del led.
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.
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.
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
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.
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
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 0V512 2,5V1024 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
Esempio 5 – Un po’ di rumore
Facciamo suonare un Buzzer
Cosa serve:example5example5INNO
Scheda ArduinoCircuito Esempio 4bisBuzzer o altoparlante
50
Paolo Perego
Esempio 5Costruiamo il circuito
51
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.
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
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.
Paolo Perego
Esempio 6
Comunichiamo con il computer: inviamo dati!
Cosa serve:example6
Scheda ArduinoCircuito Esempio 5
55
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.
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.
Paolo Perego
Esempio 6Comunicazione seriale
I dati inviati possono essere visualizzati tramite il Serial Monitor.
Apre serial monitor
58
Paolo Perego
Esempio 7 e 8
Comunichiamo con ProcessingPresentazione Processing
Software Processing
59
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.
Paolo Perego
Esempio 0 Processing
Il primo programma
Cosa serve:example0
61
Paolo Perego
Esempio 0Il primo programma
Carichiamo il primo esempio:
Tramite il menù file selezionare Examples └ EsempiLezione
└ Example0
62
Paolo Perego
Struttura del codice
La struttura del codice è molto simile ad Arduino:
Carichiamo l’esempio Example0Dichiarazione 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
Paolo Perego
Esempio 1 Processing
Disegniamo un quadrato
Cosa serve:example1.1example1.2
64
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
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 heightfill (R,G,B,alpha); Colore interno al rettangolostroke(R,G,B,alpha); Colore del contornostrokeWeight(width); Spessore del bordonoStroke(); Nessun bordonoFill(); Nessuno colore di riempimento
66
La posizione X e Y in pixel partono dall’angolo in alto a sinistra.
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;
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
Paolo Perego
Esempio 2 Processing
Un po’ di interattività: il mouse
Cosa serve:example2_1example2_2
69
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.
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 rilasciatomousePressed(); Mouse premuto (posso controllare quale tasto tramite mouseButton)mouseDragged(); Un tasto è premuto ed il mouse è mossomouseMoved(); Il mouse è mossomouseRelease(); Il tasto precedentemente premuto è rilasciato
Premendo il tasto destro lo sfondo cambia colore.
71
Paolo Perego
Esempio 3 Processing
Un po’ di interattività: la tastiera
Cosa serve:example3
72
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 è premutokeyReleased() Un tasto premuto è rilasciato
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.
Paolo Perego
Esempio 4 Processing
Inseriamo un’immagine
Cosa serve:example4
75
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
Paolo Perego
Esempio 5 Processing
Inseriamo il testo
Cosa serve:example5
77
Paolo Perego
Example 5Scrivere con Processing
Carichiamo l’esempio Example5
Generiamo un font attraveso il tool apposito:
Menù Tools └ Create Font…
78
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
Paolo Perego
Esempio 6 Processing
Suoni
Cosa serve:example6.1example6.2
80
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
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.
Paolo Perego
Esempio 7 Processing
Altre funzioni interessanti
Cosa serve:example7
83
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
Paolo Perego
Esempio 7
Comunichiamo con Processing: riceviamo dati dal pc
Cosa serve:x Arduinoexample7x Processingexample7_Arduino
Scheda ArduinoCircuito Esempio 5
85
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
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
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à);
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.
Paolo Perego
Esempio 8
Comunichiamo con Processing: trasmettiamo dati a processing
Cosa serve:x Arduino example6x Processingexample8 _Arduino
Scheda ArduinoCircuito Esempio 5
90
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
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.
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
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
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/
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