Corso Base Arduino ed Elettronica

Transcript

Corso Base Arduino ed Elettronica
Corso Base Arduino ed Elettronica
Quarto incontro
Display LCD, Sensori avanzati
Relatore: Roberto Beligni
[email protected]
Programmazione Arduino
Sensore di temperatura LM35
Il sensore di temperatura LM35
Possiede 3 terminali:
1 Alimentazione dai 4 ai 20V
2 Out
3 Da collegare a GND
Il piedino 2 OUT fornisce in uscita 10 mv a °Celsius con
una precisione di +-0,5°C
Per ottenere la temperatura in °C si determinano prima i
millivolts con la formula:
millivolts = ( lettura/1023)*5000
Dove lettura è il valore letto dal AD
1023 è il valore max ottenibile dall'AD
5000 sono in millivolt di V alimentazione
Programmazione Arduino
Sensore di temperatura LM35
Poi si determinano i gradi Celsius con la formula:
Celsius = millivolts / 10; questo poiché l’LM35 fornisce
10mv per grado (10mV : 1° = millivolts : celsius).
Per brevità si può utilizzare una formula equivalente che
ci fornisce il risultato direttamente in gradi Celsius:
float val=sensor*500/1023
Si deve ricordare che la massima temperatura letta è di
155 °C cioè 1,55 volts in uscita; questo vuol dire che il
massimo valore restituito dal convertitore A/D di Arduino
è circa 300 (e non 1024)
Tensione al pin [mV] = (valore letto dal ADC) * (5000/1023)
T [°C] = (Tensione al pin [mV] * 500)/1023
Programmazione Arduino
Sensore di temperatura LM35
Diodo LED, Resistenza 220 ohm, LM35
Potenziometro 10k ohm, Pulsante N.A
Programmazione Arduino
Sensore di temperatura LM35
float celsius = 0;
// Dichiara una variablie di tipo float
float farhenheit = 0; // Dichiara una variablie di tipo float
float millivolts = 0; // Dichiara una variablie di tipo float
int sensor;
// Dichiara una variabile di tipo int
void setup()
{
Serial.begin(9600); // Inizializzazione della comunicazione seriale
}
void loop() {
sensor = analogRead(A2); //Lettura valore del sensore LM35
millivolts = (sensor/1023.0)*5000; //Formula per ottenere la tensione di
uscita dell'LM35 in millivolts
celsius = millivolts/10;
//Conversione della tensione in gradi Celsius
Continua sulla prossima slide...
Programmazione Arduino
Sensore di temperatura LM35
…. Segue dalla slide precedente
farhenheit=celsius*1.8+32;
//Converte la temperatura da gradi Celsius a
gradi Farhenheit
Serial.println(sensor);
//Scrive sulla seriale il valore restituito dal conv
A/D
Serial.print(millivolts);
//Scrive sulla seriale il valore di tensione in
millivolts
Serial.println(" millivolts");
Serial.print(celsius); //Scrive sulla seriale il valore espresso in gradi Celsius
Serial.println(" C");
Serial.print(farhenheit); //Scrive sulla seriale il valore espresso in gradi
Farhenheit
Serial.println(" F");
delay(1000);
//Attende un secondo prima di effettuare una nuova lettura
}
Programmazione Arduino
Display LCD
Programmazione Arduino
Display LCD
Piedinatura Display QC1602
da colllegare a GND
da collegare a +5V
da collegare al potenziometro
H ingresso istruzioni / L ingresso dati
H lettura dati / L scrittura dati
H abilita l'ingresso dei dati su BAS
Da DB0 a DB7 è il BAS da 8 BIT per
la ricezione invio dati e con le
opportune inizializzazioni si possono
utilizzare solo i pin da DB4 a DB7
risparmiando così i pin di Arduino
Anodo e Katodo del led di
retroilluminazione del Display da
collegare con una resistenza di
limitazione
Programmazione Arduino
Display LCD
Per inizializzare il Display LCD ed inviagli i dati avremmo
bisogno di diverse linee di codice.
Il lavoro è stato svolto per noi con la funzione:
LiquidCrystal.h
Oltre a richiamare tale funzione con il comando:
#include <LiquidCrystal.h>
dovremmo dire a quali pin di Arduino sono associati i pin
del display con il comando:
LiquidCrystal (rs, rw, enable, d4, d5, d6, d7);
Esempio: LiquidCrystal (12,11,5,4,3,2);
Programmazione Arduino
Display LCD
Le altre opzioni utilizzabili con LiquidCrystal.h sono:
lcd.begin(colonne, righe); // Identifica il numero di colonne e di
righe del display
lcd.setCursor(0, 0); // Posizione il cursore in un punto specifico
Riga e colonna
lcd.print("Testo"); // Invia la strigna racchiusa da “ “ al display
lcd.blink(); // Attiva il lampeggio del cursore
lcd.noBlink(); // Disattiva il lampeggio del cursore
lcd.cursor(); // Mostra il cursore
lcd.noCursor(); // Nasconde il cursore
lcd.display(); // Mostra quanto scritto sul display
lcd.noDisplay(); //Nasconde quanto scritto sul display, preservando
il testo precedentemente visualizzato
Programmazione Arduino
Display LCD
Display LCD, Resistenza 220 ohm, Potenziometro 10k ohm
2
3
4
5
11
12
Programmazione Arduino
Display LCD
Facciamo un po' di pratica con gli esempi proposti
dall'IDE di Arduino....
Dal menù:
“File”
“Esempi”
“LiquidCristal”
Ed apriamo alcuni degli esempi proposti per capire il
funzionamento dei principali comandi della libreria
LiquidCristal.h
Programmazione Arduino
Pilotare carichi
Dai piedini di Arduino è possibile prelevare solo segnali
pari a +5V, 40mA MAX.
Possiamo dunque fornire poca corrente ai nostri apparati.
E' quindi sconsigliato utilizzare tali pin per alimentarli
poiché si correrà il rischio di rovinare il chip di arduino.
Occorrerà quindi un circuito di accoppiamento che venga
attivato dai pin di arduino e provvederà ad alimentare gli
apparati ad esso connesso.
Programmazione Arduino
Il transistor
Uno dei dispositivi in grado di creare questa interfaccia è
il transistor.
Programmazione Arduino
Il transistor
Ne esistono di varie versioni e li si possono suddividere in
due categorie: NPN e PNP.
Semplificando molto si può dire che:
NPN = Base positiva, Collettore positivo, Emittore negativo.
PNP = Base negativa, Collettore negativo, Emittore positivo.
Programmazione Arduino
Il transistor per pilotare un relè
Pinout transistor
BC547
I comandi da utilizzare saranno gli stessi visti per
pilotare il Diodo Led
Programmazione Arduino
Il modulo ad ultrasuoni HC-SR04
Programmazione Arduino
Il modulo ad ultrasuoni HC-SR04
Programmazione Arduino
Il modulo ad ultrasuoni HC-SR04
const int trigPin = 12;
const int echoPin = 13;
const int alimenta = 11;
void setup() {
Serial.begin(9600);
pinMode(alimenta, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
Continua sulla prossima slide...
Programmazione Arduino
Il modulo ad ultrasuoni HC-SR04
…. Segue dalla slide precedente
void loop()
{
digitalWrite(alimenta, HIGH);
long duration, inches, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Continua sulla prossima slide...
Programmazione Arduino
Il modulo ad ultrasuoni HC-SR04
…. Segue dalla slide precedente
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
}
long microsecondsToInches(long microseconds)
{return microseconds / 74 / 2;}
long microsecondsToCentimeters(long microseconds)
{return microseconds / 29 / 2;}
Corso base arduino ed elettronica
Il corso proseguirà con il tema:
Dalla teoria alla pratica con il progetto finale
Corso base arduino ed elettronica
Licenza Creative Commons
Questa opera di Roberto Beligni è concessa in licenza sotto la
Licenza Creative Commons Attribuzione – Non commerciale –
Condividi allo stesso modo 3.0 Italia.