Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Workshop arduino

453 views

Published on

Concetti base e prove pratiche

Published in: Devices & Hardware
  • Be the first to comment

Workshop arduino

  1. 1. Flaviano Fior
  2. 2. SOMMARIO.............................. ............................................. 1. Un po’ di ripasso 2. Sensori e componenti 3. Funzioni, Strutture di controllo, variabili e costanti 4. Comandi seriali 5. Librerie: cosa servono? 6. Display LCD 7. Motori SERVO 8. Relè 9. E’ ora di far pratica 10.Riferimenti 11.Contatti
  3. 3. 1. Un po’ di ripasso................................................................... ........ Arduino è una piattaforma di prototipazione elettronica open-source che si basa su hardware e software flessibili e facile da usare. E’ stata creata per artisti, designer, makers e chiunque sia interessato a creare oggetti o ambienti interattivi
  4. 4. 1. Un po’ di ripasso................................................................... ........ Perché usare Arduino? . Economico . Cross-Platform . Ambiente di sviluppo semplice e chiaro . Software open-source ed estendibile . Hardware open-source ed estendibile
  5. 5. 1. Un po’ di ripasso................................................................... ........ Come alimentare Arduino? . Porta USB . Alimentatore esterno . Batteria N.B. La piattaforma può operare con una tensione esterna tra 6-20Vcc. E’ consigliabile usare un’alimentazione compresa tra i 7 e 12Vcc.
  6. 6. 1. Un po’ di ripasso................................................................... ........ POWER PIN . Vin = pin per alimentare Arduino con batteria esterna . 5V = pin che fornisce in uscita una tensione di 5V stabilizzata . 3V3 = pin che fornisce in uscita una tensione di 3.3V (Imax=50mA) . GND = Ground pin . IOREF = pin che fornisce in uscita la tensione di lavoro di Arduino . RESET = fornendo in ingresso il valore LOW resetta il microcontrollore (quella con la quale stiamo alimentando). Uno Shield correttamente progettato è in grado di leggere il riferimento IOREF e scegliere la tensione di lavoro (5V o 3.3V)
  7. 7. 1. Un po’ di ripasso................................................................... ........ INPUT OUTPUT DIGITAL PIN . Ognuno dei 14 PIN Digitali può essere utilizzato sia come input . Essi operano a 5V ed ogni pin fornisce in uscita una corrente Inoltre alcuni pin hanno delle funzioni speciali: . SERIAL: (0)RX (1)TX utilizzati per la comunicazione TTL Serial . EXTERNAL INTERRUPTS: 2 e 3 possono essere configurati per . PWM: 3, 5, 6, 9, 10, 11 forniscono un’uscita PWM a 8-bit . SPI: 10, 11, 12, 13, che permettono la comunicazione SPI . LED: 13, c’è un led sulla piattaforma collegato al pin 13 che si che output. massima di 40mA. ricevere un interrupt dall’esterno. accende ogni qualvolta l’uscita 13 è alta (5V).
  8. 8. 1. Un po’ di ripasso................................................................... ........ HOW TO SET DIGITAL PIN La modalità di uscita o di ingresso dei pin digitali (da 0 a 13) viene stabilita dalle seguenti istruzioni, dove alla variabile X va sostituito il numero che contraddistingue il pin sulla scheda: pinMode (X,OUTPUT) ; es. pinMode(3,OUTPUT) pin3 settato come uscita pinMode (X,INPUT); es. pinMode(8,INPUT) pin8 settato come ingresso Se il pin X è impostato come uscita, per settarlo a ‘1’ o a ‘0’ si utilizzano le seguenti istruzioni: digitalWrite(x,HIGH); digitalWrite(x,LOW); Per leggere il livello di un ingresso, si utilizza la seguente istruzione che trasferisce alla variabile ‘val’ i valori HIGH o LOW: Val=digitalRead(x);
  9. 9. 1. Un po’ di ripasso................................................................... ........ DIGITAL PIN: PWM Pulse Width Modulation è una tecnica utilizzata per la generazione di un segnale analogico utilizzando un uscita digitale. Variando la lunghezza dell’impulso si possono generare dei valori analogici da 0 a Vcc (5V per Arduino). Il duty-cycle è il rapporto tra il periodo dell’impulso al valore logico alto sul periodo in percentuale. La frequenza di lavoro del PWM di Arduino è circa 470Hz. Pilotando un led con questa tecnica si possono far assumere diverse gradazioni di luminosità, l’occhio non percepisce il continuo on/off ma un livello differente di luminosità.
  10. 10. 1. Un po’ di ripasso................................................................... ........ HOW TO SET PWM OUTPUT I pin 3,5,6,9,10,11, sono in grado di fornire uscite PWM, ossia onde quadre con duty cicle regolabile, tramite l’istruzione: analogWrite( X,valore) ; Dove valore è un numero compreso tra 0 e 255 cui corrisponde un duty cicle da 0 al 100% analogWrite( 3,127) ; genera sul pin 3 un’onda quadra con D.C. del 50% analogWrite( 5,63); genera sul pin 5 un’onda quadra con D.C. del 25% analogWrite( 3,191); genera sul pin 3 un’onda quadra con D.C. del 75%
  11. 11. 1. Un po’ di ripasso................................................................... ........ ANALOG INPUT PIN Arduino ha inoltre 6 ingressi analogici (A0…A5) ognuno dei quali ha una risoluzione a 10bit (cioè riconosce 2^10 = 1024 intervalli di tensione differenti). Il convertittore analogico-digitale (ADC) interno di Aduino è settato di default per acquisire valori tra 0 e 5V. Questo vuol dire che l’intervallo di 5V sarà diviso in 1024 intervalli. E se volessimo acquisire un segnale tra 0 e 3,3V? Parte dei livelli di quantizzazione sarebbero inutili. Per tale motivo è presente il pin 21 detto AREF, col quale per mezzo di una apposita funzione che non approfondiremo, si può fissare il valore di riferimento (il valore massimo) per l’ADC.
  12. 12. 1. Un po’ di ripasso................................................................... ........ ANALOG INPUT PIN L’istruzione che compie la lettura di un ingresso analogico (tra 0 e 5V) e di convertirlo in un numero compreso tra 0 e 1023 assegnadolo ad una variabile val, è la seguente: Val=analogRead(x); con x compreso tra 0 e 5 Per cui se Vin=5V sarà val=1023 se Vin=2,5V sarà val=511 se Vin=1V sarà val=205 Un altro pin molto utile è il RESET. Questo pin, se posto a 0, permette di resettare lo stato dell’arduino.
  13. 13. 1. Un po’ di ripasso................................................................... ........ RIASSUMENDO…. • Digital Due livelli 0-1(basso e alto) • Analog Misura la tensione (0-1023) • Digital PWM Simula l’analogica (0-254)
  14. 14. ........................................................................... AVVERTENZE 10 METODI CERTI PER DISTRUGGERE ARDUINO 1. Cortocircuitare pin I/O a terra. 2. Connettere pin I/O tra loro. 3. Applicare tensioni troppo alte sugli I/O. 4. Applicate tensione su Vin, ma a polarità inversa. 5. Applicare più di 5V sul pin 5V. 6. Applicare più di 3.3V sul pin 3.3V. 7. Cortocircuitare Vin a GND. 8. Applicare > 13V sul pin di reset. 9. Applicare tensione a 5V e caricare da Vin. 10. Eccedere la corrente totale del microcontrollore (200mA).
  15. 15. 2. Sensori e componenti......................................................... .................. . Diodi LED . Pulsanti . Potenziometri . Resistenze . Fotoresistenze . Altri tipi di senori
  16. 16. 2. Sensori e componenti......................................................... .................. Che cos’è un sensore? Un sensore è un dispositivo di ingresso usato per riconoscere o misurare una grandezza fisica. Alcuni esempi possono essere sensori che rilevano la luce, la pressione, la temperatura o anche sostanze chimiche (come, per esempio,il monossido di carbonio CO2).
  17. 17. 2. Sensori e componenti......................................................... .................. I DIODI LED Sfruttano la proprietà di alcuni semiconduttori di emettere fotoni (solitamente giunzioni p/n) grazie all’effetto noto come emissione spontanea. I più comuni hanno due terminali: anodo e catodo. Solitamente l’anodo è più lungo del catodo oppure il catodo presenta una piegatura. Per il collegamento: • Anodo al polo positivo • Catodo al polo negativo • Resistenza in serie all’alimentazione(limita la corrente in ingresso al led) Vled è la caduta di tensione nel led stesso che è proporzionale alla frequenza emessa. Calcolo della resistenza: R = (V-Vled)/I
  18. 18. 2. Sensori e componenti......................................................... .................. I DIODI LED Valori nominali • LED rosso = 1,6V • LED giallo = 2,2V • LED verde = 2,4V • LED bianco = 3,0V (warm or sunny) • LED bianco(cold) o blu = 3,5V Valori standard I valori di corrente sono intorno ai 10/15mA Esempio (LED rosso) R = (V--‐Vled)/I = (5--‐1,6)/0,016 = 218.77 Ohm = 220 Ohm (standard)
  19. 19. 2. Sensori e componenti......................................................... .................. PULSANTI I pulsanti permettono il passaggio o l’interruzione della corrente. Questo dispositivo, dopo il rilascio, ritorna nella posizione iniziale che aveva prima della sua pressione. Esistono due differenti tipi: Normalmente aperto Normalmente chiuso I pulsanti si definiscono chiusi (resistenza tra i suoi due terminali < 1 ohm = cortocircuito) quando consentono il passaggio di corrente. Invece se il passaggio è interdetto si definiscono aperti ( resistenza > 10 Mohm).
  20. 20. 2. Sensori e componenti......................................................... .................. PULSANTI – EFFETTO BOUNCING/DEBOUNCING Far accendere e spegnere un led premendo un pulsante non è facile come sembra. Perchè? Quando il bottone viene premuto, in realtà gli switch meccanici fanno un po’ di falsi contatti prima di stabilizzarsi.
  21. 21. 2. Sensori e componenti......................................................... .................. PULSANTI – EFFETTO BOUNCING/DEBOUNCING Come si può risolvere questo problema? Via software (bloccante): quando rileviamo lo stato che vogliamo, inseriamo un delay successivo per evitare i contatti dopo (5ms dovrebbero bastare). Via software (non bloccante): ad ogni giro del loop, se il bottone è nello stato “attivo” incrementiamo un contatore, se è nello stato “a riposo” lo mettiamo a zero. Impostiamo una soglia a quel contatore oltre cui il bottone è considerato premuto. Via hardware: con un filtro passa basso (con R=100k e C = 47nF, = R×C = 4.7ms)
  22. 22. 2. Sensori e componenti......................................................... .................. POTENZIOMETRI Il potenziometro è un dispositivo con un contatto strisciante sulla reistenza interna. Permette la variazione della tensione letta in uscita (attuato manualmente). Applicazioni: Joystick, robot, interruttori etc.. E’ caratterizzato da tre terminali ed una manopola, i terminali più esterni vanno connessi all’alimentazione (+ e - intercambili) mentre da quello centrale è possibile leggere la tensione che varia ruotando la manopola.
  23. 23. 2. Sensori e componenti......................................................... .................. RESISTENZE La resistenza ( o resistore che dir si voglia) è un componente fondamentale per qualsiasi circuito elettrico ; limita il passaggio della corrente opponendo una certa resistenza il cui valore viene espresso in ohm. Per calcolare la resistenza da applicare al nostro circuito bisogna utilizzare la prima legge di ohm : I=V/R in cui I è l’ intensità di corrente in ohm, V è la differenza di potenziale in Volt e R è la resistenza espressa in ohm. Quindi per trovare la resistenza basta invertire la formula ottenendo : R= V/I
  24. 24. 2. Sensori e componenti......................................................... .................. RESISTENZE: COME LEGGERLE? Normalmente le resistenze sono caratterizzate da 4 strisce colorate: per conoscere l’ordinamento delle strisce si guarda dove si trova quella che dista di più dalle altre (che nell’ordinamento sarà l’ultima) Significato dato dall’ordine: • 1a e 2a: valore numerico • 3a: moltiplicatore (normalmente in ohm) • 4a: tolleranza (percentuale) NOTA: Esistono anche resistenze a 6 strisce dette di precisione il loro significato è lo stesso di quelle presentate solo che anche la 3° è un valore numerico, la 4° il moltiplicatore ,la 5° la tolleranza e la 6° la variazione di tolleranza a seconda della temperatura.
  25. 25. 2. Sensori e componenti......................................................... .................. FOTORESISTENZE Le fotoresistenze sono dei componenti fotosensibili che riescono a variare il loro valore ohmico in funzione dell’intensità di luce che ricevono. Nello specifico hanno una resistenza inversamente proporzionale alla quantità di luce che le colpisce. Si può sostanzialmente definire come un potenziometro attuato con la luce.
  26. 26. 2. Sensori e componenti......................................................... .................. ALTRI SENSORI I sensori possono essere classificati in base al loro principio di funzionamento oppure al tipo di segnale in uscita, ma più comunemente vengono classificati in base al tipo di grandezza fisica che misurano, esempio: sensori di luce: fotocellule, fotodiodi, fototransistor sensori di suono: microfoni, idrofoni, altoparlanti sensori di accelerazione: accelerometri, sensori sismici sensori di temperatura: termometri, termocoppie sensori di calore: bolometri, calorimetri sensori di corrente: galvanometri, amperometri sensori di tensione: elettroscopio, voltmetri sensori di potenza: wattmetri sensori di pressione: barometri, pressostati, altimetri sensori di gas e flusso di liquidi: flussimetri, pluviometri sensori di movimento: radar, tachimetri, sensori PIR sensori di forza: celle di carico, estensimetri
  27. 27. STRUTTURA DEL PROGRAMMA La struttura base del linguaggio di programmazione di Arduino si sviluppa sulla definizione di due funzioni: void setup() e void loop(). Queste due funzioni racchiuderanno le necessarie impostazioni per il funzionamento dei dispositivi collegati con Arduino e i blocchi di istruzioni per svolgere quanto richiesto. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................
  28. 28. FUNZIONI Una funzione è un blocco di codice che viene eseguito nel momento in cui essa viene chiamata. void setup( ) La funzione setup( ) è la prima ad essere chiamata quando parte uno sketch o dopo ogni accensione o reset di Arduino. Viene utilizzata per inizializzare variabili, per impostare lo stato dei pin, per far partire le librerie da usare, per l'impostazione delle comunicazioni seriali. Questa funzione viene eseguita una sola volta. void loop( ) La funzione loop() fa proprio quanto suggerisce il proprio nome eseguendo ciclicamente il programma definito al suo interno. Permette l'esecuzione del programma, interagisce con la scheda Arduino. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................
  29. 29. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................STRUTTURE DI CONTROLLO Le strutture di controllo sono una serie di istruzioni utili a controllare i valori impostati ed ad agire in base ad essi. Possono essere: If…else Permette di prendere delle decisioni all’interno del programma, ma deve essere seguito da una domanda sotto forma di espressione tra parentesi. Se la domanda è vera tutto ciò che segue verrà eseguito. Se falso verrà eseguito tutto il codice che segue else. If è possibile usarlo senza usare necessariamente else.
  30. 30. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................STRUTTURE DI CONTROLLO For Ripete il codice per un numero predefinito di volte. Switch E’ come un interruttore nel corso del programma. Fa prendere al programma diverse direzioni in base al valore della variabile (il suo nome deve essere messo tra parentesi dopo switch). E’ utile perché può sostituire lunghe serie di if. Ci sono poi altre strutture che qui, per il momento, non tratteremo…
  31. 31. VARIABILI Le variabili permettono di assegnare un nome e memorizzare un valore numerico da utilizzare per scopi successivi nel corso del programma. Le variabili sono numeri che possono cambiare a differenza delle costanti che invece non possono mai cambiare. Tutte le variabili devono essere dichiarate prima del loro utilizzo. Dichiarare una variabile significa definire il tipo di valore, come ad es. int, float, long, assegnarle un nome e assegnarle opzionalmente un valore iniziale. Il valore della variabile può essere cambiato in ogni momento si necessita mediante operazioni aritmetiche o altri diversi tipi di assegnamenti. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................
  32. 32. VARIABILI Le variabili possono essere di vari tipi: Variabili globali Sono variabili che possono essere viste e usate da ogni istruzione e funzione del programma; nell'ambiente di sviluppo di Arduino, ogni variabile dichiarata al di fuori di una funzione (come ad es. setup(),loop(),..) è una variabile globale. Variabili locali Esse sono visibili solo dalle funzioni entro cui sono dichiarate o all'interno di funzioni o cicli dove vengono definite. È possibile avere due o più variabili locali che hanno lo stesso nome ma in differenti parti del programma, che contengono valori differenti. Bisogna essere sicuri che solo una funzione abbia accesso alla variabile in modo da ridurre la probabilità di errore della scrittura del codice. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................
  33. 33. VARIABILI Le variabili possono essere di vari tipi: Variabili Statiche La parola chiave Static viene utilizzata per creare una variabile che è visibile solo da una funzione. Diversamente dalla variabile locale, che viene creata e distrutta ogni volta che una funzione la chiama, la variabile Static persiste all'interno della funzione che la chiama, mantenendo il proprio dato all'interno della funzione chiamante. Le variabili dichiarate come statiche saranno definite ed inizializzate solo la prima volta che una funzione è chiamata. 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................
  34. 34. COSTANTI Le costanti sono variabili predefinite nel linguaggio per Arduino e vengono utilizzate per rendere il programma più semplice da leggere. Le costanti sono classificate in diversi gruppi: Costanti booleane ( true, false) Costanti INPUT, OUTPUT Costanti HIGH, LOW 3. Funzioni, Strutture di controllo, variabili e costanti...........................................................................
  35. 35. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE Tutte le schede Arduino hanno almeno una porta seriale (conosciuta come UART o USART) e gestite tramite Serial. Essa comunica con i pin digitali 0 (RX) e 1(TX) alla stessa maniera con cui comunica con il computer via USB (e infatti la porta Usb è collegata a questi pin). Se si stanno utilizzando le funzioni legate a Serial, non si possono usare i pin 0 e 1 per gli I/O digitali. Si può utilizzare il “monitor seriale” dell’IDE di Arduino per comunicare con la scheda, selezionando la stessa velocità in baud (bit al secondo) utilizzato nella chiamata di begin(). Non connettere questi pin direttamente con la porta seriale RS232 del computer; quest’ultima opera a +/- 12V contro i 0/5 V sui pin 0 e 1 e può danneggiare la scheda Arduino.
  36. 36. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE – SERIAL MONITOR E’ uno strumento che permette di visualizzare i dati provenienti dalla board Arduino e i dati che verranno comunicati per via seriale alla board. In particolare per comunicare con la nostra board attraverso la porta seriale si può scrivere del testo (che si può visualizzare sul Serial Monitor ) e poi premere invio. Per utilizzare Il Serial monitor è necessario inizializzarlo nel void setup ( ) con la funzione Serial.begin(baud rate), indicando il baud rate con il quale comunicare con il nostro Arduino.
  37. 37. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE Queste sono le funzione seriali cioè quelle funzioni che Arduino usa per comunicare tramite la porta Usb del nostro Pc. Si utilizza la libreria ‘Serial’ che è già presente all’interno di Arduino. Serial.begin(speed) - Prepara Arduino a mandare e a ricevere dati tramite porta seriale. Possiamo usare generalmente 9600 bits per secondo con la porta seriale dell’Arduino, ma sono disponibili anche altre velocità, di solito non si supera i 115.200 bps. Serial.begin(9600); Serial.print(data) - Invia valori alla porta seriale. Serial.print(‘’data’’) - Invia il testo ‘’data’’ alla porta seriale. Serial.println(data) - Invia il valore alla porta seriale e va a capo.
  38. 38. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE Serial.print(data,codifica) - Invia alcuni dati alla porta seriale. Serial.print(32); // stampa 32 Serial.Print(32, DEC); // stampa 32 come sopra Serial.Print(32, OCT); // 40 (stampa10 in ottale) Serial.Print(32 , BIN); // 100000 (stampa 10 in binario) Serial.Print(32 , BYTE); // “Space” valore associato nella tabella ASCII
  39. 39. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE Serial.end( ) ; Disabilita la comunicazione seriale, permettendo ai pin RX e TX di essere nuovamente utilizzati come I/O generali. Per riabilitare la comunicazione seriale basta nuovamente richiamare la funzione Serial.begin(). Questa funzione non restituisce alcun valore e non richiede alcun parametro.
  40. 40. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE Serial.read( ) ; Legge dalla seriale (in particolare dal serial monitor) e il dato viene portato “dentro Arduino”, o meglio assegnato ad una Variabile. La funzione non necessita di alcun parametro e restituisce il primo byte disponibile nel buffer di lettura (tipo int) oppure -1 se non c'è alcun dato inviato.
  41. 41. 4. Comandi seriali..................................................................... ...... COMUNICAZIONE SERIALE Serial.write(valore) ; Serial.write(stringa) ; Serial.write(buf,len) ; Scrive i dati binari sulla porta seriale. Questi dati sono inviati come byte o serie di byte; per inviare i caratteri rappresentati le cifre di un numero usare invece la funzione print(). Il parametro ‘valore’ è il valore da trasmettere come singolo byte; il parametro ‘stringa’ è una stringa da spedire come serie di byte; il parametro ‘buf’ è un array da spedire come serie di byte; il parametro ‘len’ rappresenta la lunghezza dell’Array, ossia il N° di byte che lo compongono.
  42. 42. 5. Librerie: cosa servono?............................................................... ............ LIBRERIE Le librerie estendono il linguaggio base aggiungendo funzionalità extra. Le librerie si dividono in 3 tipi: Standard: sono già presenti nell’ IDE. Terze parti: si scaricano da internet. Personali: possono essere scritte da chiunque le necessiti.
  43. 43. 5. Librerie: cosa servono?............................................................... ............ LIBRERIE STANDARD – Come caricarle? Alcune librerie sono ‘’dedicate’’ a schede particolari (come Leonardo o due) Le librerie standard sono quelle rintracciabili al link: http://arduino.cc/en/Reference/Libraries
  44. 44. 5. Librerie: cosa servono?............................................................... ............ LIBRERIE TERZE PARTI Le librerie terze parti sono spesso distribuite in cartelle .zip Il nome della cartella è il nome della libreria. Le cartelle contengono due ‘gruppi’ di file: - Obbligatori (.cpp e .h) - Facoltativi ( Keywords.txt, examples, file aggiuntivi alla libreria)
  45. 45. 5. Librerie: cosa servono?............................................................... ............ LIBRERIE TERZE PARTI – Come caricarle? Procedere come segue: . Chiudere l’IDE . Estrarre il file complesso . Copiare la cartella sotto la cartella librerie - Windows: ‘’ My DocumentsArduinolibraries’’ - Osx: ‘’ Documents/Arduino/libraries’’ - Linux: ………Dipende! . Riavviare l’IDE
  46. 46. 5. Librerie: cosa servono?............................................................... ............ LIBRERIE PERSONALI Le librerie personali sono sostanzialmente composte da due file: . File header (con estensione .h): contiene le definizioni della libreria. . File sorgente (con estensione .cpp): contiene il codice sorgente dei metodi della libreria. Se si vuole che l’IDE identifichi le ‘definizioni’ dobbiamo creare anche il file keyworks.txt. Fare riferimento alla guida ufficiale per capire come costruire le librerie. http://arduino.cc/en/Hacking/LibraryTutorial
  47. 47. 6. Display LCD......................................................................... .. DISPLAY LCD ( Hitachi HD44780) I display LCD sono dei dispositivi in grado di visualizzare caratteri (LCD alfanumerici) o ‘’disegni’’ (LCD grafici). Come funzionano Di LCD ce ne sono vari tipi, prenderemo in esempio LCD da 16x2 (16 caratteri per 2 file), con 16 pin di collegamento. I dispaly di questo tipo possono essere pilotati con 4 o 8 bit, solitamente essi sono pilotati con 4 bit risparmiando pin di Arduino da destinare ad altri scopi. La differenza tra una modalità e l’altra è la velocità di trasferimento dell’informazione al display.
  48. 48. 6. Display LCD......................................................................... .. DISPLAY LCD ( Hitachi HD44780)
  49. 49. 6. Display LCD......................................................................... .. DISPLAY LCD ( Hitachi HD44780)DISPLAY LCD ( Hitachi HD44780) Pin 1: Vss – collegato al GND Pin 2: VDD – collegato a +5V Pin 3: V0 – controllo del contrasto dei caratteri. In genere viene collegato ad un potenziometro o trimmer in modo che si possa applicare sul Pin 3 una tensione che varia da 0 a +5V e al variare della tensione varia il contrasto. Pin 4: RS segnale di selezione registro – per selezionare il registro nel quale registrare ciò che appare sul display oppure selezionare il registro di funzionamento in cui viene memorizzata di volta in volta l’istruzione da eseguire per il funzionamento dell’LCD
  50. 50. 6. Display LCD......................................................................... .. DISPLAY LCD ( Hitachi HD44780)DISPLAY LCD ( Hitachi HD44780) Pin 5: segnale Read/Write – per selezionare la modalità di funzionamento: lettura/scrittura – collegato a GND Pin 6: segnale Enable (E) – per abilitare la scrittura nei registri Pin 7 al Pin 14: linee dati che si inviano o si ricevono dai registri del display. Pin 15: A (Anodo) – piedino a cui collegare una tensione positiva (nel caso del display descritto +4,2V) che serve per la retroilluminazione del display. Pin 16: K (Catodo) – piedino da collegare a GND per consentire la retroilluminazione.
  51. 51. 6. Display LCD......................................................................... .. DISPLAY LCD ( Hitachi HD44780) Per utilizzare il dispositivo con arduino bisogna utilizzare la libreria LiquidCrystal.h. I comandi principali sono: LiquidCrystal (d4, d5, d6, d7) Con questa istruzione definiamo i pin connessi ad Arduino. ES: LiquidCrystal lcd(7, 8, 9, 10, 11, 12); begin(#Colonne, #righe); Definiamo il n° di righe e di colonne del nostro display. ES: lcd.begin(16,2); clear(); Questa istruzione pulisce il display dai caratteri scritti prima ES: lcd.clear();
  52. 52. 6. Display LCD......................................................................... .. DISPLAY LCD ( Hitachi HD44780) setCursor(#colonne,#righe); Setta il cursore nella posizione che vogliamo, quindi dopo questa istruzione inizieremo a scrivere in un dato punto del display. Es:lcd.setcursor(0,0); Equivalente di home. print(data); Si usa per scrivere sul display, può essere usata anche con la sintassi print(data,base); in cui se data è esadecimale, base sarà 16, binario base 2 ecc ecc. Data può essere un int, byte, long int, char oppure string. ES: lcd.print("hello world");
  53. 53. 7. Motori SERVO.................................................................... ....... SERVO COMANDI I Servo comandi( più comunemente motori servo) sono degli attuatori con controllo di posizione integrato. Da cosa sono composti • Motore DC • Potenziometro • Riduttore di giri • Elettronica di controllo Come funzionano Comandati in tensione (ingresso segnale analogico o PWM) a seconda del valore in ingresso si posizionano ad un angolo preciso. L’elettronica interna è necessaria per fermare il motore quando ha raggiunto l’angolo (controllo lineare). E’ presente una “mappatura” tra valori di tensione ed angoli che dipende dalle specifiche del servocomando.
  54. 54. 7. Motori SERVO.................................................................... ....... SERVO COMANDI Il modo più semplice per pilotare i servomotori è utilizzare una libreria, che traduca angoli in segnali e ci eviti di dover impazzire con i dutycycle e i calcoli dei tempi; la libreria in questione è la Servo
  55. 55. 7. Motori SERVO.................................................................... ....... SERVO COMANDI Questa classe ti mette a disposizione alcuni metodi che semplificano di molto l’obiettivo: attach(): permette di specificare su quale pin è connesso il nostro servo e legarlo all’oggetto Servo. attached(): controlla che un oggetto di tipo Servo sia collegata ad un pin; detach(): rimuove il collegamento tra l’oggetto Servo e il pin a cui era legata.
  56. 56. 7. Motori SERVO.................................................................... ....... SERVO COMANDI read(): legge la posizione angolare del nostro servo, restituisce l’ultimo valore passato con write(). write(): impartisce al servo l’angolo a cui posizionarsi, su servo a rotazione continua imposta la velocità di rotazione 0=velocità massima in un senso, 90=fermo, 180=velocià massima nella direzione inversa. writeMicroseconds(): imposta la velocità di rotazione del servo, in un servo standard il valore va da 1000 a 2000, in un servo a rotazione continua si comporta allo stesso modo della write().
  57. 57. 7. Motori SERVO.................................................................... ....... SERVO COMANDI E’ importante tenere conto che con la classe Servo possiamo utilizzare tutti i pin digitali e analogici di Arduino e non solo le uscite di tipo PWM, questo disabilita la funzione analogWrite() Normalmente utilizzabile con le uscite PWM di Arduino.
  58. 58. 8. Relè........................................................................ ... RELE’ Sono dispositivi che possono venir paragonati ad interruttori azionati elettronicamente per attivare e disattivare apparecchi ad alte tensioni (lampadari, cancelli automatici, ventilatori, etc.) Attenzione a lavorare con la 220V!!!
  59. 59. 8. Relè........................................................................ ... RELE’ Quando nella bobina non passa corrente la molla tira l’armatura azionando il contatto NC (normally closed). Quando nella bobina passa corrente, il l’elettromagnete si attiva e l’armatura viene tirata azionando il contatto NO (normally open).
  60. 60. ........................................................................... DOMANDE?
  61. 61. ........................................................................... PICCOLA PAUSA PRIMA DI TUTTO GRAZIE MILLE PER LA PAZIENZA! Secondo, questa lezione è stata un po’ teorica ma era dovuto: Purtroppo i concetti fondamentali è bene saperli!
  62. 62. 9. E’ ora di far pratica................................................................... ........ DISPLAY LCD – Esercizio 1
  63. 63. 9. E’ ora di far pratica................................................................... ........ DISPLAY LCD – Esercizio 1 Il primo esercizio consiste nel far apparire una scritta sul display. Nel nostro caso: Make FabLab!
  64. 64. 9. E’ ora di far pratica................................................................... ........ DISPLAY LCD – Esercizio 2 Il secondo esercizio consiste nel far apparire una scritta sul display facendola scorrere verso sinistra. Nel nostro caso: Benvenuti al FabLab! NB. Il circuito è sempre lo stesso.
  65. 65. 9. E’ ora di far pratica................................................................... ........ DISPLAY LCD – Esercizio 3 Il secondo esercizio consiste nel far apparire una scritta sul display facendola scorrere verso sinistra e poi verso destra . Nel nostro caso: Super FabLab! NB. Il circuito è sempre lo stesso.
  66. 66. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 1
  67. 67. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 1 In questo esempio vedremo il servomotore compiere una rotazione da 0 a 180°e viceversa. Con l’istruzione Servo myservo; dichiariamo un oggetto di tipo Servo, e lo chiamiamo myservo. Invece per indicare a quale pin è collegato l’oggetto myservo usiamo la funzione attach(), di cui possiamo vedere la sintassi all’interno del void setup(). Per pilotare il servo usiamo la funzione myservo.write(pos) dove con pos si indica la posizione in gradi.
  68. 68. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 2
  69. 69. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 2 Nel secondo esempio comanderemo la rotazione di un servomotore con un potenziometro o trimmer.
  70. 70. 9. E’ ora di far pratica................................................................... ........ IR – Esercizio 1 In questo esercizio eseguiamo una decodifica del codice di un telecomando. Fare riferimento all’esercizio presente sulla usb Decodifica_Codice.ino
  71. 71. 9. E’ ora di far pratica................................................................... ........ IR – Esercizio 2 Nell’esercizio 2 utiliziamo il codice del telecomando per comandare dei dispositivi. Come base di partenza far riferimento allo sketch: IR_Remote.ino
  72. 72. 10. Riferimenti.......................................................... ................. https://arduino.cc/en/Reference/HomePage http://arduino.cc/en/Reference/Libraries http://arduino.cc/en/Hacking/LibraryTutorial http://arduino.cc/en/Reference/LiquidCrystal
  73. 73. 11. CONTATTI............................................................. .............. Per qualsiasi dubbio o richiesta non esitate a contattarci! info@fablabalessandria.it www.fablabalessandria.it http://www.facebook.com/search/top/?q=fablab%20alessandria Oppure contattatemi personalmente su facebook: Flaviano Fior Trovate le slide e altro sul mio profilo slide share: http://www.slideshare.net/FlavianoFior
  74. 74. ........................................................................... Fine Alcune semplici domande: Cosa cambiereste del corso? Cosa vorreste esaminare nel prossimo incontro? Inoltre, Avete un progetto? Idee da realizzare? Volete semplicemente far pratica? Venite al FabLab e insieme lo SVILUPPEREMO!

×