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) leftButtonLED = machine.Pin(32,machine.Pin.OUT) middleButtonLED = machine.Pin(33,machine.Pin.OUT) rightButtonLED = machine.Pin(13,machine.Pin.OUT) clock = StepperClock.StepperClock(stepperhour,stepperminu) 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) 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()