From bf318801d2fafa2786e74693d19a3c2fdb50ddda Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Mon, 14 Nov 2016 01:30:51 +0300 Subject: [PATCH] examples/hwapi: Add uasyncio example of fading 2 LEDs in parallel. --- examples/hwapi/hwconfig_dragonboard410c.py | 3 +++ examples/hwapi/soft_pwm2_uasyncio.py | 31 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 examples/hwapi/soft_pwm2_uasyncio.py diff --git a/examples/hwapi/hwconfig_dragonboard410c.py b/examples/hwapi/hwconfig_dragonboard410c.py index 32fdb9dd6..8061d7b74 100644 --- a/examples/hwapi/hwconfig_dragonboard410c.py +++ b/examples/hwapi/hwconfig_dragonboard410c.py @@ -15,5 +15,8 @@ from machine import Pin # User LED 1 on gpio21 LED = Pin(21, Pin.OUT) +# User LED 2 on gpio120 +LED2 = Pin(120, Pin.OUT) + # Button S3 on gpio107 BUTTON = Pin(107, Pin.IN) diff --git a/examples/hwapi/soft_pwm2_uasyncio.py b/examples/hwapi/soft_pwm2_uasyncio.py new file mode 100644 index 000000000..abeb4b1bf --- /dev/null +++ b/examples/hwapi/soft_pwm2_uasyncio.py @@ -0,0 +1,31 @@ +# Like soft_pwm_uasyncio.py, but fading 2 LEDs with different phase. +# Also see original soft_pwm.py. +import uasyncio +from hwconfig import LED, LED2 + + +async def pwm_cycle(led, duty, cycles): + duty_off = 20 - duty + for i in range(cycles): + if duty: + led.value(1) + await uasyncio.sleep_ms(duty) + if duty_off: + led.value(0) + await uasyncio.sleep_ms(duty_off) + + +async def fade_in_out(LED): + while True: + # Fade in + for i in range(1, 21): + await pwm_cycle(LED, i, 2) + # Fade out + for i in range(20, 0, -1): + await pwm_cycle(LED, i, 2) + + +loop = uasyncio.get_event_loop() +loop.create_task(fade_in_out(LED)) +loop.call_later_ms_(800, fade_in_out(LED2)) +loop.run_forever()