Digital Read Serial

スイッチを読み、その状態をArduinoのシリアルモニタに表示します。


Last revision:2024/10/03

この例は、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が表示されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
  DigitalReadSerial

  Reads a digital input on pin 2, prints the result to the Serial Monitor

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/DigitalReadSerial
*/

// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState = digitalRead(pushButton);
  // print out the state of the button:
  Serial.println(buttonState);
  delay(1);  // delay in between reads for stability
}

さらに学ぶ

付属のスケッチ例に、さらに多くの基本的なチュートリアルがあります。

Arduinoプログラミング言語の詳細を集めた、言語リファレンスを調べることもできます。

Last revision 2015/07/29 by SM

オリジナルのページ

https://docs.arduino.cc/tutorials/uno-rev3/DigitalReadSerial/

最終更新日

August 2, 2026

inserted by FC2 system