from machine import Pin, I2C, SPI
from ssd1306 import SSD1306_I2C
import framebuf, sys
import utime
import os
import time
import ds1307
pix_res_x = 128
pix_res_y = 64
speaker = Pin(15, Pin.OUT)
i2c_rtc = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000)
ds1307rtc = ds1307.DS1307(i2c_rtc, 0x68)
def init_i2c(scl_pin, sda_pin):
# Initialize I2C device
i2c_dev = I2C(1, scl=Pin(scl_pin), sda=Pin(sda_pin), freq=200000)
i2c_addr = [hex(ii) for ii in i2c_dev.scan()]
if not i2c_addr:
print('No I2C Display Found')
sys.exit()
else:
print("I2C Address : {}".format(i2c_addr[0]))
print("I2C Configuration: {}".format(i2c_dev))
return i2c_dev
def display_text(oled):
oled.text("Alarm Time", 25, 15)
oled.text(str(alarm_time_h)+":"+str(alarm_time_m),45,40)
oled.show()
def main():
i2c_dev = init_i2c(scl_pin=27, sda_pin=26)
oled = SSD1306_I2C(pix_res_x, pix_res_y, i2c_dev)
display_text(oled)
pinEnabled = Pin(20, Pin.OUT,value=0)
pinStep = Pin(19, Pin.OUT)
pinDirection = Pin(18, Pin.OUT)
slide_pot = machine.ADC(28)
button = Pin(6, Pin.IN)
alarm_time_h = 17
alarm_time_m = 50
triggered = False
def read_pot_value():
return (slide_pot.read_u16() / 65535) * 100
stepsPerRevolution = 100
main()
while True:
speaker.on()
print(triggered)
current_time = ds1307rtc.datetime
current_time_h = current_time[3]
current_time_m = current_time[4]
current_time_s = current_time[5]
if(current_time_h == alarm_time_h and current_time_m == alarm_time_m):
triggered = True
while triggered:
if(button.value() == 1):
triggered = False
break
for i in range(0,50):
pinDirection.on()
pinStep.on()
time.sleep_ms(5)
pinStep.off()
for i in range(0,100):
pinDirection.off()
pinStep.on()
time.sleep_ms(5)
pinStep.off()
for i in range(0,50):
pinDirection.on()
pinStep.on()
time.sleep_ms(5)
pinStep.off()
pot_value = int(read_pot_value())
print(button.value())
time.sleep_ms(50)