corso base arduino ed elettronica - altra tecnologiacorso base arduino ed elettronica quarto...
TRANSCRIPT
Corso Base Arduino ed ElettronicaQuarto incontro
Display LCD, Sensori avanzati
Relatore: Roberto Beligni [email protected]
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
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
Programmazione ArduinoSensore di temperatura LM35
Diodo LED, Resistenza 220 ohm, LM35 Potenziometro 10k ohm, Pulsante N.A
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...
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
Programmazione ArduinoDisplay LCD
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
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);
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
Programmazione ArduinoDisplay LCD
Display LCD, Resistenza 220 ohm, Potenziometro 10k ohm
23451112
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
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.
Programmazione ArduinoIl transistor
Uno dei dispositivi in grado di creare questa interfaccia è il transistor.
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.
Programmazione ArduinoIl transistor per pilotare un relè
Pinout transistorBC547
I comandi da utilizzare saranno gli stessi visti per pilotare il Diodo Led
Programmazione ArduinoIl modulo ad ultrasuoni HC-SR04
Programmazione ArduinoIl modulo ad ultrasuoni HC-SR04
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...
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...
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
Il corso proseguirà con il tema:
Dalla teoria alla pratica con il progetto finale
Corso base arduino ed elettronica
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