MicroPythonを使ったデジタル入出力のガイドです。
デジタルピンは、Arduinoボードを使って現実世界とやり取りを行う基本です。これで、以下のようなことが可能です。
- 出力を制御する。例えば、LEDのオン・オフ。
- 入力を読む。例えば、ボタンの状態の検知。
デジタル信号は2つの異なる値をとります。
- HIGH(1): 電圧レベルが、ボードの動作電圧(例: 3.3Vや5V)に近いことを表現します。
- LOW(0): 電圧レベルが0V(接地)に近いことを表現します。
2つの状態しか表現できませんが、デジタル信号は非常に有用です。2つの値を持つという性質上、マイクロコントローラやプロセッサと直接インターフェイスをとることができ、高速にオン・オフする通信(例: センサーの読取や簡単な出力の制御)を要求するタスクに理想的です。また、ノイズがデジタル信号を妨害するのは、HIGHとLOWの間の閾値に近く、十分強いときなので、そのシンプルさにより、電気ノイズに対する耐性を自然に持ちます。これにより、様々な環境で、明瞭で一貫性のある通信ができる、信頼性のあるものになっています。
この章では、MicroPythonでデジタルピンを使う方法を紹介します。
要件
始める前に、要件を確認します。
MicroPythonが利用できるArduinoボード
MicroPythonは、いくつかのArduinoボードで公式にサポートされています。互換性のあるボードの一覧を示します。
- Portenta C33
- Arduino GIGA R1 WiFi
- Portenta H7
- Portenta H7 Lite
- Portenta H7 Lite Connected
- Arduino Nano RP2040 Connect
- Nicla Vision
- Arduino Nano 33 BLE
- Arduino Nano 33 BLE Rev2
- Arduino Nano 33 BLE Sense Rev2
- Arduino Nano ESP32
ハードウェア部品
このガイドでは、いくつかの電子部品を追加で使います。
- LED(ボードのLEDを使う場合はオプション)
- 外部LEDを使う場合は、電流制限抵抗(例: 220Ω)
- ジャンプワイヤー
- 押しボタン
- ブレッドボード
ソフトウェア要件
- Arduino Lab for MicroPython: Arduino Lab for MicroPythonは、Arduinoボードで、MicroPythonスクリプトの作成・実行が可能なエディタです。
ボードとエディタの設定
- Arduino Lab for MicroPythonを開きます。
- ArduinoボードとPCを、USBケーブルで接続します。

ボードとPCを接続します
- ウインドウの左上の接続ボタンをクリックします。接続したボード(のポート名)が現れます

エディタとボードを接続します
デジタル出力
MicroPythonでデジタル出力を制御するには、machineモジュールのPinクラスを使います。ピンを出力に設定して、LEDやリレー、他のアクチュエーターなどのデバイスを制御します。
一定間隔でLEDを点滅させる、定番の「Blink」の例を作ってみましょう。
回路図
以下の回路図に従って、LEDをArduinoボードに接続します。
- LEDのアノード(+)をデジタル出力ピンに接続します。
- LEDのカソード(-)を、抵抗を介して
GNDに接続します。

