88 lines
2.6 KiB
Python
88 lines
2.6 KiB
Python
import time
|
|
import machine
|
|
import DS3231
|
|
import Button
|
|
import uasyncio as asyncio
|
|
import StepperL298M
|
|
import StepperClock
|
|
import neopixel
|
|
|
|
#Async
|
|
loop = asyncio.get_event_loop()
|
|
|
|
#Initialise the time module with the RTC
|
|
try:
|
|
dsRtc = DS3231.DS3231(machine.I2C(sda = machine.Pin(17), scl=machine.Pin(18)))
|
|
rtc = machine.RTC()
|
|
rtc.init(dsRtc.DateTime()+[0])
|
|
except:
|
|
print("Error on DS3231-Inititalisation")
|
|
|
|
housingLEDs = neopixel.NeoPixel(machine.Pin(16, machine.Pin.OUT),5)
|
|
housingLEDs.fill((0,0,0))
|
|
housingLEDs.write()
|
|
|
|
Buzzer = machine.PWM(machine.Pin(2), freq=10000, duty=0)
|
|
|
|
#Initalise the Motors
|
|
stepDurationMs = 8
|
|
stepperminu = StepperL298M.Stepper([19,21,22,23],inverted=False,stepDurationMs=stepDurationMs)
|
|
stepperhour = StepperL298M.Stepper([12,27,26,25],inverted=True, stepDurationMs=stepDurationMs)
|
|
clock = StepperClock.StepperClock(stepperhour,stepperminu)
|
|
|
|
|
|
leftButtonLED = machine.Pin(32,machine.Pin.OUT)
|
|
middleButtonLED = machine.Pin(33,machine.Pin.OUT)
|
|
rightButtonLED = machine.Pin(13,machine.Pin.OUT)
|
|
|
|
def leftButtonClickDown():
|
|
leftButtonLED.on()
|
|
def leftButtonClickUp():
|
|
leftButtonLED.off()
|
|
def leftButtonClick():
|
|
if(clock.isRunning()):
|
|
stepperminu.stepnum = (stepperminu.stepnum+8)%stepperminu.stepsPerRev
|
|
else:
|
|
stepperminu.rotateTo(stepperminu.getOrientation()+0.25)
|
|
leftButton = Button.Button(pin=36,onPushDown=leftButtonClickDown,onPushUp=leftButtonClickUp,onClick=leftButtonClick,inverted=True)
|
|
|
|
def rightButtonClickDown():
|
|
rightButtonLED.on()
|
|
def rightButtonClickUp():
|
|
rightButtonLED.off()
|
|
def rightButtonClick():
|
|
if(clock.isRunning()):
|
|
stepperminu.stepnum = (stepperminu.stepnum+8)%stepperminu.stepsPerRev
|
|
else:
|
|
stepperminu.rotateTo(stepperminu.getOrientation()-0.25)
|
|
|
|
#if(clock.isRunning()):
|
|
# stepperhour.stepnum = (stepperhour.stepnum+8)%stepperhour.stepsPerRev
|
|
#else:
|
|
# stepperhour.rotateTo(stepperhour.getOrientation()+0.25)
|
|
rightButton = Button.Button(pin=34,onPushDown=rightButtonClickDown,onPushUp=rightButtonClickUp,onClick=rightButtonClick,inverted=True)
|
|
|
|
def middleButtonClickDown():
|
|
pass
|
|
def middleButtonClickUp():
|
|
pass
|
|
def middleButtonClick():
|
|
middleButtonLED.value(not middleButtonLED.value())
|
|
if middleButtonLED.value():
|
|
clock.stop()
|
|
stepperminu.rotateTo(0)
|
|
stepperhour.rotateTo(0)
|
|
housingLEDs.fill((255,0,255))
|
|
housingLEDs.write()
|
|
else:
|
|
clock.start()
|
|
housingLEDs.fill((0,0,0))
|
|
housingLEDs.write()
|
|
middleButton = Button.Button(pin=39,onPushDown=middleButtonClickDown,onPushUp=middleButtonClickUp,onClick=middleButtonClick,inverted=True)
|
|
|
|
|
|
|
|
clock.start()
|
|
|
|
loop.run_forever()
|