Étape 6: Ajout de l’écran LCD
Une erreur avec que je suis venu eu à faire avec l’affichage de la tension sur l’écran. Si j’ai montrait 13 volts, puis a chuté la tension à 8 volts, le chiffre serait décaler vers l’un gauche, mais montrent encore les 3 depuis le 13, donc il fini par afficher 83 volts. Cela pourrait se produire à une température aussi bien si vous lisez différentes températures au-dessus et au-dessous de 100 (passant de 100.00 à 99,00). Nous corriger cela dans le code final (sur la section de tension), en ajoutant :
Si (v < 10) lcd.print=("") ;
avant le
LCD.Print(Volt) ;
Voici le code complété :
#include « OneWire.h »
#include « DallasTemperature.h »
#include « LiquidCrystal.h »
Innovente lcd (7, 8, 9, 10, 11, 12) ;
Câble de données est branché sur la broche 3 sur l’Arduino
#define ONE_WIRE_BUS 3
Configurer une instance oneWire pour communiquer avec les périphériques OneWire
OneWire oneWire(ONE_WIRE_BUS) ;
Passez notre référence oneWire à température de Dallas.
Capteurs DallasTemperature (& oneWire) ;
DeviceAddress insideThermometer = {0 x 28, 0 x 27, 0xB0, 0xBD, 0 x 04, 0 x 00, 0 x 00, 0xF0} ;
int tempNegPin = 2 ; GND pour DS18B20
int tempPosPin = 6 ; + 5V pour DS18B20
int voltPin = 0 ; diviseur de tension (terminal moyen) connectée à la broche analogique 0
conduit extérieur à 0-29vac
int val = 0 ; variable pour stocker la valeur lue
volts int = 0 ; variable pour stocker la tension calculée
Sub setup(void)
{
Utilisé deux ports numériques inutilisés sous + 5v et Gnd pour le DS18B20
pinMode (tempPosPin, sortie) ; définit la broche numérique en sortie
pinMode (tempNegPin, sortie) ; définit la broche numérique en sortie
digitalWrite (tempPosPin, HIGH) ; définit la broche numérique à + 5V
digitalWrite (tempNegPin, basse) ; définit la broche numérique au Gnd
LCD.Begin (20, 4) ; programme d’installation LCD
Démarrage de la bibliothèque
sensors.Begin() ;
Sélectionnez une résolution de 10 bits (assez bon?)
sensors.setResolution (insideThermometer, 10) ;
}
Sub printTemperature(DeviceAddress deviceAddress)
{
flotteur NC = sensors.getTempC(deviceAddress) ;
Si (NC ==-127.00) {}
lcd.setCursor (0, 2) ;
LCD.Print ("Error getting") ;
lcd.setCursor (0, 3) ;
LCD.Print("Temperature") ;
} else {}
lcd.setCursor (0, 2) ;
LCD.Print ("Temp") ;
LCD.Print((Char)223) ;
LCD.Print ("C:") ;
LCD.Print(tempC) ;
lcd.setCursor (0, 3) ;
LCD.Print ("Temp") ;
LCD.Print((Char)223) ;
LCD.Print ("f") ;
LCD.Print(DallasTemperature::toFahrenheit(tempC)) ;
}
}
Sub loop(void)
{
Delay(500) ;
Val = analogRead(voltPin) ; lire l’entrée pin
v = carte (val, 0, 1023, 0, 29) ; gamme carte 29v
lcd.setCursor (0, 0) ;
LCD.Print ("VAC") ;
Si (v < 10) lcd.print=("") ; empêche les artefacts de l’écran lors de la suppression de 2 chiffres pour la lecture à un seul chiffre
LCD.Print(Volt) ;
sensors.requestTemperatures() ;
printTemperature(insideThermometer) ;
}