LED回路
回路を完成させたら、以下のコードをエディタにコピーし、スクリプトを実行してください。
|
|
このコードに何が含まれているか見てみましょう。
- モジュールのインポート:
machineからPinを、遅延のためにtimeをインポートします。 - LEDピンの初期化:
Pinオブジェクトで、ピン番号と方向(Pin.OUT)を設定します。 - メインループ:
led.value(1): ピンをHIGHにして、LEDを点灯します。time.sleep(1): 1秒間プログラムを止めます。led.value(0): ピンをLOWにして、LEDを消灯します。while True:: 無限に繰り返し、LEDを点滅させます。
デジタルピン
デジタル入力を読むことで、プログラムを、ボタン押下やセンサーの信号などの、外部イベントに反応させることができます。MicroPythonでは、ピンを入力にするのに、Pinクラスを使います。入力値を安定させるために、プルモードを設定することもできます。
このセクションでは、異なるプルモードを説明し、Arduinoに押しボタンを接続して、試してみます。
プルアップモードを理解する
デジタルピンが、明確なHIGHやLOWの電圧に接続さえていない状態は、浮いていると言います。この状態では、電気ノイズにより読み取り値が信頼できなくなります。これを避けるため、内部プルアップ抵抗やプルダウン抵抗を使います。Pinコンストラクタでプルモードを指定することで有効化します。
- プルアップモード(
Pin.PULL_UP): 入力ピンを内部でHIGHの電圧レベルに接続し、接続されていないときにHIGHを読むようにします。 - プルダウンモード(
Pin.PULL_DOWN): 入力ピンを内部でLOWの電圧レベルに接続し、接続されていないときにLOWを読むようにします。
これらの内部抵抗はマイクロコントローラーに内蔵されていて、コードから有効化できます。外部抵抗は不要です。
例: プルアップモード
プルアップモードでは、入力ピンを内部でHIGHの電圧レベルに接続します。ボタンのような入力デバイスがアクティブになり、ピンがGNDに接続されると、ピンはLOW(0)を読み出します。
- ボタンの一方をGNDに接続します。
- もう一方を入力に設定したデジタルピンに接続します。

プルアップモードの回路
回路を完成させたら、以下のコードをエディタにコピーし、スクリプトを実行してください。
|
|
このコードに何が含まれているか見てみましょう。
- ボタンピンの初期化:
- ピンをプルアップモード(
Pin.PULL_UP)の入力に設定し、内部のプルアップ抵抗を有効にします。 - ボタンが押されていないときにピンを読むとHIGH(
1)になります。
- ピンをプルアップモード(
- ピンを読む:
- ボタンが押されていないとき、ピンは内部でHIGHにプルされます(
button.value()は1を返します)。 - ボタンが押されているとき、ピンはGNDに接続され、
button.value()は0を返します。
- ボタンが押されていないとき、ピンは内部でHIGHにプルされます(
- メインループ:
- ボタンの状態を読み取り、対応したメッセージを表示します。
- 短時間の遅延はボタンのチャタリングを防ぎます。
例: プルダウンモード
プルダウンモードでは、入力ピンを内部でGNDに接続します。ボタンのような入力デバイスがアクティブになり、ピンがHIGHの電圧レベル(例: 3.3V)に接続されると、ピンはHIGH(1)を読み出します。
- ボタンの一方を3.3V(あるいは5.5V。ボードのロジックに依存)に接続します。
- もう一方を入力に設定したデジタルピンに接続します。

プルダウンモードの回路
回路を完成させたら、以下のコードをエディタにコピーし、スクリプトを実行してください。
|
|
このコードに何が含まれているか見てみましょう。
- ボタンピンの初期化:
- ピンをプルダウンモード(
Pin.PULL_DOWN)の入力に設定し、内部のプルアップ抵抗を有効にします。 - ボタンが押されていないときにピンを読むとLOW(
0)になります。
- ピンをプルダウンモード(
- ピンを読む:
- ボタンが押されていないとき、ピンは内部でLOWにプルされます(
button.value()は0を返します)。 - ボタンが押されているとき、ピンはHIGHの電圧に接続され、
button.value()は1を返します。
- ボタンが押されていないとき、ピンは内部でLOWにプルされます(
- メインループ:
- ボタンの状態を読み取り、対応したメッセージを表示します。
- 短時間の遅延はボタンのチャタリングを防ぎます。
まとめ
このガイドでは、Arduinoで、MicroPythonを使い、デジタルピンとのやり取りを行ういくつかの方法を見てきました。
- デジタル出力の使い方(LEDをオン・オフする)。
- 異なるプルモードの動作方法(
PULL_DOWN、PULL_UP)。 - 両方のプルモードを使ったボタンの読み出し。
オリジナルのページ
https://docs.arduino.cc/micropython/basics/digital-io/
最終更新日
July 26, 2026