組み込み関数
使用頻度が高い組み込み関数について、ひとつづつ解説します
ここで紹介する関数以外にも様々な関数がArudino言語には 標準で用意されているので、 Arduino公式リファレンス も併せて読むことを推奨します
また、インターネット上には非公式日本語リファレンスもいくつかありますが、情報が古いことがあるので気を付けるようにしてください
使用頻度が高い組み込み関数について、ひとつづつ解説します
ここで紹介する関数以外にも様々な関数がArudino言語には 標準で用意されているので、 Arduino公式リファレンス も併せて読むことを推奨します
また、インターネット上には非公式日本語リファレンスもいくつかありますが、情報が古いことがあるので気を付けるようにしてください
指定したピンをアナログ値で読み取ります
返り値は最大10bitsの値です
2^10は1024なので0~1023の整数値が返ってきます
この関数で値を読み取ることができるのは A0 などの A から始まるピン番号のピンのみです
また、番号は A0 のように A を含めて指定してください
analogRead(ピン番号);
// A0の値で周波数を変更
int value = analogRead(A0);
if(value <= 500) {
tone(4, 200, 1000);
} else if(value <= 524) {
tone(4, 400, 1000);
} else {
tone(4, 800, 1000);
}
指定したミリ秒の間、プログラム全体の動作を停止させます
プログラム全体が停止することに留意してください
例えば、待ち時間になにかしらの動作をさせたいにも関わらず、 delay(1000) などとすると、意図しない動作になってしまうことが多いです
delay(停止させたいミリ秒数);
// 4番に接続されたブザーを440Hzで1000ms鳴らす
int buzzer_pin = 4;
int frequency = 440;
tone(buzzer_pin, frequency);
delay(1000);
noTone(buzzer_pin);
指定したピンをデジタル値で読み取ります
読み取った値は HIGH, LOW として返ってきますが、booleanに代入可能です
入力基板によってプルアップ、プルダウンが違う場合があるので基盤を実際に確認をしてください
digitalRead(ピン番号);
// if文を使って22番ピンの値で分岐処理
if(digitalRead(22) == HIGH) {
tone(4, 440, 1000);
}
// スマートな記法(動作は上と同じ)
if(digitalRead(22)) {
tone(4, 440, 1000);
}
// 変数に値を代入
boolean value = digitalRead(22);
ピンに対してデジタル出力(LOW, HIGH)を行います
一度HIGHを出力したピンはLOWを出力するまでHIGHが出力されつづけます
意図しないピンがHIGHになり続け、意図しない部品が動作することが多々あるので気を付けましょう
digitalWrite(ピン番号, HIGH); // HIGHを出力
digitalWrite(ピン番号, LOW); // LOWを出力
// 5番ピンを使用したクロック動作
int clock_pin = 5;
digitalWrite(clock_pin, HIGH);
delay(5);
digitalWrite(clock_pin, LOW);
プログラムが書き込まれ、実行されてからの経過時間(ミリ秒)を返す関数です
返り値は unsigned long 型です
int に値を代入することも可能ですが、 unsigned long は int や long と比べて保持可能なデータ量が大きいので、
長い時間を計測する場合などにエラーを引き起こす原因となることがあります
unsigned long time = millis();
// delayを使わないクロック
unsigned long start_ms;
// クロックを開始する関数
void clock_start() {
digitalWrite(5, HIGH);
start_ms = millis();
}
// 定期実行してクロックを停止させる関数
void clock_check(unsigned long duration) {
if(millis() - start_ms >= duration) {
digitalWrite(5, LOW);
}
}
tone で鳴らした音を消す関数です
特になし
noTone(ピン番号);
// 4番で鳴らした音を1秒後に消す
tone(4, 440);
delay(1000);
noTone(4);
指定したピンをインプットもしくはアウトプットとして設定します
入力を読み取る場合(スイッチやセンサー)にはインプットを、出力を行う場合にはアウトプットを指定してください
pinMode 関数を使用しない場合でもプログラムが動作することがありますが、 pinMode 関数は内部インピーダンスを用途に合わせて切り替えているので、
なるべく指定するようにしてください
pinMode(ピン番号, INPUT); // インプットに指定
pinMode(ピン番号, OUTPUT); // アウトプットに指定
// for-each文を用いた効率的な指定方法
const int output_pins[] = {11, 12, 13, 14, 15};
for(int i : output_pins) {
pinMode(i, OUTPUT);
}
指定したピンに指定した周波数の信号を送る関数です
鳴らし続ける時間(ミリ秒)を指定することも可能です
鳴らし続ける時間を指定しなかった場合、 noTone が実行されるまで音が鳴り続けます
時間を指定した場合、 delay と違い、
時間が経過する間プログラムは停止しません
また、31Hz以下の周波数は生成できません
tone(ピン番号, 周波数); // 時間を指定しない場合
tone(ピン番号, 周波数, 時間(ミリ秒)); // 時間を指定する場合
// ドの音を4番ピンで3秒間鳴らす
tone(4, 440, 3000);