今回の講座は読み飛ばしても大丈夫です。あとから見ると役立つ内容なのでサラッと眺めるのもありです。このプログラムってどんな意味だっけ?とかピンの配置はどうなってたっけ?て思ったときにぜひココに戻ってきてください。
プログラムの意味
前回 Arduino講座03(動作確認・Lチカ) ではdigitalWrite()
を使ってLEDを光らせました。Arduinoにはいろいろなピンがありますが13番ピン以外はどこを使えばいいでしょう?
その前にプログラムの意味をきちんとおさえて、ピンの予備知識も増やしましょう。まずはプログラム。
void setup() {
pinMode(13, OUTPUT); //13番ピンを出力に設定
}
void loop() {
digitalWrite(13, HIGH); //LEDを光らせる
delay(1000); //1秒待つ
digitalWrite(13, LOW); //LEDを消す
delay(1000); //1秒待つ
}
1行目 セットアップ関数。設定入力や1回だけ実行する。
2行目 13番のピンを出力モードに設定
pinMode(pin, mode)
pin : ピン番号
mode : INPUT(入力), OUTPUT(出力), INPUT_PULLUP(内部プルアップ抵抗)
5行目 ループ関数。中括弧{}内をくりかえし実行する。
6行目 13番ピンをHIGHに設定。すなわち電圧5Vで電気を流す。
digitalWrite(pin, value)
pin : ピン番号
value : HIGH(5V), LOW(0V)
7行目 そのままの状態で1000ミリ秒間(つまり1秒間)待つ。delayは遅れという意味。
delay(ms)
ms : 数字(単位はミリ秒)
8行目 13番ピンをLOWに設定。すなわち電圧0Vにして電気ストップ。
Arduinoのプログラムで注意することは
- まずピンの入出力を設定すること
- プログラムは中括弧
{}
ではさまれたところに書く - プログラムの終わりにはセミコロン「
;
」を入れる
です。CやC++に近い言語です。
ピン配置(ピンアウト)
次にArduino UNOのピン配置をArduino公式サイトにあった図で確認してみましょう。ピンの概要は次の通りです。
- アナログ入力ピン6本(A0~A5)
- デジタル入出力ピン14本(D0~D13)出力は5V、最大電流20mA
- PWM出力6本(3, 5, 6, 9,10,11番ピン)
- グランドピン3本(GND)
- 電源出力1本ずつ(3V3, 5V)
- 電源入力1本(VIN)5V~12V
Arduino UNO R3のピン配置は下図参照。
ピンは共有している箇所(例えばA4/SDA, A5/SCLなど)もあります。アナログ(A0~A5)の横にもデジタル(D14~D19)とあるのでデジタルとしても使えそうです。
digitalWrite()が使えるピンはどこ?
では本題。すでに13番ピンでdigitalWrite関数を使ったのでデジタル入出力ピンD0~D13が使えそうなのは分かりますよね?例えば8番ピンでは
digitalWrite(8, HIGH); //8番ピンを5Vで出力
とすれば。ただしD8とするとエラーになるの注意。
アナログ入力ピンではどうでしょう?デジタルも使える表記が図にありましたがいきなり試すにはちょっと怖い。そこでTinkerCADのシミュレーションでまずは試してみます。今回はアナログ入力ピンA3を出力モードにします。使うプログラムはこれ↓
void setup() {
pinMode(A3, OUTPUT); //A3番ピンを出力に設定
}
void loop() {
digitalWrite(A3, HIGH); //LEDを光らせる
delay(500); //0.5秒待つ
digitalWrite(A3, LOW); //LEDを消す
delay(500); //0.5秒待つ
}
TinkerCADでお試し↓
できた!では実機(Arduino NANO互換機)で検証です。13番に差していた青赤コードをA3に付け替えてプログラム書き込み。
結論
digitalWrite()関数が使えるピンは
- A0~A5(アナログ入力ピン)
- 0~13(デジタル入出力ピン)←通常はここを使う
A0~A5は14~19としても設定できます。例えばA3番ピンは次のようにも書くこともできます。
digitalWrite(17, HIGH); //17番ピン(A3番ピン)を5Vで出力
ということでピンの配置もそろそろ分かってきたのではないでしょうか。次からモーターに入ります。基本はLEDと同じですが、聞きなれない追加の部品が必要です。それが何か?については次回詳しく!