このページの本文へ

秋の夜長に楽しむ電子工作 “Lチカ”から1歩先へ

40代、Arduinoをイチから始めてみる【Arduinoいまさら超入門】

2016年09月09日 09時00分更新

文● 宮里圭介 編集●北島幹雄/ASCII STARTUP

  • この記事をはてなブックマークに追加
  • 本文印刷

自分で用意したLEDを光らせてみる

 さて、この「Blink」というスケッチをArduinoに書き込むと、基板上のLEDが点滅するわけですが……これでLチカができたというには、あまりにも何もやっていません。そこで、小さなブレッドボードを使って、別のLEDを光らせてみましょう。

 まずはLEDと抵抗、ブレッドボード、ジャンプワイヤーを用意します。ここでは330Ωの抵抗を用意しましたが、抵抗の値はLEDによって変わってきますので、まずはこの計算方法を解説しておきます。

 使用するLEDの順方向電圧が2V、最大電流が20mA、ArduinoのIO出力が5Vの場合を考えてみましょう。抵抗にかかる電圧はLEDの順方向電圧ぶん電圧が降下すると考えられるので、5Vから2Vを引いた3Vとなります。ここを流れる電流が20mA未満になればいいのですから、抵抗は150Ω以上となるわけです。上限ギリギリで使うのは怖いので、できれば200Ω以上にするといいですね。

必要な抵抗値の計算方法

 ちなみに、今回使用したGenuino 101のIO出力は3.3Vです。この場合、3.3VからLEDの順方向電圧2Vを引いた1.3Vで20mA未満となればいいのですから、抵抗値は65Ω以上を選べばいいことになります。

 とはいえ、最大電流近くでLEDを光らせると大抵まぶしく、見づらいことが多くあります。輝度を低くしたい場合は抵抗値を大きくし、LEDに流れる電流を小さくすることで暗くしてあげましょう(実際、今回は330Ωを使っています)。ちなみに、LEDはあるけどスペックがよくわからないという場合は、とりあえず300~1kΩくらいの抵抗を使っておけばだいたい大丈夫です。

 配線はとてもシンプルで、ブレッドボードに抵抗とLEDを直列に接続。あとはArduinoの13番ピンとGNDをジャンプワイヤーでArduinoと接続するというだけです。

ブレッドボード上で、抵抗とLEDを接続

ジャンプワイヤーで「13」と「GND」を接続

 ブレッドボードは内部でピンが一列に接続されているので、実際の回路図とブレッドボード上の回路を合わせるみると、このような感じになっているわけですね。

 これで「Blink」を動かすと、基板上のLEDだけでなくブレッドボード上のLEDも点滅するようになったハズです。

ブレッドボードのLEDが光る!

 ここまでで、Blinkという“ソフト”と、LEDの接続という“ハード”の両方を作ったことになります。立派な電子工作です。とはいえ、これだけではただの動作確認みたいなものですので、もう少しちゃんと機能があるものを考えてみましょう。

ステップ1:3分でLEDがすべて消える「3分タイマー」を作る

 イチから何かを作るのは難しいので、先ほどのLチカを応用したものとして「3分タイマー」を作ってみましょう。動作としては、1分経つごとにLEDが消えていき、すべてのLEDが消えれば3分が経過したとわかるというものです。砂時計みたいなものですね。

 まずはハードの設計から。ブレッドボード上にLEDを3つ並べ、それぞれが光るように抵抗を入れて配線します。先ほどのLチカでは13番ピンを使いましたが、今回はそれに加え、12番と8番も使います。(ちなみに、単機能のデジタル入出力ピンを優先して使っているだけなので、どの番号でも大丈夫です)

 次はソフトの設計です。こちらもLチカで使った「Blink」を元に作っていきます。ポイントは、LEDを3つ光らせるためピンの出力をそれぞれ設定することと、「delay()」で1分待つようにすることです。

// LEDを接続するピンを設定
int LED_1 = 13;
int LED_2 = 12;
int LED_3 = 8;

void setup() {
  // ピンのモードを出力に設定
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
}

void loop() {
  digitalWrite(LED_1, HIGH);  //LED_1を光らせる
  digitalWrite(LED_2, HIGH);  //LED_2を光らせる
  digitalWrite(LED_3, HIGH);  //LED_3を光らせる

  delay(60000);              //1分待つ
  digitalWrite(LED_1, LOW);   //LED_1を消灯

  delay(60000);              //1分待つ
  digitalWrite(LED_2, LOW);   //LED_2を消灯

  delay(60000);              //1分待つ
  digitalWrite(LED_3, LOW);   //LED_3を消灯

  delay(3000);              //終了後、3秒待つ
}

 最初にある「int」では、整数変数としてLED_1からLED_3までを宣言しています。これはそのままLEDが接続してあるピン番号になっているもので、どのLEDを点灯、消灯するのかわかりやすくするものです。「12番」っていってもわかりにくいですが、「LED_2」といわれれば、2つ目のLEDだとすぐにわかりますよね。

 続く「setup()」では、Lチカでは1つだけだったピンの設定を3つ行っています。

 そしてメインとなる「loop()」。実はLチカとほとんど同じで、違う事といえば、delay()で待つ時間を1分(60秒)にしていることと、消灯するLEDを1つずつ変えているくらいです。

 実際に動かしてみると、時間が経過するごとにLED_1から順に1つずつ消灯していく様子がわかると思います。

