デジタルI/O

デジタル信号の入出力方法を学びます。


Author: Karl Söderby、Last revision: 2024/02/05


この章では、電子部品とMicroPythonモジュールを使い、実用的な例を通じてデジタル信号を扱います。

以下の事柄を学びます。

  • ボタンの状態を取得する
  • LEDを光らせる
  • Nano ESP32で連続して動作させる(ループ状態にする)

デジタル信号

デジタル信号はHIGHかLOWの2つの状態だけを持ちます。例えば、ボタンの状態(押されているか、押されていないか)を読んだり、LEDを点灯させたり(オン/オフ)します。

デジタル信号はどのように動作するのでしょうか? とても簡単です。ボタンの場合、Arduinoは電圧がかかっているかをプログラムで確認し、電圧がかかっていれば、HIGH状態もしくは1です。そうでなければ、LOW状態もしくは0です。

LEDの場合は、反対のことを行います。HIGHもしくはLOWを出力します。LEDをArduinoのデジタルピンに接続していれば、1か0を書き込むことで、LEDを点灯もしくは消灯できます。

演習1: ボタンの状態を取得する

この演習では、ボタンの状態を取得します。以下の図のように、ボタンをNano ESP32ボードに接続しておく必要があります。

ボタンの回路

ボタンの回路

Nano ESP32を、ねじ端子付き基盤に接続するときは、アダプタの図に注意し、ボードのUSB-C®ポートを、図のように接続してください。

ねじ端子付き基盤は、部品を素早く確実に接続するための、素晴らしい方法です。適切な大きさのドライバーを準備し、ピンに接続したい電線をアダプタのねじ端子の側面の穴に通し、対応するねじを締めます。

電線を固定したら、確実な接続ができました。

コードエディタを起動し、以下のスクリプトをmain.pyにコピー・ペーストします。そして、“Run"ボタンをクリックし、実行します。

from machine import Pin
import time

button = Pin(9, Pin.IN, Pin.PULL_UP)

while True:
    print(button.value())
    time.sleep(0.5)
    if button.value() == 1:
        print("BUTTON PRESSED!")
i
ピン番号は、Nanoボードの番号ではなく、ESP32-S3のGPIO番号を反映していることに注意してください。この回路では、ボタンをD6ピンに接続していますが、コードでは9番ピンを使っています。詳細とピンマップはこちらを参照してください。

“Run"ボタンをクリックし、実行します。その後、ボタンを押すと、端末に"BUTTON PRESSED!“と表示されるのが見えます。

回路でよく使われる、ボタンの状態の取得に成功しました。

演習2: LEDを光らせる

次の演習では、LEDを光らせます。以下の図のように、LEDをNano ESP32ボードに接続しておく必要があります。

LEDの回路

LEDの回路

コードエディタを起動し、以下のスクリプトをmain.pyにコピー・ペーストします。そして、“Run"ボタンをクリックし、実行します。

from machine import Pin
import time

myLED = Pin(9, Pin.OUT)

while True:
    myLED.value(0)
    time.sleep(1)
    myLED.value(1)
    time.sleep(1)

スクリプトを実行すると、LEDが点滅するのがわかります。スクリプトにtime.sleep(1)を追加したためです。この行が実行されると、Nano ESP32は次の命令を実行する前に1秒停止します。

while True:文も使いました。これは、Nano ESP32をループ状態にし、スクリプトを停止させるまで、無限に実行します。

まとめ

デジタル信号は、2つの値を持ちます。一つはHIGHでもう一つはLOWです。これは、ボタンの状態(押しているか押していないか)を決定したり、LEDの点灯・消灯状態を制御したりします。これ以外にも多くのアプリケーションで利用されます。電気設計の基本の一部です。

演習では、デジタル信号に関するハンズオンを体験しました。Nano ESP32ボードに接続したボタンの状態を取得し、LEDの出力を制御しました。

次の章: アナログI/OとPWM信号

オリジナルのページ

https://docs.arduino.cc/micropython/micropython-course/course/digital/

最終更新日

April 14, 2024

inserted by FC2 system