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.