import time import machine import DS3231 import Button import uasyncio as asyncio import StepperL298M import StepperClock #Async loop = asyncio.get_event_loop() #Initialise the time module with the RTC dsRtc = DS3231.DS3231(machine.I2C(sda = machine.Pin(17), scl=machine.Pin(18))) rtc = machine.RTC() rtc.init(dsRtc.DateTime()+[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()): 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) else: clock.start() middleButton = Button.Button(pin=39,onPushDown=middleButtonClickDown,onPushUp=middleButtonClickUp,onClick=middleButtonClick,inverted=True) clock.start() loop.run_forever()