YouTube動画
Arduinoボード端子の内部構造
Arduinoボード端子の内部は、次のような構造になっています。
端子の内部には、出力電圧を制御する機能の他に、電圧を計測する機能も入っています。
電圧を計測するとき、出力電圧制御機能の影響を受けないように、次のようにスイッチで制御できるようになっています。
例えば、出力電圧を制御したい場合は、機能選択スイッチを次のようにします。
また、端子の電圧を計測したい場合は、機能選択スイッチを次のようにします。
このスイッチは、スケッチでどちらの機能にするか指示することができます。
Arduinoボードの制御命令
pinMode命令
端子(ピン)の機能を、「出力制御機能」にするか「電圧計測機能」にするか指定します。
pinMode(端子名, 機能);
- 端子名
-
Arduinoボードに書いてある端子名を書きます。
- 機能
-
「OUTPUT」または「INPUT」を指定。「OUTPUT」の場合は出力電圧のON/OFF制御(デジタル制御)の機能。「INPUT」の場合は電圧読み取り機能。「INPUT」については第5回の動画で詳しく解説します。
- サンプル
-
12番端子を出力制御に切り替えます。
pinMode(12, OUTPUT);
digitalWrite命令
端子の出力電圧のON/OFFスイッチを制御します。
digitalWrite(端子名, 状態);
- 端子名
-
Arduinoボードに書いてある端子名を書きます。
- 状態
-
「HIGH」または「LOW」を指定します。「HIGH」の場合はON、「LOW」の場合はOFFになります。
- サンプル
-
12番端子の出力制御スイッチをONにします。
digitalWrite(12, HIGH);
delay命令
指定した時間、何もしないで待機します。
delay(時間);
- 時間
-
数字で時間を指定します。単位はミリ秒です。
- サンプル
-
1秒何もしないで待機します。
-
delay(1000);
スケッチの書き方
Ardiuno IDEで新規スケッチを作成、またはWokwiで新規プロジェクトを作成すると、次のようなスケッチが表示されます。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
コードは、「setup」か「loop」の波括弧 { と } の間に書きます。
それぞれ次の意味になります。
- setup
-
ここに書いた命令は、Arduinoボードの電源ON直後、またはリセット直後に一回だけ実行される。
- loop
-
ここに書いた命令は、setupの命令を実行後、ずっとり繰返し実行される
チャレンジ課題解答例
スケッチに唯一の正解はありません。この解答例はあくまで参考です。
もし何か疑問に感じることがありましたら、コメント欄からご質問ください。
チャレンジ課題1
12番端子を出力制御しますので、setup部分でpinMode命令を使って端子の機能を切り替えます。
LEDの点滅は同じパターンを繰り返しますので、loop部分にdigitalWrite命令とdelay命令を使ってON/OFF制御します。
void setup() {
// put your setup code here, to run once:
pinMode(12, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(200);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(2000);
}
チャレンジ課題2
点滅パターンは「Arduinoボードが動作を開始したら、最初に3回短く点滅し、その後は1秒ごとにON/OFFを繰り返す」です。
「最初に3回短く点滅」という動作は、動作開始直後に1回だけ実行しますので、setupの部分に書きます。
「1秒ごとにON/OFFを繰り返す」という動作は、ずっと繰り返しますので、loopの部分に書きます。
void setup() {
// put your setup code here, to run once:
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(200);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(200);
digitalWrite(12, HIGH);
delay(200);
digitalWrite(12, LOW);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
delay(1000);
}
チャレンジ課題3
LEDを11番端子に接続しますので、Arduinoボードの11番端子側がアノード(A)、マイナス側がカソード(K)になるようにLEDの接続を次のように変更します。
スケッチでは、11番端子に接続したLEDを制御します。
pinMode命令とanalogWrite命令の1番目のパラメータは、端子名の「11」と書きます。
また、analogWrite命令の2番めのパラメータは、明るさを指定しますので、課題の通りに「10、50、100、255」を順次指定していきます。
analogWrite命令の間は、delay命令で1秒の時間待ちをします。
void setup() {
// put your setup code here, to run once:
pinMode(11, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
analogWrite(11, 10);
delay(1000);
analogWrite(11, 50);
delay(1000);
analogWrite(11, 100);
delay(1000);
analogWrite(11, 255);
delay(1000);
}