Arduinoでなにやる?Lチカでしょ。ということで購入したOSOYOOのスターターキットにも当然のごとくLチカのレッスンがあったのでそれに基づいてやってみよう

MEMO

この記事は以前に購入したOSOYOO製のArduino学習キットのレッスン内容について解説した記事です。
OSOYOOの学習キットは複数のグレードがあり、僕が購入したのは「LACC2006AD」という型番のもので低価格帯のグレードのものになります。

公式マニュアル LACC2006AD

OSOYOOはキットの内容を時々変更しているようで、僕が購入したものは品切れになっています。上記のリンクは僕が購入したキットに構成が近い製品です(やや豪華版)

他のレッスンの内容を知りたい場合は、下記のリンク先にまとめていますので、そちらを参照してください。

Arduino互換のスターターキットを買ってみた

Arduinoを触ってみたいけど、何を買ったらいいのか、なにから始めればいいのかわかならない!調べて見れると便利でお得な学習…

用意するもの

  • Arduino UNO R3互換ボード
  • LED
  • 抵抗(200・1k・10k)
  • ブレッドボード
  • ジャンパ線
  • パソコン
  • USBケーブル
MEMO

上記はキット付属品を使う場合。LEDにあった抵抗を用意しよう

回路図と結線

Arduino LED回路図

回路図としては非常に簡単。これをブレッドボード使って実現する。

ブレッドボードの仕組み

ブレッドボード

ブレッドボードには無数の穴が空いておりこの穴に電子部品やジャンパ線を差し込んで使用する。

これはただの穴でなく内部で接続されているため、内部配線のルールを知っていないと使えない

まず上下にプラスとマイナスの線が走っているがこれらは、赤線、青線で示されているように横方向にすべてつながっている。上下は繋がっていないので上下のマイナスを1本化したい場合はジャンパ線でつなぐ。

続いて内側の穴は黄色線で示したように「a~e」「f~g」というふうに縦方向につながっている。eとfはつながっていない。面倒なので黄色線を途中でやめたがすべて同じようにつながっている。

回路図の通りにブレッドボードで結線する

配線例

これを理解したうえで、先ほどの配線図の通りにつなぐとこの図のようになる。赤い線から抵抗、LED、GNDまで内部配線を通して一本のラインでつながっていることがわかると思う。

注意

抵抗は極性が無いので向きは気にしなくてよいがLEDを含めてダイオードには極性がある。キットに付属しているような砲弾型が最も一般的なLEDだけど、このタイプのLEDの場合は足の長いほうがプラス側。足の長さ以外では内部の金属端子の形で見分けることもできるがここでは割愛。
尚ダイオードではプラス側をアノード、マイナス側をカソードという。

スケッチにプログラムを書く

さてそれではスケッチにプログラムを書いていこう。

今回はLEDを点滅させたい。その第一歩は光らせること。現在プラスのラインがデジタルの2番に刺さっている。つまりこの2番から電圧を出力させればLEDは光る。

さてこのデジタル入出力端子はその名の通りで入力と出力の両方のモードを持っている。そこでまずこれを出力モードにする

pinMode(2, OUTPUT);

これがその命令。2番を出力モードにしてね。という意味

さてこれは最初に一回だけ実行すれば良いので

void setup() {
  
  pinMode(2, OUTPUT);
   
}

このようにsetup()の中に書けばOK

続いて2番に電圧をかけるために

digitalWrite(2, HIGH);

これが「2番の電圧かけて」という意味だ。これでLEDが点灯する。

反対に消す場合は

digitalWrite(2, LOW);

ハイ、ローという表現が独特に感じるが意味合いとしてはオン、オフと捉えて問題ない。

さて一定時間つけて、消すという処理をするので待ち時間を発生させる命令が必要になる

delay(500);

カッコ内の数字(引数という)が待ち時間で単位はミリ秒。この場合は0.5秒という意味になる。

これは繰り返す必要があるのでloop()に書こう

void loop() {
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
}
  • 2番をオン
  • 0.5秒待つ
  • 2番をオフ
  • 0.5秒待つ

これが繰り返されるというわけだ。

ここまで出来たらまずコンパイルしてエラーが無いか確かめて問題なければ実機を接続して書き込もう

間違えていなければこれでLEDが点滅する。

変数を使う

さてレッスンの模範解答のコードではさらに変数が使われている。同じように変数を使ったコードに書き換えてみよう

まず変数ってなんだ?ということだけど、名前の書いてある箱のようなものを想像してほしい。箱の中にデータを保存しておくことで後から値を取り出して使えるのが変数。

というわけでまず変数を用意する。それを変数の宣言という。

int LED;

これが変数の宣言。これはint型のLEDという変数を用意した。という意味。

int型とは整数という意味。箱にLED(整数専用)と書いてある感じ。

int型の変数に文字列を入れようとするエラーになる。また「2.1」と入れた場合は切り捨てられて「2」が入る

LED = 2;

数値を入れる場合はイコールを挟んで書く。これを「変数LEDに2を代入した」と表現する。右辺のものを左辺に入れることを代入といい数学のイコールとは意味が違うことを覚えておこう

int LED = 2;

このように宣言と代入を同時に行ってもよい

さてこれで変数LEDは「2」と同じ意味を持つ

そこで2の部分をすべて変数に置き換えると

int LED = 2;

void setup() {                
  
  pinMode(LED, OUTPUT);
   
}
 
void loop() {
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}

このコードでも先ほどとまったく同じように動作するはず。

変数に置き換える意味は色々あるが、例えば2番pinではなく3番pinにつなぎ変えたとしよう。

その場合

int LED = 3;

このように1カ所変更するだけでよい。

もし変数を使っていないと、2と書いてある部分をすべて3に書き換えないといけない。

コードが複雑になるほど重要になってくることが想像できると思う。

MEMO

変数はプログラミングにおいて最初の壁。わかる人にとっては簡単だけど、最初は躓く人も多い。この段階では難しく考えなくていい。

LEDと抵抗

さてうまく動作したらレッスンでは抵抗値を200オームから1kオーム、10kオームと変更してみようとなってる。

やってみるとLEDが暗くなるはず。抵抗値が大きくなるほどLEDは暗くなるわけだ

では抵抗を付けないとどうなるか?

これは絶対にやってはいけない。すべてのLEDは動作する電圧と電流が決められている。

このサイズのLEDだと大体2~3Vで動作するのが普通。でも今回出力されている電圧は5Vなので電圧を調整しないといけない。この作業を行っているのが直列接続した抵抗。

今回はキットになっているのでLEDに適した抵抗値の抵抗がセットされている。

通常は使用するLEDと電源電圧に合わせて抵抗値を計算しないといけないことを覚えておこう。

そのあたりは別の記事で解説している

LEDに直列接続する抵抗値の求め方

LEDを光らせたいとき、抵抗を直列に接続する必要がある。このとき何オームの抵抗を接続するべきかは電源電圧と使用するLEDによ…

Arduinoを始めるなら学習キットがおすすめ

学習キットならArduino互換ボード本体に加えてLEDやモーターが付いてくるのですぐに実験&学習がスタートできる。

僕が買ったのはOSOYOO製のセットで比較的シンプルなセット。※セット内容は常に変動するため購入当時と同じものは見つからなかった。リンク先は僕が購入したものになるべく近いものを選んでみた。

OSOYOO学習キットのまとめ記事

Arduino互換のスターターキットを買ってみた

Arduinoを触ってみたいけど、何を買ったらいいのか、なにから始めればいいのかわかならない!調べて見れると便利でお得な学習…

まとめ記事ではこの学習キットを選んだ理由や各レッスンの概要とレッスン毎の詳細記事へのリンクをまとめているので、Arduinoを始めたいという人の参考になればと思う