Hi all, I cobbled together a 328p on strip board, wired a lcd display and connected some DHT22's up (in/out) earlier in the year.
Works nicely, but the weather has just dipped here and dropping below freezing. I'm noticing my LCD is telling me it is -0 ouside -1 yes but -0? is there such a thing? I would like to get rid of the - symbol ideally?
//parameters
const int minLight = 40;Â Â Â Â // at or below this light level, use minimum backlight intensity
const int maxLight = 900;Â Â Â Â // at or above this light level, use maximum backlight intensity
const int minBacklight = 30;Â Â Â // lowest backlight intensity to use
const int maxBacklight = 255;Â Â // highest backlight intensity to use
const int LDRPin = A1;Â Â Â // Analog input pin that the lDR is attached to
const int LCDBackLight = 3;Â Â Â // Analog (PWM) output pin that the BACKLIGHT is attached to
int LDRRead = 0;Â Â Â Â // value read from the LDR
int outputValue = 0;Â Â // value output to the PWM (analog out)
// make some custom characters:
byte rh[8] = {
 0b00101,
 0b00111,
 0b10101,
 0b01000,
 0b00100,
 0b11010,
 0b10001,
 0b10000
};
byte degree[8] = {
 0b00111,
 0b00101,
 0b00111,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000
};
byte c[8] = {
 0b00000,
 0b00000,
 0b00000,
 0b11100,
 0b10000,
 0b10000,
 0b10000,
 0b11100
};
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTAPIN 5Â Â // what pin we're connected to in
#define DHTBPIN 6Â Â // what pin we're connected to out
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11Â // DHT 11
#define DHTTYPE DHT22Â // DHT 22Â (AM2302)
//#define DHTTYPE DHT21Â // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
DHT dht_in(DHTAPIN, DHTTYPE);
DHT dht_out(DHTBPIN, DHTTYPE);
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
 lcd.begin(16, 2);
 delay(100);
 dht_in.begin();
 dht_out.begin();
 pinMode(3, OUTPUT); //LCD BACKLIGHT
  // create new characters
 lcd.createChar(0, rh);
 lcd.createChar(1, degree);
 lcd.createChar(2, c);
}
void loop() {
 // LDR controlled LCD backlight via PWM part
 int sum = 0;
 for (int i=0; i<16; i++) // take 16 samples from the analog input
 {
  sum += analogRead(LDRPin);
 }
 LDRRead = sum/16; // divide by the amount of samples for the average value
 // map it to the range[0..255] of the analog output that the LCD backlight it connected to
 outputValue = LDRRead/4; // alternative to map function for scaling down from analog input
 outputValue = map(constrain(LDRRead, minLight, maxLight), minLight, maxLight, minBacklight, maxBacklight );
 // change the analog out value to adjust LCD backlight intensity
 analogWrite(LCDBackLight, outputValue);Â
 // Reading temperature or humidity takes about 250 milliseconds!
 // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
 float h_in = dht_in.readHumidity();
 float t_in = dht_in.readTemperature();
 float h_out = dht_out.readHumidity();
 float t_out = dht_out.readTemperature();
 //Inside readings
 // check if returns are valid, if they are NaN (not a number) then something went wrong!
 if (isnan(t_in) || isnan(h_in)) {
  lcd.setCursor(0, 0);
  lcd.print(" No connection ");
 }
 else {
  //write temp data
  lcd.setCursor(0, 0);
  lcd.print("In : ");
  lcd.print(t_in, 0);
  lcd.write((uint8_t)1);
  lcd.write((uint8_t)2);
  lcd.print(" ");
  //write humidity data
  lcd.print(h_in, 0);
  lcd.print("% ");
  lcd.write((uint8_t)0);
  lcd.print(" ");
 }
 //Outside readings
 // check if returns are valid, if they are NaN (not a number) then something went wrong!
 if (isnan(t_out) || isnan(h_out)) {
  lcd.setCursor(0, 1);
  lcd.print(" No connection ");
 }
 else {
  //write temp data
  lcd.setCursor(0, 1);
  lcd.print("Out: ");
  lcd.print(t_out, 0);
  lcd.write((uint8_t)1);
  lcd.write((uint8_t)2);
  lcd.print(" ");
  //write humidity data
  lcd.print(h_out, 0);
  lcd.print("% ");
  lcd.write((uint8_t)0);
  lcd.print(" ");
 }
}