Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto...

23
Corso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni [email protected]

Transcript of Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto...

Page 1: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Corso Base Arduino ed ElettronicaQuarto incontro

Display LCD, Sensori avanzati

Relatore: Roberto Beligni [email protected]

Page 2: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoSensore di temperatura LM35

Il sensore di temperatura LM35 Possiede 3 terminali:1 Alimentazione dai 4 ai 20V2 Out3 Da collegare a GNDIl piedino 2 OUT fornisce in uscita 10 mv a °Celsius con una precisione di +-0,5°CPer ottenere la temperatura in °C si determinano prima i millivolts con la formula:

millivolts = ( lettura/1023)*5000Dove lettura è il valore letto dal AD1023 è il valore max ottenibile dall'AD5000 sono in millivolt di V alimentazione

Page 3: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoSensore 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/1023Si 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

Page 4: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoSensore di temperatura LM35

Diodo LED, Resistenza 220 ohm, LM35 Potenziometro 10k ohm, Pulsante N.A

Page 5: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoSensore 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...

Page 6: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoSensore di temperatura LM35

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

}

…. Segue dalla slide precedente

Page 7: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoDisplay LCD

Page 8: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoDisplay LCD

Piedinatura Display QC1602 da colllegare a GNDda collegare a +5Vda collegare al potenziometroH ingresso istruzioni / L ingresso datiH lettura dati / L scrittura datiH abilita l'ingresso dei dati su BASDa 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

Page 9: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoDisplay 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);

Page 10: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoDisplay 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

Page 11: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoDisplay LCD

Display LCD, Resistenza 220 ohm, Potenziometro 10k ohm

23451112

Page 12: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoDisplay 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

Page 13: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoPilotare 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.

Page 14: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl transistor

Uno dei dispositivi in grado di creare questa interfaccia è il transistor.

Page 15: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl 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.

Page 16: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl transistor per pilotare un relè

Pinout transistorBC547

I comandi da utilizzare saranno gli stessi visti per pilotare il Diodo Led

Page 17: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl modulo ad ultrasuoni HC-SR04

Page 18: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl modulo ad ultrasuoni HC-SR04

Page 19: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl 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...

Page 20: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl modulo ad ultrasuoni HC-SR04

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);

…. Segue dalla slide precedente

Continua sulla prossima slide...

Page 21: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Programmazione ArduinoIl modulo ad ultrasuoni HC-SR04

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;}

…. Segue dalla slide precedente

Page 22: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Il corso proseguirà con il tema:

Dalla teoria alla pratica con il progetto finale

Corso base arduino ed elettronica

Page 23: Corso Base Arduino ed Elettronica - Altra TecnologiaCorso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Licenza Creative CommonsQuesta opera di Roberto Beligni è concessa in licenza sotto la Licenza Creative Commons Attribuzione – Non commerciale –

Condividi allo stesso modo 3.0 Italia.

Corso base arduino ed elettronica