Il 0% ha trovato utile questo documento (0 voti)
7 visualizzazioni69 pagine

A01 Intro Arduino

Il documento descrive la piattaforma Arduino, una soluzione open-source per la prototipazione rapida di sistemi hardware-software. Viene presentata la capacità di Arduino di interagire con vari sensori e attuatori, oltre a fornire dettagli tecnici su diverse schede Arduino, come Arduino Uno, Mega, e MKR1000. Infine, il documento elenca il materiale necessario per le esercitazioni e le possibilità di utilizzo di Arduino in progetti meccatronici e IoT.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
7 visualizzazioni69 pagine

A01 Intro Arduino

Il documento descrive la piattaforma Arduino, una soluzione open-source per la prototipazione rapida di sistemi hardware-software. Viene presentata la capacità di Arduino di interagire con vari sensori e attuatori, oltre a fornire dettagli tecnici su diverse schede Arduino, come Arduino Uno, Mega, e MKR1000. Infine, il documento elenca il materiale necessario per le esercitazioni e le possibilità di utilizzo di Arduino in progetti meccatronici e IoT.
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 69

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

Potrebbero piacerti anche