スイッチを読み、その状態をArduinoのシリアルモニタに表示します。
この例は、USB接続したArduinoとPCの間で、シリアル通信を確立し、スイッチの状態を観測する方法を示します。
必要なハードウェア
- Arduinoボード
- モーメンタリスイッチやボタン、トグルスイッチ
- 10kΩの抵抗
- ジャンプワイヤー
- ブレッドボード
回路
3本の電線をボードに接続します。最初の2本(赤と黒)は、ブレッドボードの端にある長い垂直の列に接続し、5V電源とGNDを供給できるようにします。3本目の電線は、デジタルピンの2番から押しボタンの端子の1本に接続します。ボタンの同じ端子をプルダウン抵抗(ここでは10kΩ)を通じて、GNDに接続します。ボタンのもう一つの端子は5Vに接続します。
押しボタンやスイッチは、押している間、回路の2点を接続します。押しボタンが開放されている(押されていない)とき、押しボタンの2つの端子間は接続していません。ピンはプルダウン抵抗を通じてGNDに接続されるので、LOWあるいは0を返します。ボタンが閉じている(押されている)ときは、2つの端子間接続することで、5Vピンに接続されるので、HIGIあるいは1を返します。
デジタルI/Oピンを全てから切断すると、読み取り値は不規則に変化するかもしれません。入力が「浮いている」からで、電源にもGNDにも接続しておらず、ランダムにHIGHかLOWを返します。これが、回路でプルダウン抵抗が必要な理由です。
回路図
コード
以下のプログラムの、setup関数内で最初に行うことはシリアル通信の開始で、接続したボードとPC間を9600bpsに設定します。
Serial.begin(9600);
次に、ボタンからの出力を読むための、デジタルの2番ピンを入力に初期化します。
pinMode(2,INPUT);
これで、setup関数は完成し、コードのメインループに移ります。ボタンが押されると、回路に5Vがかかり、押されていないと10kΩの抵抗を通じてGNDに接続されます。これはデジタル入力で、オンの状態(Arduinoでは1かHIGH)か、オフの状態(Arduinoでは0かLOW)のどちらかをとり、その中間値はありません。
プログラムのメインループで最初にする必要があることは、スイッチからくる情報を格納する変数を作成することです。スイッチからの情報は1か0のどちらかなので、intデータ型を使うことができます。
この変数をsensorValueと呼ぶことにし、デジタルピンの2番から読み取った値に設定します。これを以下の1行で行うことができます。
int sensorValue = digitalRead(2);
ボードが入力を読み取ると、PCにこの情報を10進数の値として表示します。コードの最後のSerial.println()でこれを行います。
Serial.println(sensorValue);
このとき、Arduinoソフトウェア(IDE)でシリアルモニタを開くと、スイッチが開いているときは0が、閉じているときは1が表示されます。
|
|
さらに学ぶ
付属のスケッチ例に、さらに多くの基本的なチュートリアルがあります。
Arduinoプログラミング言語の詳細を集めた、言語リファレンスを調べることもできます。
Last revision 2015/07/29 by SM
オリジナルのページ
https://docs.arduino.cc/tutorials/uno-rev3/DigitalReadSerial/
最終更新日
August 2, 2026