1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#!/usr/bin/env python
# coding=utf-8
# This file is part of the PiXtend(R) Project.
#
# For more information about PiXtend(R) and this program,
# see <https://www.pixtend.de> or <https://www.pixtend.com>
#
# Copyright (C) 2018 Robin Turner
# Qube Solutions UG (haftungsbeschränkt), Arbachtalstr. 6
# 72800 Eningen, Germany
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import print_function
# Import Pixtend class
from pixtendlib import Pixtend
import time
import sys
strSlogan1 = "PiXtend Python Library (PPL) demo for DHT11 sensors."
strSlogan2 = "PiXtend Python Library (PPL) demo for DHT11 sensors finished."
# -----------------------------------------------------------------
# Print Art and Slogan
# -----------------------------------------------------------------
print("")
print(" ____ _ _ __ __ __")
print(" / __ \\ (_) | |/ / / /_ ___ ____ ____/ /")
print(" / /_/ / / / | / / __/ / _ \\ / __ \\ / __ / ")
print(" / ____/ / / / | / /_ / __/ / / / // /_/ / ")
print("/_/ /_/ /_/|_| \\__/ \\___/ /_/ /_/ \\__,_/ ")
print("")
print(strSlogan1)
print("")
# -----------------------------------------------------------------
# Create instance
# -----------------------------------------------------------------
p = Pixtend()
# Open SPI bus for communication
try:
p.open()
except IOError as io_err:
# On error, print an error text and delete the Pixtend instance.
print("Error opening the SPI bus! Error is: ", io_err)
p.close()
p = None
# -----------------------------------------------------
# Main Program
# -----------------------------------------------------
if p is not None:
print("Running Main Program - Hit Ctrl + C to exit")
is_config = False
cycle_counter = 0
while True:
try:
# Using Auto Mode for optimal SPI bus usage
if p.auto_mode() == 0:
cycle_counter += 1
if not is_config:
is_config = True
print("Configuring GPIO 0 for DHT11 use")
print("")
# Set GPIO 0 to DHT11/DHT22 mode
p.dht0 = p.ON
# Build text with values from temperature 0 and humidity 0 input based on a DHT11 sensor
# connected at GPIO 0.
str_text = "Cycle No.: {0}\n".format(cycle_counter)
str_text += "Current Temperature is: {0}°C\n".format(p.t0_dht11)
str_text += "Current Humidity is: {0}%\n".format(p.h0_dht11)
# Print text to console
print(str_text, end="\r")
# Reset cursor
for i in range(0, 3, 1):
sys.stdout.write("\x1b[A")
else:
print("Auto Mode - Communication is not yet up...Please wait...")
# Wait at minimum 0.1sec or 100ms before getting new values
time.sleep(0.1)
except KeyboardInterrupt:
# Keyboard interrupt caught, Ctrl + C, now clean up and leave program
p.close()
p = None
for i in range(0, 4, 1):
print("")
print(strSlogan2)
break
else:
# If there was an error when opening the SPI bus interface, leave the program.
print("")
print("There was a problem with the PiXtend communication. Quitting.")
print("")
print(strSlogan2)
|