GPIO IN, OUT (MicroPython + Thonny)

プログラムの書き方

LED やスイッチを使う上でよく使われる関数については Quick reference for the ESP32Pins and GPIO [日本語版] を参照して欲しい.

L チカ

電子工作における Hello World と言える L チカを実行するためのプログラムを作成する.

L チカをする. LED の 1 番目は GPIO 13 なので, それを 5 回点灯させる.

from machine import Pin
from time import sleep
led = Pin(13, Pin.OUT)
for i in range(5):
    led.on()
    sleep(1)
    led.off()
    sleep(1)
  • 1~2 行目: 必要なライブラリの読み込み
  • 3 行目: LED の接続されているピン (GPIO 13) を出力に設定.
  • 4~8 行目: for 文で led の on と off を繰り返す.

LED の 7 番目を点灯させたい場合には, 上記と同じセルの GPIO の番号を 33 に変更して, 上段の Run ボタンを押すか, シフトキーとエンターを一緒に押せば良い.

from machine import Pin
from time import sleep
led = Pin(33, Pin.OUT)
for i in range(5):
    led.on()
    sleep(1)
    led.off()
    sleep(1)

L チカとスイッチ

スイッチと LED を連動させたプログラムを書く. 以下のようなプログラムを書くと, SW4 を ON/OFF した時に LED1 が点灯/消灯する.

from machine import Pin
from time import sleep
led1 = Pin(13, Pin.OUT)
sw1  = Pin(19, Pin.IN, Pin.PULL_UP)
while True:
    if (sw1.value()==1): 
        led1.on()
    else:
        led1.off()
  • 1~2 行目: 必要なライブラリの読み込み
  • 3 行目: LED の接続されているピン (GPIO 13) を出力に設定.
  • 4 行目: スイッチの接続されているピン (GPIO 19) を入力に設定.
  • 5~9 行目: for 文でスイッチがオン (値が1) の時に led を on にしている.

課題

  • LED とスイッチを使うプログラムを作成せよ. 内容は自由であるが, 特にアイデアが思いつかなけれ以下の例で示すプログラムを作成せよ.
例) 各スイッチに対して以下のように別々の LED を割り当て, スイッチを入れたら割り当てられた LED が点灯する (スイッチを切ったら LED が消灯する) プログラムを作成せよ.
  • スイッチ 1 を ON/OFF -> LED1,2 が ON/OFF
  • スイッチ 2 を ON/OFF -> LED3,4 が ON/OFF
  • スイッチ 3 を ON/OFF -> LED5,6 が ON/OFF
  • スイッチ 4 を ON/OFF -> LED7,8 が ON/OFF