soft_pwm2_uasyncio.py 779 B

12345678910111213141516171819202122232425262728293031
  1. # Like soft_pwm_uasyncio.py, but fading 2 LEDs with different phase.
  2. # Also see original soft_pwm.py.
  3. import uasyncio
  4. from hwconfig import LED, LED2
  5. async def pwm_cycle(led, duty, cycles):
  6. duty_off = 20 - duty
  7. for i in range(cycles):
  8. if duty:
  9. led.value(1)
  10. await uasyncio.sleep_ms(duty)
  11. if duty_off:
  12. led.value(0)
  13. await uasyncio.sleep_ms(duty_off)
  14. async def fade_in_out(LED):
  15. while True:
  16. # Fade in
  17. for i in range(1, 21):
  18. await pwm_cycle(LED, i, 2)
  19. # Fade out
  20. for i in range(20, 0, -1):
  21. await pwm_cycle(LED, i, 2)
  22. loop = uasyncio.get_event_loop()
  23. loop.create_task(fade_in_out(LED))
  24. loop.call_later_ms(800, fade_in_out(LED2))
  25. loop.run_forever()