85 lines
3.1 KiB
Python
85 lines
3.1 KiB
Python
# Home_Weather_Display.py
|
|
#
|
|
# This is an project for using the Grove RGB LCD Display and the Grove DHT Sensor from the GrovePi starter kit
|
|
#
|
|
# In this project, the Temperature and humidity from the DHT sensor is printed on the RGB-LCD Display
|
|
#
|
|
#
|
|
# Note the dht_sensor_type below may need to be changed depending on which DHT sensor you have:
|
|
# 0 - DHT11 - blue one - comes with the GrovePi+ Starter Kit
|
|
# 1 - DHT22 - white one, aka DHT Pro or AM2302
|
|
# 2 - DHT21 - black one, aka AM2301
|
|
#
|
|
# For more info please see: http://www.dexterindustries.com/topic/537-6c-displayed-in-home-weather-project/
|
|
#
|
|
'''
|
|
The MIT License (MIT)
|
|
|
|
GrovePi for the Raspberry Pi: an open source platform for connecting Grove Sensors to the Raspberry Pi.
|
|
Copyright (C) 2017 Dexter Industries
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
THE SOFTWARE.
|
|
'''
|
|
|
|
from grovepi import *
|
|
from grove_rgb_lcd import *
|
|
from time import sleep
|
|
from math import isnan
|
|
|
|
dht_sensor_port = 7 # connect the DHt sensor to port 7
|
|
dht_sensor_type = 0 # use 0 for the blue-colored sensor and 1 for the white-colored sensor
|
|
|
|
# set green as backlight color
|
|
# we need to do it just once
|
|
# setting the backlight color once reduces the amount of data transfer over the I2C line
|
|
setRGB(0,255,0)
|
|
|
|
while True:
|
|
try:
|
|
# get the temperature and Humidity from the DHT sensor
|
|
[ temp,hum ] = dht(dht_sensor_port,dht_sensor_type)
|
|
print("temp =", temp, "C\thumidity =", hum,"%")
|
|
|
|
# check if we have nans
|
|
# if so, then raise a type error exception
|
|
if isnan(temp) is True or isnan(hum) is True:
|
|
raise TypeError('nan error')
|
|
|
|
t = str(temp)
|
|
h = str(hum)
|
|
|
|
# instead of inserting a bunch of whitespace, we can just insert a \n
|
|
# we're ensuring that if we get some strange strings on one line, the 2nd one won't be affected
|
|
setText_norefresh("Temp:" + t + "C\n" + "Humidity :" + h + "%")
|
|
|
|
except (IOError, TypeError) as e:
|
|
print(str(e))
|
|
# and since we got a type error
|
|
# then reset the LCD's text
|
|
setText("")
|
|
|
|
except KeyboardInterrupt as e:
|
|
print(str(e))
|
|
# since we're exiting the program
|
|
# it's better to leave the LCD with a blank text
|
|
setText("")
|
|
break
|
|
|
|
# wait some time before re-updating the LCD
|
|
sleep(0.05)
|