SlideShare a Scribd company logo
Flaviano Fior
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
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
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
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.
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)
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).
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);
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à.
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%
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.
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.
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)
........................................................................... 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).
2. Sensori e
componenti.........................................................
..................
. Diodi LED
. Pulsanti
. Potenziometri
. Resistenze
. Fotoresistenze
. Altri tipi di senori
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).
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
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)
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).
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.
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)
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.
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
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.
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.
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
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...........................................................................
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...........................................................................
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.
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…
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...........................................................................
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...........................................................................
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...........................................................................
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...........................................................................
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.
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.
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.
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
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.
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.
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.
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.
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
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)
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
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
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.
6. Display
LCD.........................................................................
..
DISPLAY LCD ( Hitachi HD44780)
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
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.
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();
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");
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.
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
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.
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().
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.
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!!!
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).
........................................................................... DOMANDE?
........................................................................... 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!
9. E’ ora di far
pratica...................................................................
........
DISPLAY LCD – Esercizio 1
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!
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.
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.
9. E’ ora di far
pratica...................................................................
........
SERVO – Esercizio 1
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.
9. E’ ora di far
pratica...................................................................
........
SERVO – Esercizio 2
9. E’ ora di far
pratica...................................................................
........
SERVO – Esercizio 2
Nel secondo esempio comanderemo la rotazione di
un servomotore con un potenziometro o trimmer.
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
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
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
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
........................................................................... 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!

More Related Content

What's hot

Relazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordano
Relazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordanoRelazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordano
Relazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordano
Stefano Gabetti
 
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
LAUMAS
 
Arduino&Raspberry
Arduino&RaspberryArduino&Raspberry
Arduino&Raspberry
Mirko Mancin
 
Lezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 oreLezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 ore
Mirko Mancin
 
Workshop arduino e sensori
Workshop arduino e sensoriWorkshop arduino e sensori
Workshop arduino e sensori
Paolo Aliverti
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
Mirko Mancin
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolante
Mirco Sbrollini
 
Arduino basic workshop
Arduino basic workshopArduino basic workshop
Arduino basic workshop
Daniele Iori
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Mauro Alfieri
 
Progettare con Arduino come un Ingegnere
Progettare con Arduino come un IngegnereProgettare con Arduino come un Ingegnere
Progettare con Arduino come un Ingegnere
Emanuele Bonanni
 
Arduino - il mio primo sketch
Arduino - il mio primo sketchArduino - il mio primo sketch
Arduino - il mio primo sketch
eugenio pombi
 
Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5
Michele Maffucci
 
Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6
Michele Maffucci
 
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Simone Fini
 
LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
Matteo Troìa
 
Encoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 ITEncoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 IT
Lika Electronic
 
Grix.it wood board usb
Grix.it    wood board usbGrix.it    wood board usb
Grix.it wood board usb
Davide Mercanti
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
OPS Italia
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
Biagio (Gino) Zingales Alì
 

What's hot (20)

Relazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordano
Relazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordanoRelazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordano
Relazione pdbp 2016 gruppo 05 brondino gabetti boscaglia giordano
 
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
 
Arduino&Raspberry
Arduino&RaspberryArduino&Raspberry
Arduino&Raspberry
 
Lezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 oreLezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 ore
 
Workshop arduino e sensori
Workshop arduino e sensoriWorkshop arduino e sensori
Workshop arduino e sensori
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolante
 
Arduino basic workshop
Arduino basic workshopArduino basic workshop
Arduino basic workshop
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino Genuino
 
Progettare con Arduino come un Ingegnere
Progettare con Arduino come un IngegnereProgettare con Arduino come un Ingegnere
Progettare con Arduino come un Ingegnere
 
Arduino - il mio primo sketch
Arduino - il mio primo sketchArduino - il mio primo sketch
Arduino - il mio primo sketch
 
Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5
 
Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6
 
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
 
LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
 
Encoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 ITEncoder Incrementali Programmabili IP58 IQ58 IT
Encoder Incrementali Programmabili IP58 IQ58 IT
 
Grix.it wood board usb
Grix.it    wood board usbGrix.it    wood board usb
Grix.it wood board usb
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
 
Ap6532 manuale di installazione
Ap6532 manuale di installazioneAp6532 manuale di installazione
Ap6532 manuale di installazione
 

Viewers also liked

Celi presentazione @clic2014
Celi presentazione @clic2014 Celi presentazione @clic2014
Celi presentazione @clic2014
CELI
 
Linux Board. Corso di prototipazione rapida
Linux Board. Corso di prototipazione rapidaLinux Board. Corso di prototipazione rapida
Linux Board. Corso di prototipazione rapida
Multiverso
 
Problem solving
Problem solvingProblem solving
Problem solving
PPMaggi
 
Arduino to build a temperature graph on Azure
Arduino to build a temperature graph on AzureArduino to build a temperature graph on Azure
Arduino to build a temperature graph on Azure
Angelo Gino Varrati
 
Mappa Project
Mappa ProjectMappa Project
Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...
Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...
Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...PhD. student @University of Catania,Italy
 
Esperienze di robotica creativa - Rospino
Esperienze di robotica creativa - RospinoEsperienze di robotica creativa - Rospino
Esperienze di robotica creativa - Rospino
Paolo Tosato
 
Introduzione alla programmazione
Introduzione alla programmazioneIntroduzione alla programmazione
Introduzione alla programmazione
Enrico La Sala
 
Domino 1 15
Domino 1 15Domino 1 15
Domino 1 15
Progetto ArAl
 
Analisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trendAnalisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trendAndrea Marchetti
 
Intelligenza 2436339
Intelligenza  2436339Intelligenza  2436339
Intelligenza 2436339imartini
 
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniBackdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Salvatore Lentini
 
Lie to me - Riconoscimento delle espressioni by G. Manno
Lie to me - Riconoscimento delle espressioni by G. MannoLie to me - Riconoscimento delle espressioni by G. Manno
Lie to me - Riconoscimento delle espressioni by G. Manno
Gabriele Manno
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
Luca Manara
 
Introduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettronicheIntroduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettroniche
Enrico La Sala
 
Didattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologieDidattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologie
caterina moscetti
 
Impariamo il linguaggio delle cose
Impariamo il linguaggio delle coseImpariamo il linguaggio delle cose
Impariamo il linguaggio delle cose
Alessandro Bogliolo
 
Oralità e scrittura
Oralità e scritturaOralità e scrittura
Oralità e scrittura
Federico Gobbo
 
Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"
Francesco Passantino
 

Viewers also liked (20)

Celi presentazione @clic2014
Celi presentazione @clic2014 Celi presentazione @clic2014
Celi presentazione @clic2014
 
Linux Board. Corso di prototipazione rapida
Linux Board. Corso di prototipazione rapidaLinux Board. Corso di prototipazione rapida
Linux Board. Corso di prototipazione rapida
 
Problem solving
Problem solvingProblem solving
Problem solving
 
Arduino to build a temperature graph on Azure
Arduino to build a temperature graph on AzureArduino to build a temperature graph on Azure
Arduino to build a temperature graph on Azure
 
Mappa Project
Mappa ProjectMappa Project
Mappa Project
 
Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...
Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...
Progetto Alternanza Scuola Lavoro - Riccardo Di Pietro UNIME - Istituto Major...
 
Esperienze di robotica creativa - Rospino
Esperienze di robotica creativa - RospinoEsperienze di robotica creativa - Rospino
Esperienze di robotica creativa - Rospino
 
Introduzione alla programmazione
Introduzione alla programmazioneIntroduzione alla programmazione
Introduzione alla programmazione
 
Domino 1 15
Domino 1 15Domino 1 15
Domino 1 15
 
Analisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trendAnalisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trend
 
Intelligenza 2436339
Intelligenza  2436339Intelligenza  2436339
Intelligenza 2436339
 
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniBackdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
 
