import machine #Bruges ligesom GPIO bare for mircopython
import utime #Ligesom time i normal python
# sætter mine knapper op og buzzeren
hour_button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
min_button = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN)
set_button = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
stop_button = machine.Pin(17, machine.Pin.IN, machine.Pin.PULL_DOWN) # Fourth button to stop the buzzer
buzzer_pin = machine.Pin(18, machine.Pin.OUT)
# Man skal initiralizer rtc for at kunne bruge det længere nede til tid.
rtc = machine.RTC()
# Initialize alarm time og buzzer state
alarm_hour = 6 # Change this to your desired initial hour
alarm_minute = 30 # Change this to your desired initial minute
buzzer_active = False
# funktion til at styrer knapperne
def update_time():
global alarm_hour, alarm_minute
# Check hour button
if hour_button.value() == 1:
utime.sleep_ms(200) # Debouncing delay
alarm_hour = (alarm_hour + 1) % 24
print(alarm_hour)
# Check minute button
if min_button.value() == 1:
utime.sleep_ms(200) # Debouncing delay
alarm_minute = (alarm_minute + 1) % 60
print(alarm_minute)
# Check set button
if set_button.value() == 1:
utime.sleep_ms(200) # Debouncing delay
set_alarm()
# Check stop button
if stop_button.value() == 1:
utime.sleep_ms(200) # Debouncing delay
stop_buzzer()
# funktion til at set alarmen på bestemt time
def set_alarm():
global alarm_hour, alarm_minute
print("Enter the alarm time (HH:MM):")
# user inputet man skal bruge
while True:
update_time()
if set_button.value() == 1:
utime.sleep_ms(200) # Debouncing delay
break
# når while lykke bliver exited printer den:
print("Alarm set at {}:{:02d}".format(alarm_hour, alarm_minute))
# funktion til at startet buzzer
def start_buzzer():
global buzzer_active
buzzer_active = True
print("Buzzer started")
# function til at stop buzzer
def stop_buzzer():
global buzzer_active
buzzer_active = False
buzzer_pin.off() # Turn off the buzzer
print("Buzzer stopped")
# Main loop
while True:
update_time()
# her bruger vi rtc for at få tiden
rtc_time = rtc.datetime()
current_hour = rtc_time[4] # til time se lib
current_minute = rtc_time[5] #til min se lib
# bruger jeg til at debug
print("Current Time: {:02d}:{:02d} | Alarm Time: {:02d}:{:02d}".format(current_hour, current_minute, alarm_hour, alarm_minute))
# chcecker for om alarmen skal starte
if current_hour == alarm_hour and current_minute == alarm_minute:
print("Wake up!")
start_buzzer()
# checker for om knappen er trykket og stopper så alarmen
if buzzer_active and stop_button.value() == 1:
utime.sleep_ms(200) # Debouncing delay
stop_buzzer()
#Skal sørger for at alarmen ikke starter igen fordi det er inden for samme min
utime.sleep(60)
# Toggle the buzzer state
if buzzer_active:
buzzer_pin.toggle()
utime.sleep(1) #gør den ikke kører main loopet konstant, sparer på resourcer