La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Arduino Step by Step P. Perego- Politecnico di Milano AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno – Disegno Industriale."— Transcript della presentazione:

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

2 Paolo Perego Setup iniziale Prepariamo il computer per l’utilizzo 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 2

3 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 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

4 Paolo Perego Preparare il sistema per Arduino Step 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

5 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

6 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

7 Paolo Perego Esempio 0 Iniziamo… Cosa occorre: Example0 Scheda Arduino 7

8 Paolo Perego Esempio 0 Integrated Development Environment (IDE) 8 L’IDE Arduino è il software necessario per la generazione del firmware per il microcontrollore di Arduino.

9 Paolo Perego Esempio 0 Il primo programma Carichiamo il primo esempio: Tramite il menù file selezionare Examples └ EsempiLezione └ Example0 9

10 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

11 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 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…)

12 Paolo Perego Esempio 0 Upload 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

13 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

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

15 Paolo Perego Esempio 1 Accendiamo 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

16 Paolo Perego Esempio 1 Il 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

17 Paolo Perego 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 17

18 Paolo Perego 18 Esempio 2 Collegando 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

19 Paolo Perego Esempio 2 Breadboard 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

20 Paolo Perego Fritzing http://fritzing.org/ Per realizzare il prototipo useremo i componenti e la breadboard, ma prima possiamo creare il nostro circuito virtualmente con Frizing! 20

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

22 Paolo Perego Fritzing Il 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

23 Paolo Perego Fritzing Il 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

24 Paolo Perego Fritzing Il circuito virtuale 3) Abbiamo tutti i componenti che ci servono, dobbiamo ora piazzarli nella breadboard ed effettuare i collegmaenti. 24

25 Paolo Perego Fritzing Il 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

26 Paolo Perego Fritzing Il circuito virtuale Eccol il risultato finale. 26

27 Paolo Perego Fritzing Aggiungere 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

28 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; l’anodo va collegato tramite il filo lungo al pin 13 di Arduino.

29 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. 1,5V 15mA 3,5V 5V

30 Paolo Perego Esempio 2 Il valore della resistenza 30 Il valore della resistenza è calcolato con la formula: R = (V Arduino – V led ) / I led = (5V – 1,5 V) / 10mA = 350Ω Se volessimo collegare più led la formula sarà: R = (V Arduino – (n°LED * V led )) / I led Si nota quindi che al massimo con aduino possiamo collegare 3 led in serie sullo stesso pin.

31 Paolo Perego Esempio 2 Accendiamo 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

32 Paolo Perego Esempio 2 Non 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.

33 Paolo Perego Esempio 3 – Un po’ d’interattività! 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 33

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

35 Paolo Perego Esempio 3 Il 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.

36 Paolo Perego Esempio 3 Un 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.

37 Paolo Perego Esempio 3 Debounce o Antirimbalzo 37 Carichiamo l’esempio Example3_2 L’antirimbalzo è così strutturato

38 Paolo Perego Esempio 3 Debounce 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.

39 Paolo Perego Arduino e la community online La 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

40 Paolo Perego Esempio 4 Regoliamo l’intensità 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 40

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

42 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

43 Paolo Perego Esempio 4 Il 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.

44 Paolo Perego Esempio 4 Il 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.

45 Paolo Perego Esempio 4 Il 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.

46 Paolo Perego Esempio 4bis Regoliamo l’intensità 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 46

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

48 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

49 Paolo Perego Esempio 4bis Il 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).

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

51 Paolo Perego Esempio 5 Costruiamo il circuito 51

52 Paolo Perego Esempio 5 Il 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.

53 Paolo Perego Esempio 5 Un 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

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

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

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

57 Paolo Perego Esempio 6 Il 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.

58 Paolo Perego Esempio 6 Comunicazione seriale I dati inviati possono essere visualizzati tramite il Serial Monitor. Apre serial monitor 58

59 Paolo Perego Esempio 7 e 8 Comunichiamo con Processing Presentazione Processing Software Processing 59

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

61 Paolo Perego Esempio 0 Processing Il primo programma Cosa serve: example0 61

62 Paolo Perego Esempio 0 Il primo programma Carichiamo il primo esempio: Tramite il menù file selezionare Examples └ EsempiLezione └ Example0 62

63 Paolo Perego Struttura del codice La struttura del codice è molto simile ad Arduino: Carichiamo l’esempio Example0 Dichiarazione Variabili in 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

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

65 Paolo Perego Esempio 1: Iniziamo a disegnare Disegno 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

66 Paolo Perego Esempio 1: Iniziamo a disegnare Disegno 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.

67 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;

68 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

69 Paolo Perego Esempio 2 Processing Un po’ di interattività: il mouse Cosa serve: example2_1 example2_2 69

70 Paolo Perego Esempio 2 Il 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.

71 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

72 Paolo Perego Esempio 3 Processing Un po’ di interattività: la tastiera Cosa serve: example3 72

73 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

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

75 Paolo Perego Esempio 4 Processing Inseriamo un’immagine Cosa serve: example4 75

76 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 4 Inseriamo un’immagine 76

77 Paolo Perego Esempio 5 Processing Inseriamo il testo Cosa serve: example5 77

78 Paolo Perego Example 5 Scrivere con Processing Carichiamo l’esempio Example5 Generiamo un font attraveso il tool apposito: Menù Tools └ Create Font… 78

79 Paolo Perego Example 5 Scrivere con Processing Carichiamo l’esempio Example5 Caricare il font Settare il font da utilizzare e la dimensione Settare il colore della scritta Scrivere 79

80 Paolo Perego Esempio 6 Processing Suoni Cosa serve: example6.1 example6.2 80

81 Paolo Perego Esempio 6 Let’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 e carichiamo il file mp3. Inizia l’esecuzione del file mp3

82 Paolo Perego Esempio 6 Tastiera 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.

83 Paolo Perego Esempio 7 Processing Altre funzioni interessanti Cosa serve: example7 83

84 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

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

86 Paolo Perego Esempio 7 - Arduino Ricevere 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

87 Paolo Perego Esempio 7 - Arduino Ricevere 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

88 Paolo Perego Comunicazione Arduino-Processing Ricevere 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à);

89 Paolo Perego Comunicazione Arduino-Processing Ricevere 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.

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

91 Paolo Perego Esempio 8 - Arduino Inviare 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

92 Paolo Perego Esempio 7 - Arduino Inviare 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.

93 Paolo Perego Esempio 8 - Arduino Inviare 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

94 Paolo Perego Comunicazione Arduino-Processing Lato Processing Andando a variare la resistenza variabile collegata ad Arduino, il valore letto viene riportato come grafico su processing. 94

95 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/

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


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

Presentazioni simili


Annunci Google