Skip to content

Commit 75dafd1

Browse files
authored
Merge pull request #784 from adafruit/Large-Pi-Based-Thermometer-Clock
upgraded from Adafruit_LED_Backpack to adafruit_ht16k33
2 parents 43a064c + 39d7dc2 commit 75dafd1

1 file changed

Lines changed: 21 additions & 38 deletions

File tree

Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
import glob
22
import time
33
import datetime
4-
from Adafruit_LED_Backpack import SevenSegment
4+
from adafruit_ht16k33 import segments
55
import board
6+
import busio
67
import digitalio
78

89
switch_pin = digitalio.DigitalInOut(board.D18)
910
switch_pin.direction = digitalio.Direction.INPUT
1011
switch_pin.pull = digitalio.Pull.UP
1112

12-
segment = SevenSegment.SevenSegment(address=0x70)
13-
# Initialize the display. Must be called once before using the display.
14-
segment.begin()
13+
# Create the I2C interface.
14+
i2c = busio.I2C(board.SCL, board.SDA)
15+
16+
# Create the LED segment class.
17+
# This creates a 7 segment 4 character display:
18+
display = segments.Seg7x4(i2c)
1519

1620
base_dir = '/sys/bus/w1/devices/'
1721
device_folder = glob.glob(base_dir + '28*')[0]
@@ -36,50 +40,29 @@ def read_temp():
3640
return temp_c, temp_f
3741

3842
def display_temp():
39-
segment.set_colon(False)
40-
temp = int(read_temp()[1]) # F
41-
# temp = int(read_temp()[0]) # C
42-
sign = (temp < 0)
43-
temp = abs(temp)
44-
digit_1 = int(temp % 10)
45-
temp = temp / 10
46-
digit_2 = int(temp % 10)
47-
temp = temp / 10
48-
digit_3 = int(temp % 10)
49-
if sign :
50-
segment.set_digit_raw(0, 0x40) # - sign
51-
if digit_3 > 0 :
52-
segment.set_digit(0, digit_3) # Hundreds
53-
else:
54-
segment.set_digit_raw(0, 0)
55-
if digit_2 > 0 :
56-
segment.set_digit(1, digit_2) # Tens
57-
else:
58-
segment.set_digit_raw(1, 0)
59-
segment.set_digit(2, digit_1) # Ones
60-
segment.set_digit_raw(3, 0x71) #F # Temp units letter
61-
# segment.set_digit_raw(3, 0x39) #C
43+
temp = read_temp()[1] # F
44+
# temp = read_temp()[0] # C
45+
display.print(int(temp))
6246

6347
def display_time():
6448
now = datetime.datetime.now()
6549
hour = now.hour
6650
minute = now.minute
6751
second = now.second
68-
# Set hours
69-
segment.set_digit(0, int(hour / 10)) # Tens
70-
segment.set_digit(1, hour % 10) # Ones
71-
# Set minutes
72-
segment.set_digit(2, int(minute / 10)) # Tens
73-
segment.set_digit(3, minute % 10) # Ones
74-
# Toggle colon
75-
segment.set_colon(second % 2) # Toggle colon at 1Hz
52+
clock = int('%i%i' % (hour,minute)) # concat hour + minute
53+
display.print(clock)
7654

55+
# Toggle colon when displaying time
56+
if second % 2:
57+
display.print(':') # Enable colon every other second
58+
else:
59+
display.print(';') # Turn off colon
60+
61+
display.fill(0)
7762

7863
while True:
79-
segment.clear()
8064
if not switch_pin.value:
8165
display_temp()
82-
else :
66+
else:
8367
display_time()
84-
segment.write_display()
8568
time.sleep(0.5)

0 commit comments

Comments
 (0)