dietro_il_coding_2
dietro_il_coding_2dietro_il_coding_2
dietro_il_coding_2
 
Lie to me - Riconoscimento delle espressioni by G. Manno
Lie to me - Riconoscimento delle espressioni by G. MannoLie to me - Riconoscimento delle espressioni by G. Manno
Lie to me - Riconoscimento delle espressioni by G. Manno
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
 
Introduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettronicheIntroduzione all’Iot e alle schede elettroniche
Introduzione all’Iot e alle schede elettroniche
 
Didattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologieDidattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologie
 
Impariamo il linguaggio delle cose
Impariamo il linguaggio delle coseImpariamo il linguaggio delle cose
Impariamo il linguaggio delle cose
 
Oralità e scrittura
Oralità e scritturaOralità e scrittura
Oralità e scrittura
 
Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"
 

Similar to Workshop arduino

Motorola solutions ap6532 installation guide italian (part no. 72 e-149368-...
Motorola solutions ap6532 installation guide   italian (part no. 72 e-149368-...Motorola solutions ap6532 installation guide   italian (part no. 72 e-149368-...
Motorola solutions ap6532 installation guide italian (part no. 72 e-149368-...Advantec Distribution
 
Progetto ldc
Progetto ldcProgetto ldc
Progetto ldc
aaa bbbb
 
Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopi
Flavio Falcinelli
 
2080-um002_-it-e.pdf
2080-um002_-it-e.pdf2080-um002_-it-e.pdf
2080-um002_-it-e.pdf
RosarioMartino3
 
Car accident detector
Car accident detectorCar accident detector
Car accident detector
VladimirZitoli
 
Arduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoTArduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoT
Biagio (Gino) Zingales Alì
 
Assoautomazione guida encoder
Assoautomazione guida encoderAssoautomazione guida encoder
Assoautomazione guida encoder
Lika Electronic
 
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v acIrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
Davide Mercanti
 
Ricambi Elettrovalvole - Catalogo Tamarri SpA
Ricambi Elettrovalvole - Catalogo Tamarri SpARicambi Elettrovalvole - Catalogo Tamarri SpA
Ricambi Elettrovalvole - Catalogo Tamarri SpA
Tamarri SpA
 
Teleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmetTeleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmet
Francesco Corucci
 
Dcmiini0 ivy r270-20131022-web
Dcmiini0 ivy r270-20131022-webDcmiini0 ivy r270-20131022-web
Dcmiini0 ivy r270-20131022-web
Manuelino da Mimosa
 
Progettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadioProgettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadioNelson Firmani
 
Arduino ai raggi x
Arduino ai raggi xArduino ai raggi x
Arduino ai raggi x
Emanuele Bonanni
 
Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...
Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...
Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...
Cristian Randieri PhD
 
CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...
CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...
CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...
Cristian Randieri PhD
 
Inseguitore solare
Inseguitore solareInseguitore solare
Inseguitore solare
aaa bbbb
 
Arduino ai raggi x rendiamolo professionale
Arduino ai raggi x  rendiamolo professionaleArduino ai raggi x  rendiamolo professionale
Arduino ai raggi x rendiamolo professionale
Emanuele Bonanni
 
Arduino 3
Arduino 3Arduino 3
Arduino 3
Elisa Rubino
 

Similar to Workshop arduino (20)

Motorola solutions ap6532 installation guide italian (part no. 72 e-149368-...
Motorola solutions ap6532 installation guide   italian (part no. 72 e-149368-...Motorola solutions ap6532 installation guide   italian (part no. 72 e-149368-...
Motorola solutions ap6532 installation guide italian (part no. 72 e-149368-...
 
Progetto ldc
Progetto ldcProgetto ldc
Progetto ldc
 
Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopi
 
2080-um002_-it-e.pdf
2080-um002_-it-e.pdf2080-um002_-it-e.pdf
2080-um002_-it-e.pdf
 
Car accident detector
Car accident detectorCar accident detector
Car accident detector
 
Arduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoTArduino - Le basi per iniziare nel mondo IoT
Arduino - Le basi per iniziare nel mondo IoT
 
Andrea_Gangemi_tesi
Andrea_Gangemi_tesiAndrea_Gangemi_tesi
Andrea_Gangemi_tesi
 
Assoautomazione guida encoder
Assoautomazione guida encoderAssoautomazione guida encoder
Assoautomazione guida encoder
 
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v acIrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
 
Ricambi Elettrovalvole - Catalogo Tamarri SpA
Ricambi Elettrovalvole - Catalogo Tamarri SpARicambi Elettrovalvole - Catalogo Tamarri SpA
Ricambi Elettrovalvole - Catalogo Tamarri SpA
 
Tesiandroid
TesiandroidTesiandroid
Tesiandroid
 
Teleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmetTeleoperating a robotic arm through a gyroscopic helmet
Teleoperating a robotic arm through a gyroscopic helmet
 
Dcmiini0 ivy r270-20131022-web
Dcmiini0 ivy r270-20131022-webDcmiini0 ivy r270-20131022-web
Dcmiini0 ivy r270-20131022-web
 
Progettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadioProgettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadio
 
Arduino ai raggi x
Arduino ai raggi xArduino ai raggi x
Arduino ai raggi x
 
Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...
Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...
Tesi di Laurea Danilo Lo Presti: CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENT...
 
CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...
CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...
CONTROLLO REMOTO DI APPARATI DELL'ESPERIMENTO GRAAL - Tesi di Laurea Danilo L...
 
Inseguitore solare
Inseguitore solareInseguitore solare
Inseguitore solare
 
Arduino ai raggi x rendiamolo professionale
Arduino ai raggi x  rendiamolo professionaleArduino ai raggi x  rendiamolo professionale
Arduino ai raggi x rendiamolo professionale
 
Arduino 3
Arduino 3Arduino 3
Arduino 3
 

Workshop arduino

  • 2.
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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.
  • 7. 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)
  • 8. 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).
  • 9. 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);
  • 10. 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à.
  • 11. 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%
  • 12. 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.
  • 13. 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.
  • 14. 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)
  • 15. ........................................................................... 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).
  • 16. 2. Sensori e componenti......................................................... .................. . Diodi LED . Pulsanti . Potenziometri . Resistenze . Fotoresistenze . Altri tipi di senori
  • 17. 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).
  • 18. 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
  • 19. 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)
  • 20. 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).
  • 21. 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.
  • 22. 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)
  • 23. 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.
  • 24. 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
  • 25. 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.
  • 26. 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.
  • 27. 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
  • 28. 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...........................................................................
  • 29. 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...........................................................................
  • 30. 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.
  • 31. 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…
  • 32. 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...........................................................................
  • 33. 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...........................................................................
  • 34. 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...........................................................................
  • 35. 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...........................................................................
  • 36. 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.
  • 37. 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.
  • 38. 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.
  • 39. 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
  • 40. 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.
  • 41. 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.
  • 42. 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.
  • 43. 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.
  • 44. 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
  • 45. 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)
  • 46. 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
  • 47. 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
  • 48. 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.
  • 50. 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
  • 51. 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.
  • 52. 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();
  • 53. 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");
  • 54. 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.
  • 55. 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
  • 56. 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.
  • 57. 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().
  • 58. 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.
  • 59. 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!!!
  • 60. 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).
  • 62. ........................................................................... 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!
  • 63. 9. E’ ora di far pratica................................................................... ........ DISPLAY LCD – Esercizio 1
  • 64. 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!
  • 65. 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.
  • 66. 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.
  • 67. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 1
  • 68. 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.
  • 69. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 2
  • 70. 9. E’ ora di far pratica................................................................... ........ SERVO – Esercizio 2 Nel secondo esempio comanderemo la rotazione di un servomotore con un potenziometro o trimmer.
  • 71. 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
  • 72. 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
  • 74. 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
  • 75. ........................................................................... 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!