sudo apt-get update
sudo apt-get install python3-gpiozero
import RPi.GPIO as GPIO
import time
# GPIO引脚定义
hour_pins = [2, 3, 4, 17]
minute_pins = [27, 22, 10, 9]
colon_pin = 11
buzzer_pin = 18
button_set_hour = 5
button_set_minute = 6
# 初始化GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(hour_pins + minute_pins + [colon_pin, buzzer_pin, button_set_hour, button_set_minute], GPIO.OUT)
GPIO.setup(button_set_hour, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(button_set_minute, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# 时钟显示函数
def display_time(hours, minutes):
for i in range(4):
GPIO.output(hour_pins[i], hours % 10 & (1 << i))
for i in range(4):
GPIO.output(minute_pins[i], minutes % 10 & (1 << i))
GPIO.output(colon_pin, 1)
# 整点报时函数
def hourly_beep():
GPIO.output(buzzer_pin, 1)
time.sleep(1)
GPIO.output(buzzer_pin, 0)
# 读取按钮状态
def read_button_state(button_pin):
while GPIO.input(button_pin) == 0:
time.sleep(0.1)
return True
try:
while True:
current_time = time.localtime()
hours = current_time.tm_hour
minutes = current_time.tm_min
# 设置时间按钮功能
if read_button_state(button_set_hour):
hours = (hours + 1) % 24
if read_button_state(button_set_minute):
minutes = (minutes + 1) % 60
display_time(hours, minutes)
# 整点报时
if minutes == 0:
hourly_beep()
time.sleep(0.5)
except KeyboardInterrupt:
GPIO.cleanup()