Paso 6: Añadir la pantalla LCD
Un error que surgió tuvo que ver con la tensión que se muestra en la pantalla. Si mostraba 13 voltios, después bajó la tensión de 8 voltios, el dígito desplazar a la izquierda una posición, pero aún mostrar las 3 de la 13, por lo que terminó mostrando 83 voltios. Esto podría suceder con la temperatura, así si la Estás leyendo diferentes temperaturas por encima y por debajo de 100 (caída desde 100.00 a 99.00). Esto fijamos en el código final (en la sección de voltaje) mediante la adición de:
Si (v < 10) lcd.print=("");
antes de la
LCD.Print(Volt);
Aquí está el código completo:
#include "OneWire.h"
#include "DallasTemperature.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
Cable de datos esté conectado en el pin 3 en el Arduino
#define ONE_WIRE_BUS 3
Configuración de una instancia de oneWire para comunicarse con dispositivos OneWire
OneWire oneWire(ONE_WIRE_BUS);
Pasar nuestra referencia oneWire a temperatura de Dallas.
DallasTemperature sensors (& oneWire);
DeviceAddress insideThermometer = {0x28, 0x27, 0xB0, 0xBD, 0 x 04, 0 x 00, 0 x 00, 0xF0};
int tempNegPin = 2; Tierra para DS18B20
int tempPosPin = 6; + 5vdc para DS18B20
int voltPin = 0; divisor de tensión (terminal central) conectado al pin analógico 0
exterior conduce a 0-29vac
int val = 0; variable para almacenar el valor leído
int v = 0; variable para almacenar el voltaje calculado
void setup(void)
{
Utiliza dos puertos digitales sin usar como + 5v y Gnd para el DS18B20
pinMode (tempPosPin, salida); pone el pin digital como salida
pinMode (tempNegPin, salida); pone el pin digital como salida
digitalWrite (tempPosPin, HIGH); pone el pin digital a + 5vdc
digitalWrite (tempNegPin, bajo); sistemas digitales pin a Gnd
LCD.Begin (20, 4); configuración LCD
Puesta en marcha de la biblioteca
Sensors.Begin();
Ajuste la resolución a 10 bit (suficiente?)
sensors.setResolution (insideThermometer, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
flotador tempC = sensors.getTempC(deviceAddress);
Si (tempC ==-127.00) {}
lcd.setCursor (0, 2);
LCD.Print ("Error obteniendo");
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));
}
}
void loop(void)
{
Delay(500);
Val = analogRead(voltPin); leer la entrada de pin
voltios = mapa (val, 0, 1023, 0, 29); mapa 29v gama
lcd.setCursor (0, 0);
LCD.Print ("VAC");
Si (v < 10) lcd.print=(""); evita artefactos de pantalla al caer de 2 dígitos a la lectura de dígito
LCD.Print(Volt);
sensors.requestTemperatures();
printTemperature(insideThermometer);
}