ELETTRONICA CON ARDUINO
version: 2319
workshop Arduino - FabLab Messina
Parte 1
workshop Arduino - FabLab Messina
TENSIONE E CORRENTE
Basi di elettronica
Resistenza (Ω)
Tensione (V)
Corrente (A)
workshop Arduino - FabLab Messina
TENSIONE (V)
workshop Arduino - FabLab Messina
CORRENTE (A)
workshop Arduino - FabLab Messina
RESISTENZA (Ω)
workshop Arduino - FabLab Messina
V = I × R
CIRCUITO ELETTRICO
workshop Arduino - FabLab Messina
Esempi di componenti elettronici
RESISTORE
=
workshop Arduino - FabLab Messina
Esempi di componenti elettronici
RESISTORE
R1
R2
=
Rtot
Collegamento in serie
Collegamento in parallelo
Rtot = R1 + R2
R1
R2
=
Rtot
R1 × R2
R1 + R2
Rtot =
workshop Arduino - FabLab Messina
PARTITORE DI TENSIONE
È un circuito composto da 2 o più resistenze connesse in serie.
Una tensione applicata ai capi della serie si ripartirà su ogni componente in base al proprio valore.
>
I
Vin
I =
R1+ R2
Vout = I × R2
Vout = Vin ×
R2
R1+ R2
workshop Arduino - FabLab Messina
POTENZIOMETRO
Un comune esempio di utilizzo di un partitore di tensione è il potenziometro.
A
B
C
workshop Arduino - FabLab Messina
DIODO
Il diodo è un componente elettronico a due terminali che permette il passaggio della corrente in un solo verso (dall'anodo verso il catodo) e di bloccarla in quello opposto.
Anodo
Catodo
workshop Arduino - FabLab Messina
LED
Light Emitting Diode, è un particolare diodo che, se polarizzato direttamente, è in grado di emettere luce.
workshop Arduino - FabLab Messina
LED
⚠️ Una corrente troppo elevata comporta la distruzione immediata del LED ⚠️
R
LED
5v
I�>
workshop Arduino - FabLab Messina
LED
SVOLGIMENTO: la tensione in eccesso rispetto a VLED è:
VR = VPIN - VLED = 5v - 2.2v = 2.8v
Dobbiamo fare in modo che sulla resistenza "cada" una tensione di 2.8v, ricordandoci che la corrente che l’attraversa deve essere 15mA.
La legge di Ohm ci ricorda che:� V = R × I → R =
V
I
La nostra resistenza quindi dovrà essere da:
R =
2.8v
0.015A
= 186.7Ω ≈ 180Ω
VPIN - VLED
ILED
=
⚠️ Una corrente troppo elevata comporta la distruzione immediata del LED ⚠️
R
LED
5v
I�>
workshop Arduino - FabLab Messina
SEGNALI ELETTRICI
DIGITALI
ANALOGICI
PWM
workshop Arduino - FabLab Messina
In logica binaria un segnale elettrico può assumere solo due valori: 0 e 1;
Non esistono valori intermedi, minori di 0 e maggiori di 1;
Un segnale digitale può assumere solo determinati valori, ad esempio uno alto e uno basso
t
V
esempio:
0 = BASSO = FALSO = 0v
1 = ALTO = VERO = 5v
SEGNALI DIGITALI
0v
5v
workshop Arduino - FabLab Messina
Un segnale si dice analogico se può assumere infiniti valori di tensione.
t
V
5v
SEGNALI ANALOGICI
workshop Arduino - FabLab Messina
SEGNALI ANALOGICI
ADC - Analog Digital Converter
t
n
1023
0
424
768
workshop Arduino - FabLab Messina
MODULAZIONE PWM
È una particolare tecnica attraverso la quale è possibile modulare nel tempo una tensione.
tON
tON + tOFF
D% = x 100
workshop Arduino - FabLab Messina
MODULAZIONE PWM
È una particolare tecnica attraverso la quale è possibile modulare nel tempo una tensione.
workshop Arduino - FabLab Messina
ARDUINO: cos'è?
workshop Arduino - FabLab Messina
ARDUINO: applicazioni
Arduino nel corso degli anni è stato utilizzato in centinaia di migliaia di progetti all'interno di diversi settori come l'arte, la moda, la musica, giocattoli, modellismo ma anche in applicazioni tecnologiche come macchine CNC, mezzi di trasporto o applicazioni industriali.
DART
Ultimaker
Farmbot
workshop Arduino - FabLab Messina
ARDUINO al plurale
workshop Arduino - FabLab Messina
ARDUINO shield
workshop Arduino - FabLab Messina
Arduino UNO: specifiche tecniche
workshop Arduino - FabLab Messina
workshop Arduino - FabLab Messina
SENSORI E ATTUATORI
workshop Arduino - FabLab Messina
FOTORESISTENZA
Sensori e attuatori
5v
Fotoresistenza
R
Arduino
Analog IN
workshop Arduino - FabLab Messina
TEMPERATURA E UMIDITÀ
Sensori e attuatori
workshop Arduino - FabLab Messina
SERVO
Sensori e attuatori
workshop Arduino - FabLab Messina
Parte 2
workshop Arduino - FabLab Messina
ARDUINO IDE
processo durante il quale uno sketch viene convertito in linguaggio macchina, comprensibile dal microcontrollore.
compile
upload
workshop Arduino - FabLab Messina
INTERFACCIA
Arduino IDE
Nome sketch
Barra strumenti
Barra menu
Campo codice sorgente
Barra di stato
workshop Arduino - FabLab Messina
Funzione: blocco di codice, racchiuso da una coppia di parentesi graffe, richiamabile attraverso uno specifico nome.
Sketch è il nome con il quale viene indicato il codice sorgente per Arduino.
I file contenenti gli sketch hanno estensione .ino.
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Funzione: blocco di codice, racchiuso da una coppia di parentesi graffe, richiamabile attraverso uno specifico nome.
Variabili globali
setup()
loop()
Sketch è il nome con il quale viene indicato il codice sorgente per Arduino.
I file contenenti gli sketch hanno estensione .ino.
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
/* questo è
un commento */
//questo è un commento
“Commentare” il codice:
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Variabile: porzione di memoria, identificata da un'etichetta, contenente un dato; deve essere dichiarata prima di essere usata;
Può contenere diversi tipi di dato che vanno indicati con:
tipo
nome
contenuto
ATTENZIONE: esistono delle parole riservate che non possono essere utilizzate come nomi per variabili e funzioni. Grazie al syntax highlighting è possibile riconoscere queste parole dal diverso colore con la quale vengono scritte (es. delay, HIGH, ecc).
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Istruzione:
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Strutture di controllo:
costrutto
if - else
costrutto
for
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Libreria:
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Oggetti:
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Principali funzioni (reference):
INPUT
oppure
OUTPUT
HIGH
oppure
LOW
COSA SONO GLI SKETCH
workshop Arduino - FabLab Messina
Componenti:
COMPONENTI DEL KIT
workshop Arduino - FabLab Messina
BREADBOARD
Componenti del KIT
workshop Arduino - FabLab Messina
Componenti:
BLINK
Sketch:
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
workshop Arduino - FabLab Messina
Componenti:
CONTROLLO LED DA SERIALE
Sketch:
int led = 13;
char carattere;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
carattere = Serial.read();
if (carattere == 'H') {
digitalWrite(led, HIGH);
}
else if (carattere == 'L') {
digitalWrite(led, LOW);
}
}
}
workshop Arduino - FabLab Messina
BUTTON
Componenti:
Sketch:
int pinBottone = 2;
int pinLed = 13;
int statoBottone = 0;
void setup() {
pinMode(pinLed, OUTPUT);
pinMode(pinBottone, INPUT);
}
void loop() {
statoBottone = digitalRead(pinBottone);
if (statoBottone == HIGH) {
digitalWrite(pinLed, HIGH);
}
else
{
digitalWrite(pinLed, LOW);
}
}
workshop Arduino - FabLab Messina
ANALOG INPUT - ANALOG OUTPUT
Componenti:
Sketch:
int pinPot = A0;
int pinLed = 9;
int valoreSensore = 0;
void setup() {
pinMode(pinLed, OUTPUT);
}
void loop() {
valoreSensore = analogRead(pinPot);
valoreSensore = map(valoreSensore, 0, 1023, 0, 255);
analogWrite(pinLed, valoreSensore);
}
workshop Arduino - FabLab Messina
Componenti:
SEMAFORO LED RGB
Sketch:
int ledR = 10;
int ledG = 9;
int ledB = 11;
void semaforo(int colore);
void setup() {
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
}
void loop() {
semaforo(ledR);
delay(3000);
semaforo(ledG);
delay(3000);
semaforo(ledB);
delay(3000);
}
void semaforo(int colore) {
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
digitalWrite(ledB, LOW);
digitalWrite(colore, HIGH);
}
workshop Arduino - FabLab Messina
Componenti:
CONTROLLO LED RGB DA SERIALE
Sketch:
int ledR = 10;
int ledG = 9;
int ledB = 11;
char carattere;
void setup() {
Serial.begin(9600);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
carattere = Serial.read();
if (carattere == 'R') {
digitalWrite(ledR, HIGH);
}
else if (carattere == 'r') {
digitalWrite(ledR, LOW);
}
else if (carattere == 'G') {
digitalWrite(ledG, HIGH);
}
else if (carattere == 'g') {
digitalWrite(ledG, LOW);
}
else if (carattere == 'B') {
digitalWrite(ledB, HIGH);
}
else if (carattere == 'b') {
digitalWrite(ledB, LOW);
}
}
}
workshop Arduino - FabLab Messina
Componenti:
FOTORESISTENZA
Sketch:
int pinFoto = A0;
int valore = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
valore = analogRead(pinFoto);
Serial.print("Valore letto = ");
Serial.println(valore);
}
workshop Arduino - FabLab Messina
Componenti:
SENSORE DHT11
Sketch:
#include "DHT.h" //includiamo la libreria
int pinDHT = 3;
DHT dht(pinDHT, DHT11);
void setup() {
Serial.begin(9600);
Serial.println("Test temperatura e umidità!");
Serial.println("T(C) \tH(%)");
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Lettura fallita!");
}
else
{
Serial.print(t, 2); //2 cifre decimali
Serial.print("\t");
Serial.println(h, 2); //2 cifre decimali
delay(2000);
}
}
workshop Arduino - FabLab Messina
Componenti:
SERVO
Sketch:
#include <Servo.h> //includiamo la libreria
int pinPot = A3;
int pinServo = 9;
int val;
Servo myservo;
void setup() {
myservo.attach(pinServo);
}
void loop() {
val = analogRead(pinPot);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
delay(15);
}
workshop Arduino - FabLab Messina