ステップ2:スタートスイッチの追加で使いやすく

 ステップ1で3分タイマーは完成していますが、実は、タイマーの開始を指定できないという大きな問題があります。さらに、3つ目のLEDが消えた後、3秒経つとまた3分タイマーが自動で動き出すという、エンドレス砂時計のような動作もいただけません。

 そこでスタートスイッチを追加、自由にタイマーを開始できるようにしてみましょう。もちろん、3分カウントした後は、再度スイッチを押すまで開始されないようになります。

 まずはハードの改造からです。ステップ1で作ったブレッドボードにタクトスイッチ(押している間だけオンになるスイッチ)を追加し、2番ピンとGND(グラウンド)を接続します。

 これでハードの改造はおしまいです。こんな簡単でいいのかと心配になるほどですが、大丈夫です。続いてソフトを改造してみましょう。改造といっても、追加するのはたったの3行です。

// 使用するピンを設定
int LED_1 = 13;
int LED_2 = 12;
int LED_3 = 8;
int SW = 2;

void setup() {
  // ピンのモードを設定
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(SW, INPUT_PULLUP);
}

void loop() {
  while (digitalRead(SW) == HIGH){}  //スイッチが押されるのを待つ

  digitalWrite(LED_1, HIGH);  //LED_1を光らせる
  digitalWrite(LED_2, HIGH);  //LED_2を光らせる
  digitalWrite(LED_3, HIGH);  //LED_3を光らせる

  delay(60000);              //1分待つ
  digitalWrite(LED_1, LOW);   //LED_1を消灯

  delay(60000);              //1分待つ
  digitalWrite(LED_2, LOW);   //LED_2を消灯

  delay(60000);              //1分待つ
  digitalWrite(LED_3, LOW);   //LED_3を消灯

  delay(3000);              //終了後、3秒待つ
}

 まず最初の追加部分ですが、これはLEDと同じく、スイッチに使うピン番号を代入しているだけなので、大丈夫かと思います。

>int SW = 2;

次の追加行はLEDと少し違っています。

>  pinMode(SW, INPUT_PULLUP);

スイッチはLEDと違って入力として使うために「INPUT」としているわけですね。ここで気づいたかと思いますが、ただのINPUTではなく、「INPUT_PULLUP」としています。これは、何も入力がない場合HIGHなのかLOWなのか不安定になってしまうのを、内部でHIGHに固定する(プルアップ抵抗を追加する)ものです。簡単な回路図で説明すると、以下のようなものとなります。

 自分でプルアップ抵抗を入れてもいいのですが、せっかくあるArduinoにある機能なので使わない手はありません。

 3つ目の追加行は、スイッチが押されるまで待つというものです。

>  while (digitalRead(SW) == HIGH){}

 「while」は、カッコ内の条件が満たされている間、波カッコ内を繰り返すというものです。また「digitalRead()」は、指定した入力ピンの状態を読み出してくれます。

 つまりこの行では、「digitalRead(SW)」でスイッチの状態を読み出し、これが「HIGH」の状態であれば波カッコ内を繰り返すという動作になっているわけです。ここで注目したいのが、波カッコ内には何も書かれていないこと。つまり、スイッチがHIGHの間は何もせずにひたすら待つだけです。

 ここで実際の動作を考えてみましょう。スイッチのピンはプルアップされているので、スイッチが押されてないときはHIGHなので、ひたすら待つことになります。スイッチを押すとGNDに接続されるのでLOWとなり、タイマーが動き出すという動作が実現できるわけです。

カテゴリートップへ

1
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
¥177,333
2
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - インディゴ
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - インディゴ
¥99,800
3
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥38,500
4
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,970
5
ASUS Chromebook クロームブック Detachable CM30 10.5インチ 2in1 タブレット 日本語キーボード 8GBメモリ 重量609g ペン付き フォグシルバー CM3001DM2A-R70006/A
ASUS Chromebook クロームブック Detachable CM30 10.5インチ 2in1 タブレット 日本語キーボード 8GBメモリ 重量609g ペン付き フォグシルバー CM3001DM2A-R70006/A
¥44,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,280
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
4
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥743
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GW
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GW
¥980
7
KIOXIA(キオクシア)【日本製】SDカード 64GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA064G
KIOXIA(キオクシア)【日本製】SDカード 64GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA064G
¥1,180
8
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652
9
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥4,918
10
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ホワイト T-K6A-2630WH
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ホワイト T-K6A-2630WH
¥1,899

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン