Arduino入門 第3回 プログラミングの第一歩

目次

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);
}
通知の設定
通知タイミング
guest
0 コメント
本文中にフィードバック
全てのコメントを見る
目次