Я нахожусь в конце моего остроумия здесь.Я использую 2 разных датчика.Когда срабатывает первый датчик, я хочу мигать желтым светодиодом один раз в секунду.Когда срабатывает второй датчик, я хочу мигать красным светодиодом два раза в секунду.Я могу сделать это по одному, и это нормально, но я не могу заставить процесс повторяться (как, например, я сработаю с первым датчиком, и будет воспроизводиться желтый светодиодный индикатор, но повторный запуск этого датчика не имеет никакого эффекта. IТакже невозможно запустить другой датчик, пока я не закрою программу и не перезапущу. Обратите внимание, что следующий код находится в Micropython на ESP8266-12E.
import uasyncio as asyncio
import machine
import time
import os
# Yellow LED: Pin 15
Y_LED = machine.PWM(machine.Pin(15))
Y_LED.freq(300)
# Red LED: Pin 2
R_LED = machine.PWM(machine.Pin(2))
R_LED.freq(300)
H2_1 = machine.Pin(9, machine.Pin.IN, machine.Pin.PULL_UP)
H2_2 = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)
async def FlashRed():
for i in range (20):
R_LED.duty(1023)
await asyncio.sleep(0.5)
R_LED.duty(0)
await asyncio.sleep(0.5)
async def FlashYellow():
for i in range (10):
Y_LED.duty(1023)
await asyncio.sleep(1)
Y_LED.duty(0)
await asyncio.sleep(1)
loop = asyncio.get_event_loop()
def Check_Button():
while True:
if H2_1.value():
loop.create_task(FlashRed())
loop.run_forever()
if H2_2.value():
loop.create_task(FlashYellow())
loop.run_forever()
time.sleep(0.1)
while True:
Check_Button()
Я бы хотел, чтобы на плате отображался мигающий красный светодиод, когдавысокий уровень на выводе 9, а затем отображать этот мигающий красный светодиод до тех пор, пока уровень на выводе 9 не станет низким.
Я также хотел бы, чтобы на плате отображался мигающий желтый светодиод, когда на выводе 4 высокий уровень, и аналогичным образом отображал этот мигающий желтый светодиодпока на выводе 4 не будет низкий уровень.
Я бы хотел иметь возможность одновременно запускать как красный рисунок 9, так и желтый 4 светодиодный индикатор одновременно или независимо.
В настоящее время я могу сделать только одинили другое. Плата ожидает ввода от вывода 9 или 4. Это здорово. Когда вывод 9 становится высоким, плата правильно отображает красныймигающий светодиодный рисунок.Шаблон повторяется 10 раз, и это здорово.Но затем, после того как шаблон завершится, я не смогу его снова запустить и не смогу запустить желтый мигающий светодиод.Если я начну с желтого шаблона, я не смогу перезапустить желтый шаблон и не могу запустить красный шаблон.Я должен выйти из сценария и начать заново.
Зацикливание Check_Button () не работает для меня.
Любая помощь будет очень признательна.Спасибо!