〔ESP32-WROOM-32E〕
〔マイコンのトップに戻る〕
[準備編]
[module編]
[GPIO編]
[通信編]
[ファイル編]
[OLED編]
[WiFi編]
[メール編]
[色々編]
-------------------------------------------------------------------------------- import uasyncio from machine import Pin, Signal async def blink(led, period_ms): # LEDの点滅をくりかえすタスク while True: led.on() await uasyncio.sleep_ms(5) led.off() await uasyncio.sleep_ms(period_ms) async def main(led1, led2): # 新しいタスク(blink)を作成し、実行をスケジューリングする uasyncio.create_task(blink(led1, 700)) uasyncio.create_task(blink(led2, 400)) # 10秒したら終了 await uasyncio.sleep_ms(10_000) led1 = Pin(4, Pin.OUT) # ピン4番(GPIO4)をLED出力で割り付ける led2 = Pin(16, Pin.OUT) # ピン16番(GPIO16)をLED出力で割り付ける led2 = Signal(led2, invert=True) # LED2の出力論理を合わせる # 新しいタスク(main)を作成し、完了するまで待つ uasyncio.run(main(led1, led2)) --------------------------------------------------------------------------------この動作はLED2個が其々の点滅タイミングで10秒間点滅します。
-------------------------------------------------------------------------------- import uasyncio from machine import Pin, Signal async def blink(led, period_ms): # LEDの点滅をくりかえすタスク while True: led.on() await uasyncio.sleep_ms(5) led.off() await uasyncio.sleep_ms(period_ms) led1 = Pin(4, Pin.OUT) # ピン4番(GPIO4)をLED出力で割り付ける led2 = Pin(16, Pin.OUT) # ピン16番(GPIO16)をLED出力で割り付ける led2 = Signal(led2, invert=True) # LED2の出力論理を合わせる # タスクの同期スケジュールと実行に使うイベントループを得る event_loop = uasyncio.get_event_loop() # タスクの作成 event_loop.create_task(blink(led1, 700)) event_loop.create_task(blink(led2, 400)) # stop()が呼ばれるまでイベントループを実行 event_loop.run_forever() --------------------------------------------------------------------------------ここの動作は点滅はしっぱなしです、壊れるまで実行する事でしょう。
-------------------------------------------------------------------------------- import uasyncio from machine import Pin, Signal async def blink(led, period_ms): # LEDの点滅をくりかえすタスク while True: led.on() await uasyncio.sleep_ms(5) led.off() await uasyncio.sleep_ms(period_ms) async def serve(reader, writer): # クライアントが接続して来たら実行されます print('\r\n--- client connected ---') print(reader, writer) while True: bMsg = await reader.readline() print(bMsg) if not bMsg or bMsg == b'\r\n': break await writer.awrite(b'HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n') await writer.awrite(b'Hello\r\n') print('Response write') await writer.aclose() print('Finished request\r\n') led1 = Pin(4, Pin.OUT) # ピン4番(GPIO4)をLED出力で割り付ける led2 = Pin(16, Pin.OUT) # ピン16番(GPIO16)をLED出力で割り付ける led2 = Signal(led2, invert=True) # LED2の出力論理を合わせる # 並行処理タスクの起動 event_loop = uasyncio.get_event_loop() event_loop.create_task(blink(led1, 700)) event_loop.create_task(blink(led2, 400)) event_loop.create_task(uasyncio.start_server(serve, '0.0.0.0', 80)) event_loop.run_forever() --------------------------------------------------------------------------------@ ESP-WROOM-02ボードに書き込みを行いましょう。
import uasyncio from machine import Pin, Signal import network async def blink(led, period_ms): # LEDの点滅をくりかえすタスク while True: led.on() await uasyncio.sleep_ms(5) led.off() await uasyncio.sleep_ms(period_ms) async def client(host, port): global writer # 指定されたサーバーとポートに接続する reader, writer = await uasyncio.open_connection(host, port) # データをダウンロードしてREPLに表示(スターウォーズの始まり始まり) while True: data = await reader.read(500) print(str(data, 'utf8'), end='') led1 = Pin(4, Pin.OUT) # ピン4番(GPIO4)をLED出力で割り付ける led2 = Pin(16, Pin.OUT) # ピン16番(GPIO16)をLED出力で割り付ける led2 = Signal(led2, invert=True) # LED2の出力論理を合わせる # Wi-Fiに接続 ESSID = "BBUser" Password = "" # Wi-Fi 接続を設定する為にクライアントオブジェクトのインターフェースを作成する sta_if = network.WLAN(network.STA_IF) if not sta_if.isconnected(): sta_if.active(True) sta_if.connect(ESSID, Password) # ステーションインターフェイスを有効にする while not sta_if.isconnected(): # WiFiネットワークに接続する pass print('\r\n[network config]\r\n', sta_if.ifconfig()) # 並行処理タスクの起動 event_loop = uasyncio.get_event_loop() event_loop.create_task(blink(led1, 700)) event_loop.create_task(blink(led2, 400)) event_loop.create_task(client("towel.blinkenlights.nl", 23)) try: # stop()が呼ばれるまでイベントループを実行 event_loop.run_forever() finally: writer.aclose() # ソケットをクローズする sta_if.active(False) # サーバーを切断する print('\r\nFin\r\n')--------------------------------------------------------------------------------------------------
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2021 Shigehiro Kimura All Rights Reserved.