11import glob
22import time
33import datetime
4- from Adafruit_LED_Backpack import SevenSegment
4+ from adafruit_ht16k33 import segments
55import board
6+ import busio
67import digitalio
78
89switch_pin = digitalio .DigitalInOut (board .D18 )
910switch_pin .direction = digitalio .Direction .INPUT
1011switch_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
1620base_dir = '/sys/bus/w1/devices/'
1721device_folder = glob .glob (base_dir + '28*' )[0 ]
@@ -36,50 +40,29 @@ def read_temp():
3640 return temp_c , temp_f
3741
3842def 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
6347def 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
7863while 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