説明
デジタルI/Oの現在の状態を検査します
書き方 | 状態値=digitalRead(pin番号) |
戻り値 | HIGH または LOW |
引数 | 調べたいI/OのArduinoピン番号 |
プログラム例
//7番ピンの状態を調べてシリアルモニターに表示します int inPin = 7; // pushbutton connected to digital pin 7 int val = 0; // variable to store the read value void setup() { pinMode(inPin, INPUT); // sets the digital pin 7 as input Serial.begin() } void loop() { val = digitalRead(inPin); // read the input pin Serial.println(val) ; }
実験
上記のプログラムをArduinoIDEで入力し、Arduino Unoに転送し実験してみましょう。
Unoの7番にはジャンパワイヤーを1本させいて置き、もう片方は、対面の5VとGNDに差し替えてシリアルモニターの出力を確認します。
1(HIGH)と0(LOW)に変化することが確認できるはずです。
ちなみに、5Vではなく3.3Vにさしても、1(HIGH)となるはずです。
これは、UNOに使用されているCPU(ATMEGA328P)が、3.3VでもHIGHと認識するような仕様だからです。(これはCPUの仕様で、CPUによって数値は異なります)
プログラム画面(シリアルモニター中)
ボードを繋ぎ変えて実験
クムクムロボットで使ってみる
弊社の二足歩行プログラミングロボットクムクムロボットでこの関数を使って実験してみます。
<<距離センサーのポートにスイッチをつけて入力検知>>
注意
ピンに何も接続されていない状態の場合、戻り値は不定(HIGHまたはLOW)となります。
アナログピンに設定されているA0やA1などについてもこの関数を使用することができます。
ただし、Arduino Nano,Pro MiniなどのA6,A7についてはアナログ入力にしか使用できません。