マイコンボードの入出力端子の使い方について紹介します。
「ATOM LITE」や「M5Stack」「Arduino」にはいくつかの端子があります。
電源や通信等に使用する端子もありますが、ほとんどが「入出力端子」として使用できます。
「入力端子」は外部の状態を本体に取り込むことができ、「出力端子」は本体で処理した結果を外部へ出力することができます。
本体の「入出力端子」を「入力端子」にするか「出力端子」にするかはプログラムで設定します。
1.入出力端子の初期設定
使用する端子を入出力用として設定するにはArduinoのコマンドを使用して以下のように行います。
下コード内の 4,5行目が入力設定、7行目が出力設定、8行目が出力端子の初期化です。
// 初期設定
void setup() {
// 入力設定
pinMode(32, INPUT_PULLUP); //端子「32」を入力に設定
pinMode(26, INPUT_PULLUP); //端子「26」を入力に設定
// 出力設定
pinMode(21, OUTPUT); //端子「21」を出力に設定
digitalWrite(21, LOW); //出力初期化(出力0V)
}
pinMode( 端子番号, 入出力設定 );
pinMode:本体の端子の入出力を設定するコマンド
端子番号:本体の端子番号を数値で記入
入出力設定:
INPUT 入力に設定
INPUT_PULLUP 入力に設定(プルアップ設定)
OUTPUT 出力に設定
pinMode( 32, INPUT_PULLUP);
・端子「21」を出力に設定
pinMode( 21, OUTPUT);
2.出力端子の初期化
出力に設定した端子は電源ONした時の初期状態を設定しておく必要があります。
設定方法は以下のようになります。
digitalWrite( 端子番号, 出力状態);
端子番号:本体の端子番号を数値で記入
出力状態:
HIGH 電圧が高い(3.3V)状態に設定
LOW 電圧が低い(0V)状態に設定
digitalWrite( 21, HIGH );
・端子「21」に0Vを出力
digitalWrite( 21, LOW );
3.入出力端子の状態取得
入出力端子の状態を取得するときは以下のプログラムを実行します。
digitalRead ( 端子番号 );
入出力端子の状態が「HIGH(3.3V)」なら実行結果は「1」、「LOW(0V)」なら実行結果は「0」になります。
4.「Lチカ」プログラムで動作確認してみよう(ATOM LITE使用)
以前紹介した「ATOM LITE」の「Lチカ」プログラムでは「本体のボタン」と「本体のLED」を使って動作確認を行いました。
「ATOM LITE」の本体ボタンを使用した「Lチカ」プログラムは以下のリンクで詳しく紹介しています。
今回は「外部スイッチ」と「外部LED」を取り付けて「Lチカ」できるようにしたものです。
「ATOM LITE」本体に「外部スイッチ」と「外部LED」を取り付けたものが下の画像です。
「外部スイッチ」は「デュアルボタンユニット」というものを使用します。
これにはコネクタ付きのケーブルが付属していて「ATOM LITE」のコネクタ(Groveコネクタ)と接続することができます。
「スイッチ」については以下のリンクで詳しく紹介しています。
青ボタンが端子「32」(G32)とつながり、赤ボタンが端子「26」(G26)につながるので、それぞれ入力端子に設定して使用します。
「外部LED」には「抵抗内蔵LED(青色)」を使用しています。
「LED」には足が2本あり、長い方が「+」短い方が「ー」です。長い方を端子「21(G21)」に、短い方を端子「G(0V)」にそれぞれ差し込みます。
「外部スイッチ」と「外部LED」を使用しますがこれらは別途購入する必要があります。
「ATOM LITE」と「デュアルボタンユニット」は「amazon」で購入できます。
抵抗内蔵LED等は「秋月電子通商」さんの方が必要な数量、色だけ購入できて送料(600円)を考えても別で購入するのがお得だと思いますので下表にまとめました。
品名 | 型式等 | 購入先 | 価格 |
---|---|---|---|
抵抗内蔵LED | 抵抗内蔵5mmLED 5V 赤:[ I-06245 ] 青:[ I-06247 ] | 秋月電子通商 | ※色により異なる 1パック(10個)120円~200円 1個15円~25円 |
※コピーは下コード(黒枠)内の右上角にある小さなアイコンのクリックでもできます。
#include <M5Atom.h> //Atomのヘッダファイルを準備
// 初期設定
void setup() {
// 入出力端子設定
pinMode(32, INPUT_PULLUP); //入力端子(青ボタン)
pinMode(26, INPUT_PULLUP); //入力端子(赤ボタン)
pinMode(21, OUTPUT); //出力端子(LED)
digitalWrite(21, LOW); //出力初期化(LED消灯)
}
// メイン
void loop() {
if (digitalRead(32) == 0) { //青ボタンがON(0)なら
digitalWrite(21, HIGH); //LED点灯(3.3V出力)
}
if (digitalRead(26) == 0) { //赤ボタンがON(0)なら
digitalWrite(21, LOW); //LED消灯(0V)
}
delay(100);
}
「LED(発光ダイオード)」については以下のリンクで詳しく紹介しています。
コメント