DIMEG
Dipartimento di Ingegneria Meccanica Energetica e Gestionale
Prototipazione Rapida
Arduino
Prof. Fabio Bruno
Arduino
Arduino è una
piattaforma Open-Source
che permette di
sviluppare rapidamente
sistemi integrati
hardware-software dotati
di svariate interfacce
uomo-macchina, sensori
e attuatori.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino
La board Arduino è capace di leggere input da
diverse tipologie di sensori e dispositivi di Human-
Machine-Interface (HMI) e trasformarli in output,
attivando ad esempio un motore, accendendo un
LED o pubblicando qualcosa online.
La board Arduino è dotata di un microprocessore
che esegue un programma definito dall’utente.
Per programmare Arduino si usa un linguaggio di
programmazione Arduino (basato su Wiring) e un
Software Arduino (IDE), basato su Processing.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Cosa posso fare con Arduino
• Creare il prototipo dell’elettronica di controllo di
un sistema meccatronico
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Cosa posso fare con Arduino
• Creare un’interfaccia uomo-macchina customizzata per
interagire con un software o con un prototipo virtuale
interattivo
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Cosa posso fare con Arduino
• Creare un’interfaccia uomo-macchina customizzata per
interagire con un software o con un prototipo virtuale
interattivo
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Materiale per le esercitazioni
• Scheda Arduino (Uno o Mega2560 o altro)
• LED di vario colore (almeno tre di colore verde, giallo e
rosso)
• Un pulsante (microswitch)
• Resistenze varie
• Un servo
• Un potenziometro
• Uno o più transistor
• Una breadboard
• Una ventina di cavetti
• Esp8266 o NodeMcu (Per usare il WiFi)
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Simulare Arduino
[Link]
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Architettura Arduino
Microcontrollore
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Memoria in Arduino
Nel microcontrollore ci sono:
- Flash memory (spazio per il
programma), dove lo sketch di
Arduino è salvato. Non volatili
- EEPROM è la memoria in cui poter
salvare le informazioni a lungo
termine.
- SRAM (Static Random Access
Memory) dove lo sketch crea e Volatile
processa le variabili.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Usare Arduino
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Comparazione tra Arduino
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino Uno
Microcontrollore: ATmega328
Tensione operativa: 5 V
Alimentazione:
- da 7 a 12 V (tramite plug)
- 5 V (tramite porta USB)
Ingressi/uscite Digitali: 14 (di cui 6 possono
essere utilizzate come uscite PWM)
Ingressi analogici: 6
Corrente Dc per pin I/O: 40 mA
Corrente DC per pin 3,3 V: 50 mA
Memoria Flash: 32 kB (di cui 0,5 kB
utilizzati dal bootloader)
Static RAM: 2 kB
EEPROM: 1 kB
Velocità di Clock : 16 MHz
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino Leonardo
• Microcontrollore: ATmega32u4
• Memoria Flash: 32 kB
• SRAM: 2.5 kB
• Velocità di Clock: 16 MHz
• Tensione operativa: 5 V
• Alimentazione: da 7 a 12 V (tramite
plug)
• Ingressi/uscite Digitali: 20 (di cui 7
possono essere utilizzate come
uscite PWM)
• Ingressi analogici: 12
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino Mega 2560
• Microcontrollore: ATmega2560
• Memoria Flash: 256 kB
• SRAM: 8 kB
• Velocità di Clock: 16 MHz
• Tensione operativa: 5 V
• Alimentazione: da 7 a 12 V (tramite
plug)
• Ingressi/uscite Digitali: 54 (di cui 15
possono essere utilizzate come
uscite PWM)
• Ingressi analogici: 16
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino DUE
• Microcontrollore: AT91SAM3X8E
• Memoria Flash: 512 kB (tutti disponibili
per le applicazioni utente)
• SRAM: 96 kB (due banchi 64kB e 32kB)
• Velocità di Clock: 84 MHz
• Tensione operativa: 3,3 V
• Alimentazione: da 7 a 12 V (tramite plug)
• Tensione di alimentazione (limiti): 6-20V
• Ingressi/uscite Digitali: 54 (di cui 12
possono essere utilizzate come uscite
PWM)
• Ingressi analogici: 12
• Uscite analogiche: 2 (DAC)
• Corrente DC per pin I/O: 130 mA
• Corrente DC per pin 3,3 V: 800 mA
• Corrente DC per pin 5 V: 800 mA
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino Micro
• Microcontrollore: ATmega32u4
• Tensione operativa: 5 V
• Alimentazione: da 7 a 12 V
• Tensione di alimentazione (limiti): 6-
20V
• Ingressi/uscite Digitali: 20 (di cui 7
possono essere utilizzate come uscite
PWM)
• Ingressi analogici: 12
• Corrente Dc per pin I/O: 40 mA
• Corrente DC per pin 3,3 V: 50 mA
• Memoria Flash: 32 kB (di cui 4 kB
utilizzati dal bootloader)
• SRAM: 2,5 kB
• EEPROM: 1 kB
• Velocità di Clock: 16 MHz
• Dimensioni: 48x18 mm
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino MINI LIGHT
Microcontrollore: ATmega328
Tensione operativa: 5 V
Tensione di ingresso: da 7 a 9 V
I/O digitali: 14 (di cui 6 possono
essere utilizzate come uscite PWM)
Ingressi analogici: 8
Corrente Dc per pin I/O: 40 mA
Memoria Flash: 32 kB (di cui 2 kB
utilizzati dal bootloader)
SRAM: 2 kB
EEPROM: 1 kB
Clock: 16 MHz
Dimensioni: 30 x 18 mm
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino Nano
• Microcontrollore: ATmega168/ATm
ega328
• Tensione operativa: 5 V
• Alimentazione: da 7 a 9 V
• Tensione di alimentazione
(limiti): 6-20V
• Ingressi/uscite Digitali: 14 (di cui 6
possono essere utilizzate come
uscite PWM)
• Ingressi analogici: 8
• Memoria Flash: 16/32 kB
• SRAM: 1/2 kB
• EEPROM: 0.512/1 kB
• Velocità di Clock: 16 MHz
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino MKR1000
• Arduino MKR1000 has been designed to offer a practical and cost
effective solution for makers seeking to add WiFi connectivity to their
projects with minimal previous experience in networking.
• The design includes a Li-Po charging circuit that allows the Genuino
MKR1000 to run on battery power or external 5V, charging the Li-Po
battery while running on external power. Switching from one source to
the other is done automatically.
• A good 32 bit computational power similar to the Zero board, the usual
rich set of I/O interfaces, low power WiFi with a Cryptochip for secure
communication, and the ease of use of the Arduino Software (IDE) for
code development and programming. All these features make this board
the preferred choice for the emerging IoT battery-powered projects in a
compact form factor.
Microcontroller SAMD21 Cortex-M0+
Operating Voltage 3.3 V
Input Voltage (recommended) 5V
Digital I/O Pins 8
PWM Digital I/O Pins 4
Analog Input Pins 6
Analog Output Pins 1
Flash Memory 256 Kb
SRAM 32 Kb
Clock Speed 48MHz
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Genuino 101
Microcontroller Intel Curie
Operating Voltage 3.3V (5V tolerant I/O)
Input Voltage
7-12V
(recommended)
Input Voltage (limit) 7-17V
14 (of which 4
Digital I/O Pins provide PWM
output)
PWM Digital I/O Pins 4
Analog Input Pins 6
DC Current per I/O
20 mA
Pin
Flash Memory 196 kB
SRAM 24 kB
Clock Speed 32MHz
LED_BUILTIN 13
Bluetooth LE, 6-axis
Features
accelerometer/gyro
Length 68.6 mm
Width 53.4 mm
Weight 34 gr.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Gemma
Microcontroller ATtiny85
Operating Voltage 3.3V
Input Voltage 4V-16V
Digital I/O Pins 3
PWM Channels 2
Analog Input
1
Channels
DC Current per I/O
20 mA
Pin
Absorption 9 mA while running
8 kB (ATtiny85) of
Flash Memory which 2.75 kB used by
bootloader
SRAM 512 Bytes (ATtiny85)
EEPROM 512 Bytes (ATtiny85)
Clock Speed 8 MHz
LED_BUILTIN 1
Diameter 27.94 mm
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Sintesi
Operating/Input Analog Digital
Name Processor CPU Speed EEPROM [kB] SRAM [kB] Flash [kB] USB
Voltage In/Out IO/PWM UART
Mega
ATmega2560 5 V / 7-12 V 16 MHz 16/0 54/15 4 8 256 Regular
2560 4
Micro ATmega32U4 5 V / 7-12 V 16 MHz 12/0 20/7 1 2.5 32 Micro
1
MKR10 SAMD21 Cortex-
3.3 V/ 5V 48MHz 7/1 8/4 - 32 256 Micro
00 M0+ 1
ATmega168 3.3 V / 3.35-12 V 8 MHz 0.512 1 16
Pro 6/0 14/6 -
ATmega328P 5 V / 5-12 V 16 MHz 1 2 32 1
Uno ATmega328P 5 V / 7-12 V 16 MHz 6/0 14/6 1 2 32 Regular
1
Zero ATSAMD21G18 3.3 V / 7-12 V 48 MHz 6/1 14/10 - 32 256 2 Micro 2
Due ATSAM3X8E 3.3 V / 7-12 V 84 MHz 12/2 54/12 - 96 512 2 Micro
4
[Link]
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Operating/Input
Name Processor CPU Speed Analog In/Out Digital IO/PWM EEPROM [kB] SRAM [kB] Flash [kB] USB UART
Voltage
101 Intel® Curie 3.3 V/ 7-12V 32MHz 6/0 14/4 - 24 196 Regular -
Gemma ATtiny85 3.3 V / 4-16 V 8 MHz 1/0 3/2 0.5 0.5 8 Micro 0
ATmega168V 2.7-5.5 V /
LilyPad 8MHz 6/0 14/6 0.512 1 16 - -
ATmega328P 2.7-5.5 V
2.7-5.5 V /
LilyPad SimpleSnap ATmega328P 8 MHz 4/0 9/4 1 2 32 - -
2.7-5.5 V
LilyPad USB ATmega32U4 3.3 V / 3.8-5 V 8 MHz 4/0 9/4 1 2.5 32 Micro -
Mega 2560 ATmega2560 5 V / 7-12 V 16 MHz 16/0 54/15 4 8 256 Regular 4
Micro ATmega32U4 5 V / 7-12 V 16 MHz 12/0 20/7 1 2.5 32 Micro 1
MKR1000 SAMD21 Cortex-M0+ 3.3 V/ 5V 48MHz 7/1 8/4 - 32 256 Micro 1
ATmega168 3.3 V / 3.35-12 V 8 MHz 0.512 1 16
Pro 6/0 14/6 - 1
ATmega328P 5 V / 5-12 V 16 MHz 1 2 32
3.3 V / 3.35-12 V 8 MHz
Pro Mini ATmega328P 6/0 14/6 1 2 32 - 1
5 V / 5-12 V 16 MHz
Uno ATmega328P 5 V / 7-12 V 16 MHz 6/0 14/6 1 2 32 Regular 1
Zero ATSAMD21G18 3.3 V / 7-12 V 48 MHz 6/1 14/10 - 32 256 2 Micro 2
Due ATSAM3X8E 3.3 V / 7-12 V 84 MHz 12/2 54/12 - 96 512 2 Micro 4
Esplora ATmega32U4 5 V / 7-12 V 16 MHz - - 1 2.5 32 Micro -
Ethernet ATmega328P 5 V / 7-12 V 16 MHz 6/0 14/4 1 2 32 Regular -
Leonardo ATmega32U4 5 V / 7-12 V 16 MHz 12/0 20/7 1 2.5 32 Micro 1
Mega ADK ATmega2560 5 V / 7-12 V 16 MHz 16/0 54/15 4 8 256 Regular 4
Mini ATmega328P 5 V / 7-9 V 16 MHz 8/0 14/6 1 2 32 - -
ATmega168 0.512 1 16
Nano 5 V / 7-9 V 16 MHz 8/0 14/6 Mini 1
ATmega328P 1 2 32
ATmega32U4 16 MHz 12/0 20/7 1 2.5 32 Micro 1
Yùn 5V
AR9331 Linux 400MHz 16MB 64MB
32 KB (ATmega32u4)
1 KB (ATmega32u4)/
6/0 20/6 2.5 KB of which 1 1
Arduino Robot ATmega32u4 5V 16 MHz 512 Kbit (I2C)
(ATmega32u4) 4 KB used by
bootloader
SAMD21
Cortex-M0+ 7 (ADC 8/10/12 bit)/1 1
MKRZero 3.3 V 48 MHz 22/12 No 32 KB 256 KB 1
32bit low power (DAC 10 bit)
ARM MCU
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Breadboard
La breadboard rappresenta un
mezzo comodo per poter creare
circuiti elettronici senza ricorrere
alla saldatura. La versione più
comune è costituita da 4 serie di
fori disposti in righe e colonne
1 4 separate da una scanalatura
centrale.
2 3 La 1 e la 4 servono per
l’alimentazione.
La 2 e la 3 invece servono per i
collegamenti tra i componenti.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Breadboard
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Regole per l’uso della breadboard
1) I componenti devono essere disposti rispettando le
perpendicolari.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Sensori e attuatori
Possiamo interagire con il mondo esterno attraverso:
• Sensori
• Attuatori
Detti anche trasduttori.
Un trasduttore che converte una grandezza fisica in segnale
elettrico è un sensore. Viceversa è un attuatore.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Analogico e Digitale
Arduino lavora solamente con grandezze digitali,
ma molto spesso le grandezze con cui abbiamo a
che fare sono analogiche.
Quindi è necessario trasformare le informazioni
digitali in analogiche.
Pulse Width Modulation (PWM)
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
PWM
Un’uscita analogica può essere simulata utilizzando
la modulazione della larghezza d’impulso.
Image from Theory and Practice of Tangible User Interfaces at UC Berkley
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
PWM
Si basa su un’onda quadra ad
alta frequenza dove lo stato
alto corrisponde all’ON e lo
stato basso all’OFF.
Variando il rapporto tra il
tempo di accensione e
spegnimento possiamo
“regolare” la luminosità del
LED.
Image from Theory and Practice of Tangible User Interfaces at UC Berkley
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Duty Cycle
Vout = ( Ton / T ) * 5V
Il duty cycle
esprime la
percentuale di
periodo in cui il
segnale è alto.
Fixed cycle length; constant number of cycles/sec
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Frequenza PWM
La frequenza di lavoro dei pin PWM su Arduino non
è la stessa per tutti i pin. Arduino dispone di tre
Timer distinti gestiti dall’Atmega328, e a ciascun
timer sono collegati 2 pin. Le frequenze di default
impostate sui PIN sono:
Il timer0 ha una frequenza doppia rispetto agli altri
due. Ciò significa che i pin 5 e 6 lavorano ad una
frequenza doppia rispetto i pin 3, 9, 10 e 11.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Modificare la frequenza PWM
Ciascun timer (TCCRx) possiede un prescaler, una
sorta di dividendo della frequenza PWM.
Il valore di default è 64.
Modificando quindi il prescaler di un Timer si può
variare la frequenza PWM dei pin collegati ad esso.
La funzione utilizzata per modificare il prescaler è:
setPwmFrequency(3, 8);
Dove il primo parametro rappresenta il pin su cui si
vuole impostare il prescaler ed il secondo è il
prescaler da impostare.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Modificare la frequenza PWM
Il Timer0 a cui sono collegati i pin 5 e 6, è
collegato anche alle funzioni di ritardo interne al
micro controllore, ad esempio delay() e millis()
ed è riferimento per la classe Servo e altre
librerie che sfruttano il Timer
dell’Atmega328/168, è quindi sconsigliato
modificare la frequenza di questo Timer per
evitare comportamenti imprevisti delle funzioni
citate.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Utilizzo del PWM
Comando:
analogWrite( pin, value)
• pin è il piedino su cui
inviamo il segnale.
• value è il duty cycle. Si
imposta con un valore
tra 0 e 255.
analogWrite(9, 128)
duty cycle 50%
analogWrite(11, 64)
duty cycle 25%
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Input analogico
• Risoluzione: rappresenta il numero dei vari livelli di tensione usati
per discretizzare il segnale in ingresso. L’intervallo dei valori di
risoluzione va da 256 (8 bits) a [Link] (32 bits).
• Arduino usa 1024 stati (10 bits)
• La più piccola variazione di tensione è di 5V/1024 = 4,8 mV
• Il massimo sample rate è 10.000 volte al secondo.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Primi passi: il LED
Light Emitting Diode – diodi che emettono luce quando
vengono attraversati dalla corrente.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Primi passi: il LED
Per valori di V compresi fra 0 e Vγ la
corrente assume valori trascurabili per
aumentare esponenzialmente dopo Vγ che
rappresenta la tensione di soglia e vale
circa 0,5 V per diodi al Silicio e circa 0,1 V
per diodi al Germanio.
Per tensioni V negative la corrente
inversa di saturazione I0 fluisce dal catodo
all'anodo e presenta valori assai ridotti.
Per tensioni negative inferiori a Vz (decine
o centinaia di volt) si può avere la rottura
del LED.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Primi passi: il LED
Light Emitting Diode – diodi che emettono luce quando
vengono attraversati dalla corrente.
E’ necessario aggiungere una resistenza in serie al LED per
limitare la corrente che lo attraversa.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Primi passi: il LED
• La corrente di esercizio per pilotare un diodo LED oscilla tra i 15 e i 20 mA.
• La caduta di tensione ai capi del LED varia in funzione del colore:
– colore rosso: 1,8 V
– colore giallo: 1,9 V
– colore verde: 2,0 V
– colore arancio: 2,0 V
– colore blu: 3,0 V
– colore bianco: 3,0 V
• Per calcolare la resistenza R da aggiungere in serie bisogna utilizzare la
seguente formula:
Vi = V + RI -> R = (Vi – V)/I
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Esempi di circuiti: in Serie
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Esempi di circuiti: in Parallelo
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Esempi di circuiti: in Serie e
Parallelo
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Alcuni componenti utili
• Condensatori
• Diodi
• Fotoaccoppiatori
• Pulsanti
• Resistori
• Transistor
• Potenziometri
• Motori DC, Stepper, Servomotori, ecc.
• Sensori di temperatura, di posizione, ecc.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Integrated Development
Environment (IDE)
Ambiente di sviluppo integrato
per la realizzazione di
programmi.
Esso permette la scrittura di
sketch, che compilati vengono
trasferiti sulla scheda dove
vengono eseguiti.
Il linguaggio di programmazione
è il C/C++.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Installazione
• Scaricare il software da [Link]
• Collegare la scheda Arduino al pc tramite il cavo
USB.
• Installare i driver.
• Riavviare il computer
Alla prima accensione settare in Settings: Tools –
Board il modello della scheda Arduino e in Settings:
Tools – Serial Port la porta attraverso la quale
comunica.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Impostazioni
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Interfaccia dell’ IDE
Serial Monitor
Compilazione
Upload
Salvare sketch
Nuovo sketch Aprire sketch
Status
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Memoria in Arduino
Se termina la memoria SRAM il programma potrebbe non andare a
buon fine in diversi modi inaspettati, potrebbe apparire correttamente
caricato, ma non eseguirsi o eseguirsi in modo strano. Per controllare
se ciò sta succedendo si potrebbero abbreviare le istruzioni o altre
strutture dati nello sketch (senza cambiare il codice), se questo si
esegue correttamente probabilmente sta finendo la SRAM. Ci sono
delle cose che si possono fare in questo caso:
- Se lo sketch dialoga con un programma che viene eseguito su un
computer, spostare dati o calcoli al computer, riducendo l’onere su
Arduino.
- Se si hanno dei vettori molto grandi, utilizzare dei tipi di dati più
leggeri, ad esempio un int occupa 2 bytes, mentre un byte ne
occupa solo 1 (ma può contenere un minore intervallo di valori).
- Se non è necessario modificare le istruzioni o i dati mentre lo sketch
è in esecuzione li si possono salvare nella memoria flash invece
della SRAM, per farlo si usa la keyword PROGMEM.
Per usare la EEPROM, vedere la libreria EEPROM.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Linguaggio di programmazione
Uno sketch si compone di due funzioni principali che non
accettano nessun parametro e non restituiscono alcun
valore:
• void setup () tutte le istruzioni contenute all’interno di
questo blocco vengono eseguite una sola volta al lancio
dello sketch.
• void loop () tutte le istruzionii contenute in questo
blocco vengono eseguite in continuazione.
E’ sempre possibile inserire parti di programma
all’interno di altre funzioni che vengono richiamate dal
programma principale all’occorrenza.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Linguaggio di programmazione
Uno sketch usa delle librerie di comandi che
consentono di controllare dei particolari dispositivi.
Le librerie possono essere scritte anche dall’utente
e vengono inserite con il comando:
#include <Libreria.h>
Il linguaggio di programmazione può essere diviso
in tre parti: strutture, variabili e costanti e funzioni.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Linguaggio di programmazione
Strutture: while, do…while, if, if…else, continue, return, for,
switch case, break.
Variabili e Memorizzano valori. Le costanti predefinite sono:
costanti: HIGH/LOW, INPUT/OUTPUT, true/false, Integer
constants.
Digital I/O: Time:
Funzioni: • pinMode(pin, mode) • unsigned long millis()
• digitalWrite(pin, value)
• int digitalRead (pin)
• unsigned long micros()
Analog I/O: • delay(ms)
• int analogRead(pin) • delayMicroseconds(us)
• analogWrite(pin, value) Math/Trigonometry/ecc
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Arduino
Il primo sketch
Esempio: accensione di un
led ad intermittenza,
collegato al digital pin 13.
Sulla scheda è già montato un
LED collegato al pin 13, per cui
basta un digitalWrite(13,HIGH)
per accenderlo (dopo averlo
impostato in output con
pinMode(13,OUTPUT) ).
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Il primo sketch
Esempio: accensione di un led.
Blocco di
settaggio.
Viene eseguito
una sola volta
Contiene il codice
che deve essere
eseguito.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Comunicazione Seriale
Image from [Link]
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Comunicazione
• Compilazione – trasforma lo sketch in istruzioni di tipo
binario.
• Uploading – invia queste istruzioni attraverso il cavo USB alla
scheda Arduino.
Dopo aver eseguito queste operazioni:
- RX si illumina quando Arduino sta
ricevendo le informazioni.
- TX quando Arduino sta trasmettendo
informazioni.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Open the Serial Monitor and
Upload the Program
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Due protocolli di comunicazione
Serial (TTL – Transistor Transistor Logic):
Image from [Link]
communication/
[Link]
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
USB Protocol
Molto più complicato
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Comunicazione Seriale
Esempio: Leggere
tramite seriale un
numero e visualizzarlo
dopo averlo
incrementato di 1.
Funzioni utilizzate:
•[Link]()
•[Link]()
•[Link]()
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Comunicazione seriale
Monitor Seriale di
input/output
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Alcune istruzioni
pinMode(pin, INPUT/OUTPUT)
digitalWrite(pin, HIGH/LOW) digitalRead()
analogRead()
analogWrite(pin, value) delay(n)
[Link]()
[Link]() [Link]()
[Link]
[Link]
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Esercizio: Semaforo
Circuito: realizzare un semaforo utilizzando tre LED (rosso, giallo, verde)
Sketch 1. Leggere da seriale i comandi:
• «a» per attivare il ciclo automatico del semaforo
– T(verde) = 40 % T
– T(verde+giallo) = 10% T
– T(rosso) = 50% T
• «r», «g», «v» per attivare rispettivamente i LED rosso, giallo, verde e sospendere il ciclo;
• «o» per spegnere tutti i LED e sospendere il ciclo.
Sketch 2. Realizzare un semaforo con ciclo automatico (come nello sketch precedente) leggendo il
tempo di ciclo da seriale nella forma «x» dove x è un intero.
Sketch 3. Realizzare un semaforo con tutte le funzionalità del primo modificando il comando «a» in
«ax»:
• «a» rappresenta la modalità automatica del semaforo
• «x» rappresenta il tempo del ciclo
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Istruzioni Stringhe
[Link]
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Circuito semaforo
Sketch 1
Leggo i comandi da seriale e controllo l’accensione dei led.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Sketch 2
Leggo il tempo di ciclo da seriale.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino
Sketch 3
Controllo sia sulla modalità, che sul tempo di ciclo nella modalità semaforo.
Corso di Prototipazione Rapida – Prof. [Link] Prototipazione rapida con Arduino