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

Slides:



Advertisements
Presentazioni simili
Modulo 4 – Seconda Parte Foglio Elettronico
Advertisements

APRIRE PROGRAMMA DI POSTA OUTLOOK EXPRESS
AVVIARE IL COMPUTER WINDOWS ‘98 Queta fase è definita BOOTSTRAP
Power Point Lezione breve.
Che cosè? Che cosè? Che cosè? Che cosè? Come creare una pagina… Come creare una pagina… Come creare una pagina… Come creare una pagina… inserire testi,immagini,tabelle…
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
Comunicare con la posta elettronica (7.4)
CONOSCIAMO IL WINDOWS '95.
STRUMENTI DI PRESENTAZIONE
Sistema Operativo Preparazione e prima fase di installazione del sistema Reperite tutti i driver più aggiornati per il vostro hardware scaricandoli da.
Quinta lezione: Stampare e salvare una mappa Stampa e salvataggio in vari formati. Utilizzare il prodotto per inserirlo in relazioni Utilizzarlo come base.
FONDAMENTI DI INFORMATICA
OPEN OFFICE e IMPRESS Masucci Antonia Maria.
USARE LA VIDEOSCRITTURA
Breeze meeting Istruzioni per l’uso - corsisti
Introduzione agli stream e alle classi
Benvenuto nella presentazione “esercitazione” di Power Point.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
Gestione delle stampe Collegamento fra il mondo virtuale e quello reale, per certi aspetti, è il documento stampato. Lezione 4 Modulo 2 ECDL.
DBMS ( Database Management System)
Istruzioni d’uso per invio telematico
Corso Informatica di Base Menu del disegno
WINDOWS XP PRIMI PASSI. Caratteristiche del sistema Le caratteristiche di base del PC (tipo e versione del sistema operativo installato, tipo e velocità
POWERPOINT Breve guida all’uso di uno strumento utile per le presentazioni Fare un ipertesto, per alunni e docenti, può essere una grande ambizione,
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Informatica Avanzata Trattamento di Foto e Immagini Digitali UNI3 - NICHELINO Lez. N Dicembre 2008 di Pautasso Luciano Lez.
Prof. Salvatore Riegler
Costruire pagine per il WEB
Piattaforma Arduino Arduino uno Arduino Mega.
66. Rubrica La Rubrica vi consente di raccogliere gli indirizzi di posta elettronica. Potete accedere dalla rubrica dallinterno del programma di posta.
Lavagna interattiva Smart Board Installazione Presentazione
1. Per cominciare Le operazioni di base per utilizzare il computer sono: laccensione e lo spegnimento. Mentre laccensione del PC si ottiene premendo il.
Applicativo Power Point
Le maschere Una maschera è un oggetto del database utilizzato principalmente per l'inserimento, la visualizzazione e la modifica dei dati in un database.
Strumenti di Presentazione (Microsoft PowerPoint 2000)
Con il computer si impara meglio!
“LIM un'innovazione per l'insegnamento”
Costruire una tabella pivot che riepiloghi il totale del fatturato di ogni agente per categorie di vendita, mese per mese. Per inserire una tabella pivot.
Modulo 6 Test di verifica
POSTA ELETTRONICA La posta elettronica è un’innovazione utilissima offerta da Internet. E’ possibile infatti al costo di una telefonata urbana (cioè del.
INSEGUITORE SOLARE CON ARDUINO
Per questo organizza un corso di Arduino per tutti i soci Amon e GMS.
Workshop Teachers For Teachers 23 – 24 settembre 2013
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
Word: gli strumenti di formattazione
Lezione 23 Riccardo Sama' Copyright  Riccardo Sama' Lavorare con gli strumenti.
Prof. Giuseppe Boncoddo
Lezione 11 Riccardo Sama' Copyright  Riccardo Sama' Excel.
1 Corso di idoneità informatica Autore: G. Lorusso URL: Università del Piemonte Orientale.
Tag FRAMESET. I frame sono un particolare tipo di struttura HTML, che consente di suddividere la finestra del browser in diversi riquadri distinti. Un'insieme.
Arduino: introduzione alla programmazione
arduino: dalla teoria alla pratica
ESPANSIONE Personalizzare l’interfaccia utente 2010.
INSERIMENTO FILE XML PER UTENTI CAF Procedura di Inserimento di File XML per le utenze CAF Università degli Studi Roma Tre (A.A. 2007/08)
ELABORAZIONE TESTI MICROSOFT WORD EM 09.
Primi passi con Easy Reg 1.23: installazione del software
Internetworking V anno.
9 Word terza lezione.
Lezione 7 Riccardo Sama' Copyright  Riccardo Sama' Excel.
Hardware necessario Una board Intel galileo Un alimentatore Dc 7-15 v
Lezione 16 Riccardo Sama' Copyright  Riccardo Sama' Excel: strumenti per creare.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Sintesi da pag. 8 a pag. 21. L’ Informatica è la scienza che studia il trattamento automatico dell’informazione. Deriva dal francese «Informatique»
Istruzioni per aggiornamento driver consolle Coloro che avessero aggiornato il proprio Mac o avessero acquistato un Mac con sistema operativo “El Capitain”
Corso base Lezione 1: affrontare l'emergenza. Il pc è come una casa... Ogni parte ha una sua funzione e utilità...
MyVue FAQ Linea di supporto (Radiologia Ospedale del Delta): , orario: FAQ (Frequently Asked Questions) In caso avessi bisogno di ulteriore.
Hands-On Arduino Come collegare i sensori ad Arduino P. Perego- Politecnico di Milano AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno.
Microsoft Word Idoneità Informatica. Inserire simboli Clic su Inserisci, nella Barra dei menu. Clic su Simbolo. Nella finestra Simbolo, vengono visualizzati.
Anno scolastico 2014/2015 Classe 1° B Venerucci Samuele.
ISTITUTO TECNICO – SETTORE TECNOLOGICO
Transcript della presentazione:

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

Paolo Perego Setup iniziale Prepariamo il computer per l’utilizzo di Arduino e Processing Cosa occorre: Arduino.zip da arduino.cc Processing.zip da Fritzing.zip da fritzing.org ArduinoExamples.zip Processing.Examples.zip FritzingCircuits.zip Scheda Arduino 2

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

Paolo Perego Preparare il sistema per Processing Donwload ed installazione: -Scaricare il software dal sito -Scaricare ProcessingExamples.zip dal sito del professore o dal sito 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 -Scaricare FritzingCircuits.zip dal sito del professore o dal sito 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 0 Integrated Development Environment (IDE) 8 L’IDE 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 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 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…)

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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.

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

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.

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

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

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

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.

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

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

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

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.

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.

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

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

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

Paolo Perego Esempio 5 Costruiamo il circuito 51

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.

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

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 Esempio 6 Comunichiamo con il computer: inviamo dati! Cosa serve: example6 Scheda Arduino Circuito Esempio 5 55

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.

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.

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

Paolo Perego Esempio 7 e 8 Comunichiamo con Processing Presentazione 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 0 Il 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 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

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

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

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.

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_1 example2_2 69

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.

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

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 è premuto keyReleased()  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 4 Inseriamo un’immagine 76

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

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

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

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

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

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.

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: 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. 84

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

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

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

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à);

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.

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

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

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.

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

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

Paolo Perego Siti utili: 95 Arduino Playground: Freeduino (the best): Instructables: Sparkfun: Make magazine: Hack n mod: CircuitLake: NuElectronics: Seeduino:

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: Buon divertimento!!! 96