Arduino IDEのdigitalRead()関数とanalogRead()関数は、Arduinoボードの異なるタイプの信号を読み取るために使用されます。これらの関数は、デジタル信号とアナログ信号をそれぞれ処理します。以下に、それぞれの関数の詳細と比較を示します。
digitalRead() 関数
概要
- 目的: デジタルピンからの入力信号を読み取ります。
- 返り値:
HIGH(高電圧、通常は5Vまたは3.3V)またはLOW(低電圧、0V)のいずれかの値を返します。
構文
int digitalRead(int pin);
pin: デジタルピンの番号(例: 2, 3, 4など)。
使用例
const int buttonPin = 2; // スイッチが接続されているピン
void setup() {
pinMode(buttonPin, INPUT); // ピンを入力モードに設定
Serial.begin(9600); // シリアル通信を開始
}
void loop() {
int buttonState = digitalRead(buttonPin); // ピンの状態を読み取る
if (buttonState == HIGH) {
Serial.println("Button is pressed");
} else {
Serial.println("Button is not pressed");
}
delay(500);
}
- 説明: スイッチの状態を読み取り、押されているかどうかをシリアルモニタに表示します。
analogRead() 関数
概要
- 目的: アナログピンからの入力信号を読み取ります。アナログ信号は連続的な電圧レベルを示します。
- 返り値: 0から1023の範囲の整数値。これは、通常10ビットの解像度で0Vから5V(または3.3V)をスケーリングした値です。
構文
int analogRead(int pin);
pin: アナログ入力ピンの番号(例: A0, A1, A2など)。
使用例
const int sensorPin = A0; // センサーが接続されているアナログピン
void setup() {
Serial.begin(9600); // シリアル通信を開始
}
void loop() {
int sensorValue = analogRead(sensorPin); // アナログピンからの値を読み取る
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(500);
}
- 説明: センサーからのアナログ値を読み取り、シリアルモニタに表示します。
digitalRead() と analogRead() の比較
1. 信号の種類
digitalRead(): デジタル信号を読み取ります。信号は明確にHIGH(高電圧)またはLOW(低電圧)であり、信号は二値です。analogRead(): アナログ信号を読み取ります。信号は連続的な電圧レベルを示し、0から1023の範囲で表現されます(通常、10ビットの解像度)。
2. 使用されるピンの種類
digitalRead(): デジタルピン(通常は0から13までのピン)で使用します。analogRead(): アナログ入力ピン(通常はA0からA5など)で使用します。
3. 返り値の形式
digitalRead():HIGHまたはLOWの2つの値を返します。analogRead(): 0から1023までの整数値を返します。値は入力電圧の比例として解釈されます。
4. 精度と解像度
digitalRead(): 単純なデジタル読み取りで、解像度はビット数や変化の範囲とは無関係です。analogRead(): 10ビットの解像度で、0から1023までの範囲の値を提供し、より細かい電圧変化を読み取ることができます。
5. 用途
digitalRead(): スイッチやボタン、デジタルセンサーなど、単純なオン/オフ信号の読み取りに使用します。analogRead(): センサーのアナログ出力(温度センサー、光センサー、ポテンショメータなど)、電圧レベルの測定に使用します。
まとめ
digitalRead(): デジタル信号を読み取り、ピンがHIGHかLOWかを判断します。シンプルなスイッチやボタンの状態確認に適しています。analogRead(): アナログ信号を読み取り、ピンにかかる電圧の連続的な変化を数値として取得します。センサーからの詳細なデータ収集やアナログ信号の測定に適しています。
これらの関数を適切に使用することで、Arduinoのデジタルおよびアナログ入力ピンを効果的に活用し、さまざまなプロジェクトに応じたデータの取得と処理が可能になります。


コメント