TsukuLab
هذا المقال متاح بـ日本語. إصدار العربية قيد الإعداد.
مقدمة في الإلكترونيات

Lチカとは|LED点滅の意味と始め方・抵抗計算

التحديث: 2026-03-19 20:02:58中村 拓也

Lチカとは、LEDをチカチカ点滅させることです。
電子工作で最初にこれをやるのは、プログラミングのHello Worldと同じで、コードを書いてボードに書き込み、光が返ってくるまでの一連の流れを最短で確認できるからです。
Arduino公式 Blinkでも、内蔵LEDを1,000msごとにオン・オフする例が入門の出発点になっています(https://www.arduino.cc/en/Tutorial/Blink)。

この記事は、少しコードは読めるけれど、ブレッドボードやLEDの配線は初めてという人に向けて書いています。
まずは内蔵LEDで1秒ブリンクを成功させ、そのあと外付けLEDと抵抗(電流を流しすぎないための部品)に進み、点滅間隔を変え、余裕があれば555タイマーでプログラムなしの点滅回路までたどれる道筋を、つまずきやすいところ込みで順番に追います。

筆者がワークショップで毎回最初にBlinkを通すのも、配線ミスなのか、書き込み設定なのか、ボードやUSB接続の問題なのかを一度に切り分けやすいからです。
最初の一回でLEDが点けば、その後の外付け配線も落ち着いて試せますし、Lチカは単なるお約束ではなく、初心者の不安を減らすためのよくできた最初の課題です。

関連記事電子工作の始め方|初心者が最初にやる3ステップ何から始めればいいか迷う初心者向けに、最初の3ステップと必要な道具、ArduinoとRaspberry Piの選び方、Lチカ着手までを具体化。価格目安や安全ルール、つまずき対策も網羅します。

Lチカとは?電子工作版Hello Worldと呼ばれる理由

Lチカの定義と最小ゴール

Lチカは、LEDを一定間隔で点滅させることです。
名前は少し砕けていますが、入門課題としての役割は明快で、「自分が書いたプログラムで、実物の回路に変化を起こせた」と確認するための最小単位にあたります。
点灯しっぱなしではなく、オンとオフが交互に現れるので、変化が目で追いやすく、成功か失敗かを判断しやすいのがポイントです。

電気工作では画面の中だけで完結しません。
多くのチュートリアルやボードでは基板上の「L」表示のLEDを LED_BUILTIN(事例によっては D13 が使われることが多い)で動作確認する例がよく見られますが、正確な接続先は製品ごとに異なる場合があるため、必要なら製品の資料で確認してください。
外付けLEDに進むと、LEDの極性や抵抗の意味まで含めて理解が深まります。

筆者の教室でも、最初にLチカを通してから先へ進む組は、その後の配線トラブルや書き込み設定の迷子が目に見えて減ります。
いきなりセンサーやモーターに進むと、原因候補が一気に増えて切り分けが難しくなるからです。
Lチカは地味な練習ではなく、後の作業を安定させるための基準点と考えると腑に落ちます。

Hello Worldとの対応と学習効果

この小さな点滅から学べることは意外と多くあります。
まず、開発環境でコードを書いてボードへ書き込む流れが通ります。
次に、ピン指定が合っているか、電源とGND(グラウンド、電位の基準)が正しく扱えているかも見えてきます。
さらに外付けLEDなら、長い足がアノード(+)、短い足がカソード(-)という極性、抵抗を直列に入れて電流を流しすぎないという回路の基本も入ってきます。
プログラム、配線、電気の初歩が一つの課題に凝縮されているわけです。

ここがポイントです。
Lチカが成功すると、少なくとも「電源が来ているか」「マイコンのGPIOが切り替わっているか」「配線の向きが大きく外れていないか」「書き込み環境が通っているか」という土台をまとめて見られます。
このあと別の部品につないだときに不具合が出ても、土台が生きていると分かっていれば、疑う場所を絞れます。
次のセクションで触れるトラブル切り分けは、まさにこのLチカの価値を具体化したものです。

公式Blinkの周期設定

入門でよく使われるArduino公式のBlinkは、内蔵LEDを点けて1,000ms待ち、消して1,000ms待つ、という構成です。
つまり周期設定は1,000ms ON、1,000ms OFFです。
Arduino公式 Blinkがこの設定を採っているのは、変化が目で追いやすく、コードの意味と実際の挙動を結び付けやすいからです(https://www.arduino.cc/en/Tutorial/Blink)。

1秒ごとの点滅は、人が「いま点いた」「いま消えた」と落ち着いて確認できる速さです。
速すぎる点滅では連続点灯に見えることがあり、逆に遅すぎると待ち時間の間に「止まっているのでは」と不安になりがちです。
入門段階で1,000ms/1,000msが定番になっているのは、見やすさと理解のしやすさのバランスが取れているためです。

外付けLEDに移るときも、この1秒周期は基準として便利です。
たとえばArduino Unoの5V出力で赤色LEDを330Ωの抵抗と組み合わせると、計算上の電流はおよそ9.1mAになり、入門の配線として無理のない範囲に収まります。
筆者もワークショップでは、まずこの「1秒で点滅する、目で追える、電流も控えめ」という条件で始めます。
見た目の変化が素直で、コードの修正結果もすぐに読み取れるからです。
ここで基準の点滅を一度つかんでおくと、以後の周期変更や外付け回路の確認でも、何が変わったのかを比較しやすくなります。

Lチカで何が確認できるのか

電気的チェック

Lチカでまず見えてくるのは、回路が電気的に成立しているかどうかです。
LEDが点滅したという結果だけを見るのではなく、その裏で電源供給が通っているか、GND共通(グラウンド共有)ができているか、LEDの向きが正しいかまで一度に確認できます。
ここが。

たとえばArduino UnoをUSB給電して内蔵LEDが点滅したなら、少なくともボードに5V系の電源が入り、書き込まれたプログラムが実行され、D13の出力が切り替わっているところまでは通っています。
さらに外付けLEDに進むと、確認対象がもう一段増えます。
LEDは長い足がアノード(+)、短い足がカソード(-)なので、向きが逆だと光りません。
見た目では同じに見えても、ここを逆に挿すと「コードは合っているのに無反応」という状態になります。

抵抗が直列に入っているかも、この段階で見逃せない要素です。
Arduino Unoの5V出力で赤色LEDと330Ωを組み合わせると、流れる電流はおおむね 6〜9mA 程度に収まり、入門の配線として扱いやすい範囲に入ります。
計算上の値だけでなく、実際に組んでみると330Ωは明るさを確保しつつLEDやGPIOに無理をかけにくいので、最初の確認用としてバランスがよいんですよね。

筆者の現場で、外付けLEDのLチカが動かない原因として目立つのはGND未接続とピン番号の取り違えです。
配線図ではつながっているつもりでも、ブレッドボード上ではGNDレールに刺さっていなかったり、D13のつもりで隣の列に刺していたりします。
Lチカはこうした初歩的なミスを、LEDの反応の有無で素直に教えてくれます。

この段階で言葉にして整理しておきたい確認項目は、少なくとも次の通りです。

  • ボードに電源が供給され、LED点滅に必要な電圧が来ている
  • マイコンと外付け回路でGNDが共通になっている
  • LEDの極性(アノード/カソード)が正しい
  • 抵抗がLEDと直列に入っている
  • ジャンパ線の挿し間違い、接触不良が起きていない

ソフトウェア/書き込み環境のチェック

Lチカはハードだけでなく、開発環境の正常性を見るテストとしても優秀です。
LEDが点滅したということは、IDEでコードを書き、対象ボードを選び、シリアルポートを合わせて、プログラムを書き込む一連の流れが成立したということだからです。

Arduino IDEでは、ボード設定とポート設定が噛み合っていないと、スケッチを書き込めません。
Arduino Unoなのに別ボードを選んでいたり、接続されていないシリアルポートを選んでいたりすると、その時点で止まります。
互換機やArduino Nano系ではUSBシリアル変換チップの違いでドライバが必要になることもあり、Lチカが成功するかどうかで、IDE・ドライバ・USB接続の一連が通っているかをまとめて切り分けられます。

内蔵LEDでのLチカを先に試す価値があるのもここです。
Arduino公式 Blinkのような最小構成で動けば、外付け部品なしで「書き込み成功」「ボード設定正常」「USB接続正常」「実行中のスケッチが動作中」という確認が取れます。
そこから外付けLEDに切り替えて動かなくなったなら、原因はソフトより配線側に寄っていると判断できます。
問題の場所を絞り込めるわけです。

ワークショップでも、最初の数分で内蔵LEDが光るかどうかを見るだけで、その後の進み方が変わります。
内蔵LEDが動かないなら、まずIDEの設定やドライバ、書き込み先の選択を疑う。
内蔵LEDは動くのに外付けだけ反応しないなら、配線極性やGND共通を見直す。
Lチカは「成功体験」でもありますが、それ以上にトラブルの入口を分類する手がかりなんですよね。

ソフト側で確認できる項目を自分の言葉で挙げるなら、次のようになります。

  • IDEから対象ボードへプログラムを書き込めている
  • ボード設定とシリアルポート設定が合っている
  • USB接続や必要なドライバが正常に動いている
  • 書き込んだスケッチが起動し、GPIO制御の命令が実行されている
  • 開発環境そのものが壊れていない

GPIO High/Lowのイメージ

Lチカの学習価値の中心にあるのが、GPIOのHigh/Lowを目で見える現象に変換できることです。
コードの中でピンをHighにするとLEDが点灯し、Lowにすると消灯する。
この対応がつかめると、GPIOが単なる番号の列ではなく、「電圧を出す/出さない」ための端子として理解できます。

Arduino UnoならGPIOは5V系で動き、BlinkのようなスケッチではD13がHighとLowを1秒ごとに切り替えます。
LEDはその電位差を受けて光るので、点灯している瞬間は「このピンが出力を出している」、消灯している瞬間は「出力が止まっている」と考えられます。
Lチカが便利なのは、この切り替えをテスターなしでも確認できるところです。
見た目の変化がそのままGPIOの状態変化になっています。

外付けLEDにすると、この理解がさらに深まります。
GPIOからLED、抵抗を通ってGNDへ戻る経路が成立したときだけ光るので、High/Lowは単なる論理値ではなく、実際の回路に影響を与える電気信号だと実感できます。
センサー入力やリレー制御に進む前に、このイメージを持っておくと「なぜGND共通が必要なのか」「なぜピン番号を正確に合わせる必要があるのか」が腑に落ちます。

なお、Raspberry Pi 4 Model BではGPIOが3.3V系なので、同じLチカでも前提の電圧が異なります。
とはいえ考え方は同じで、Highなら出力側に電圧が現れ、Lowなら0V側に落ちる、という理解で進められます。
fabcrossのラズパイでLチカって何ですかでも、LチカはGPIO理解の入口として扱われていますが、まさにこの「見えない信号をLEDで見える形にする」役割が大きいです。

Lチカが終わった時点で持っていたいイメージは、単に「LEDが光った」ではありません。GPIOをHighにすると電圧が出て、Lowにすると止まり、その結果がLEDの点灯・消灯として現れるという流れです。
この見方ができるようになると、その後に出てくるブザー、トランジスタ、センサーの配線も、ただの暗記ではなく回路のつながりとして読めるようになります。

まずは一番かんたんなLチカ構成を知ろう

内蔵LEDで始める

最初の一歩としていちばん失敗が少ないのは、ボードに最初から載っているLEDを使う方法です。
多くのボードやチュートリアルでは基板上の「L」と書かれたLEDを使う例が紹介され、定番のBlinkサンプルはそのLEDを点滅させることが多いです。
ただしオンボードLEDの接続先は製品によって異なる場合があるので、正確なピン番号を知りたいときは該当ボードの仕様ページを確認してください。
配線がいらないため、確認したい対象を「コードを書けたか」「ボードへ書き込めたか」に絞れます。

Arduino公式 Blink(https://www.arduino.cc/en/Tutorial/Blinkをそのまま動かせば、最小構成のLチカが体験できます。
ボード本体とUSBケーブルだけで成立するので、初心者にとっては成功までの距離が短いのが魅力です。
筆者の感覚でも、最初に内蔵LEDで一度光らせておくと、その後に配線で迷っても「ボード自体は動いている」という安心材料になります)。

内蔵LEDのよいところは、デバッグの基準点になることです。
光らないときに疑うべき場所が少ないので、IDEの設定や書き込み手順の確認に集中できます。
一方で、回路として学べることはまだ限定的です。
LEDの向き、抵抗の意味、GNDへ戻る電流の流れまでは見えません。
そこで、内蔵LEDで最短の成功体験を得たら、次は外付けLEDへ進むと理解が一段深まります。

外付けLEDで学ぶ

外付けLEDに切り替えると、Lチカは「点いた・消えた」だけでなく、回路の基本を学ぶ題材になります。
ここで押さえたいのは、LEDには向きがあることと、抵抗を直列に入れて電流を制限することです。
LEDは電流が流れすぎると壊れるので、GPIOからそのままつなぐのではなく、抵抗を1本入れて流れを抑えます。
参考としてLED抵抗値の決め方(外部サイト: https://protosupplies.com/determining-led-resistor-values/)で紹介される考え方でも、LEDには電源電圧と順方向電圧の差分がかかるため、そのぶんを抵抗で受け持たせます。

入門では、細かい計算に入る前に安全寄りの抵抗値を選ぶのが素直です。
Arduino Unoのような5V系ボードなら、330Ωから1kΩの範囲にしておくと無理のない明るさで試せます。
抵抗の役割は、明るさを調整するアクセサリではなく、LEDやマイコンのピンに流れる電流を抑える保護部品だと考えると理解しやすくなります。
ATmega328P系ではI/Oピンの絶対最大値として40mAが知られていますが、実運用では20mA以下が安全の目安として扱われます。
だからこそ、最初のLチカで抵抗を省略しないことに意味があります。

ブレッドボードを使うと、はんだ付けなしで配線を組めます。
役割は「部品を仮組みするための台」で、穴の内部がつながっているので、同じ列に差した部品どうしを電気的に接続できます。
端の電源ラインは、電源やGNDをまとめて配るために使います。
最初は構造がやや分かりにくいのですが、中央の溝をまたいで部品を置く、同じ列は中でつながっている、と覚えるだけで十分です。

配線の最小例は、次の順番です。

接続元接続先
GPIOピン抵抗
抵抗LEDのアノード(+)
LEDのカソード(-)GND

この構成なら、GPIOがHighになったときに電流が流れ、LEDが点灯します。
内蔵LEDは配線なしで動作確認に向き、外付けLEDは回路の流れを手で追えるのが強みです。
筆者の現場感でも、外付けに入った瞬間に理解が進む人は多く、GPIO、抵抗、LED、GNDが一本の線でつながる感覚をここでつかめると、その先のセンサー配線でも迷いが減ります。

アノード/カソードの見分け方と注意点

LEDには極性があります。
長い足がアノード(プラス側)、短い足がカソード(マイナス側)です。
さらに、本体のふちが少し平らになっている側がカソードとして作られているものも多いので、足を切って長さが分からなくなったLEDでも見分ける手がかりになります。
外付けLEDで点かないとき、まず見るべきなのはこの向きです。
逆に差すと、ほかが正しくても点灯しません。

TIP

外付けLEDで無反応だったとき、筆者が最初に見るのは「LEDの向き」と「抵抗が直列に入っているか」の2点です。
入門のつまずきはこの組み合わせに集まりやすく、配線ミスの切り分けが一気に進みます。

初心者が外付けLEDでつまずく場面を見ていると、抵抗の入れ忘れとLEDの逆挿しは本当によく起きます。
どちらも配線図では小さな違いに見えるのですが、結果はまったく変わります。
逆挿しなら光らず、抵抗なしならLEDやGPIOに負担がかかります。
だから、LEDの向きを確認してから、GPIOからGNDまでの間に抵抗がちゃんと直列で入っているかを順番に追うのが定石です。

ここでの比較も整理しておくと、内蔵LEDは「配線なしで最短成功」、外付けLEDは「回路の理解が広がる」という違いがあります。
内蔵LEDは書き込み確認の基準になり、外付けLEDは極性や抵抗、ブレッドボードの扱いまで学べます。
初心者が最短で成功するなら内蔵LEDから入るのが順当で、その次の一歩として外付けLEDに進む流れがもっとも無理がありません。

抵抗はなぜ必要?5Vでの計算をやさしく解説

オームの法則と計算手順

抵抗選びで最初につまずきやすいのは、「何をどの順番で計算すればいいのか」が見えにくいことです。
ここが。
LED用の抵抗は、電源電圧そのものをそのまま割るのではなく、まずLEDが使う電圧を引いてから考えます。

使うのはオームの法則、V = I × R です。
抵抗値を求めたいので、式を変形して R = V ÷ I とします。
ただし、この V は電源の 5V ではなく、抵抗にかかる電圧です。

赤色LEDを例にすると、順方向電圧 Vf を 2V、流したい電流 If を 20mA として、計算は次の形になります。

電源電圧 = 5V
LEDの順方向電圧 Vf = 2V
流したい電流 If = 20mA = 0.02A

まず、抵抗にかかる電圧を求める
5V - 2V = 3V

次に、オームの法則で抵抗値を求める
R = V ÷ I
R = 3V ÷ 0.02A
R = 150Ω

この (5−2)÷0.02 = 150Ω が理論値です。
Device Plusの初心者向け解説やLED抵抗値の決め方でも、同じ考え方で説明されています。
式の意味を日本語で言い換えると、「LEDが 2V 使うので、残りの 3V を抵抗に受け持たせ、そのとき 20mA 流れるように抵抗値を決める」ということです。

よくある間違いは、5V をそのまま 0.02A で割って 250Ω としてしまうことです。
これだと LED 自身が電圧を持っていることを計算から落としてしまいます。
LED はただの豆電球ではなく、点灯時に固有の順方向電圧を持つ部品だと押さえておくと、式の意味がつながります。

150Ω(理論値)と220〜330Ω(実用値)の意味

理論上は 150Ω ですが、実際の入門では 220Ω〜330Ω がよく選ばれます。
理由は単純で、理論値ぴったりを狙うより、少し電流を減らしたほうがLEDにもGPIOにも余裕を持たせやすいからです。

たとえば 5V、Vf 2V の赤色LEDで計算すると、220Ω と 330Ω では流れる電流はこうなります。

220Ωを使う場合
I = V ÷ R
I = 3V ÷ 220Ω
I ≈ 0.0136A
I ≈ 13.6mA

330Ωを使う場合
I = V ÷ R
I = 3V ÷ 330Ω
I ≈ 0.0091A
I ≈ 9.1mA

150Ωなら 20mA、220Ωなら約13.6mA、330Ωなら約9.1mAです。
どれも点灯はしますが、220Ωや330Ωのほうが電流が少ないぶん、入門用途では扱いやすい落としどころになります。
前のセクションで触れたとおり、ATmega328P系では実運用で20mA以下を目安に考える流れが一般的なので、330Ωが定番になりやすいわけです。

筆者がワークショップで配る抵抗も、最初は 330Ω を標準にしています。
まずは確実に光って、しかも無理をさせない設定から入ったほうが、配線確認に集中できるからです。
そのうえで「少し暗く見える」という受講者には 220Ω を試してもらいます。
すると、明るさが一段上がって見え、数字だけではつかみにくい電流と光り方の関係が実感として入ってきます。
この切り替えを一度体験すると、抵抗値が単なる暗号ではなく、明るさと安全性を調整する部品だと腹落ちします。

もう少し安全寄りに振るなら、330Ωから1kΩでもLEDは点灯します。
1kΩなら電流はさらに小さくなるので、まぶしさを抑えたい場面や、まずは回路を壊さず確認したい場面で相性がよい選択です。

安全マージンと明るさのトレードオフ

ここで出てくるのが、安全側で考えるという発想です。
これは「必要最小限に暗くする」という意味ではなく、目的を満たす範囲で電流を控えめにして、部品に余裕を残すという考え方です。

LEDは、20mAを流せば必ず正義という部品ではありません。
Lチカのような確認用途なら、数mA台でも十分見えることが多く、330Ωや1kΩでも「点いたかどうか」はちゃんと判断できます。
明るさを優先して抵抗値を下げるほど電流は増えますが、そのぶんGPIOの負担も増えます。
逆に抵抗値を上げるほど安全マージンは広がりますが、光は控えめになります。
ここがトレードオフです。

初心者向けの回路で 220〜330Ω がよく使われるのは、このバランスが取りやすいからです。
220Ωなら明るさを確保しやすく、330Ωならより安全寄りです。
ブレッドボードで最初の1本を光らせる段階では 330Ω のほうが落ち着いて扱えます。
部品の向きや配線列の読み違いを直していく場面では、LEDが少し控えめに光るくらいのほうが、GPIOに余計な無理をかけずに試行錯誤を続けられます。

NOTE

抵抗値で迷ったら、「まず330Ωで点灯確認、もう少し明るさが欲しければ220Ω」という順番で考えると、数字と見た目の関係がつかみやすくなります。

抵抗選びは、正解がひとつだけある計算問題ではありません。150Ωは理論値、220〜330Ωは実用上の定番、安全側なら330Ω以上と整理すると迷いが減ります。
オームの法則で理屈を押さえたうえで、GPIOの許容電流に余裕を持たせる。
この考え方を先に身につけておくと、Arduinoの5V系だけでなく、3.3V系のボードへ進んだときも同じ順番で落ち着いて計算できます。

Lチカのやり方は1つではない:マイコン・555タイマー・トランジスタ回路

マイコンLチカ

LチカというとArduinoのコードを書くイメージが強いのですが、実際には「光を一定の規則で変える」ための入り口がいくつもあります。
その中でも最初の一歩として安定しているのは、やはりマイコンを使う方法です。
点滅周期を変えたいとき、部品を差し替えるのではなく、待ち時間やループの書き方を変えるだけで挙動が切り替わるからです。
内蔵LEDならボード単体で始められますし、外付けLEDに進めば極性、GND共通、GPIOから信号を出す感覚まで一気につながります。

Arduino公式 Blink(https://www.arduino.cc/en/Tutorial/Blinkの価値は、単にLEDが光ることではありません。
コードを書き換えると、実際の点滅がどう変わるかをその場で見比べられる点にあります。
筆者の授業でも、まずマイコンで周期の感覚をつかんでもらうと、受講者の理解が安定します。
数字を変えると速くなる、遅くなる、その結果が目に返ってくる。
この往復があると、あとでハードウェア側の回路に進んだときも「いま何を変えたのか」が見失われません)。

もうひとつ、マイコンLチカは切り分けが明快です。
内蔵LEDで光るなら、書き込み、電源、実行環境の大枠は通っています。
そこで外付けLEDが光らなければ、配線、LEDの向き、抵抗の入れ方といった物理側に絞って見直せます。
初心者が最初に詰まりやすいのは、ソフトと配線のどちらが原因か分からなくなる場面ですが、内蔵LEDと外付けLEDを段階的に使い分けると、この混線が起きにくくなります。
ここが。
マイコンLチカは、プログラミング入門であると同時に、トラブル切り分けの練習にもなっています。

555タイマーのアスタブル回路と精度の話

Lチカはプログラムなしでも実現できます。
その代表が555タイマーを使ったアスタブル回路です。
アスタブルは安定状態を持たず、コンデンサが充電と放電を繰り返すことで、出力がHighとLowを往復する動作です。
つまり、マイコンでdelayを書いていた役目を、抵抗とコンデンサの組み合わせが肩代わりしているわけです。

この回路の面白さは、周期がCR定数で決まることです。
抵抗値やコンデンサ容量を変えると、目に見えて点滅のテンポが変わります。
筆者は授業で、まずマイコンで周期の感覚をつかんでもらってから、次に555でCRの手触りを知ってもらう順番をよく使います。
この流れだと、コード上の「待ち時間」と、部品で決まる「時間」が頭の中で結びつきます。
いきなり555から入ると、なぜ遅くなったのか、なぜ速くなったのかを式と部品の両方で追う必要があり、初学者には少し荷が重くなります。

ただし、555の周期は抵抗・コンデンサで大まかに決まる一方で、ICのバリエーション(標準型NE555やCMOS系の555など)、コンデンサの種類(アルミ電解/フィルム/タンタルなど)、温度や負荷条件によって実際の周期は変わり得ます。
部品公差や温度特性が動作に現れる点を学ぶ課題と考え、重要な用途では各部品のデータシートを参照して設計値を見積もり、組んだ後に実測で確認してください。

もう一段踏み込むと、トランジスタやアナログ回路だけで点滅を作る世界があります。
ここではマイコンの「命令」も、555のような専用タイマーICも使わず、部品同士の相互作用で発振を起こします。
交互にオンオフするマルチバイブレータのような回路に触れると、フィードバック、しきい値、充放電、増幅といった概念が一気に立ち上がってきます。

この方式の価値は、各部品の役割がむき出しで見えることです。
トランジスタはスイッチにも増幅器にもなり、コンデンサは時間差を作り、抵抗は電流制限だけでなくバイアス条件も決めます。
マイコンLチカでは1本のdigitalWriteで済んでいたことが、アナログ回路では複数の部品の関係として現れます。
電子回路を深く理解したい人には、ここで得る感覚があとあと効いてきます。

一方で、初学者にとっては部品点数が増え、調整する場所も増えます。
LEDが光らないとき、配線ミスなのか、トランジスタの向きなのか、定数選びなのか、発振条件が満たせていないのかを一つずつ見ていく必要があります。
つまり、成功体験を早く得る入り口としてはマイコンのほうが向いていて、回路そのものを理解する段階でトランジスタ回路に進むと意味が出ます。
この順番のほうが受講者の表情が止まりません。
先に「光らせる」体験を作り、その後で「なぜ光るのか」を分解したほうが、部品の役割が腑に落ちます。

ここで、各方式の違いを短く整理しておきます。

方式学べること難易度周期変更のしやすさ
マイコン内蔵LED書き込み、基本コード、実行確認低いコード変更で即座に変えられる
外付けLED + マイコンLED極性、抵抗、GPIO、GND共通中程度コード変更で変えられる
555タイマー回路発振、CR定数、部品公差中〜高抵抗やコンデンサの変更が必要
トランジスタ/アナログ回路フィードバック、発振条件、部品の役割分担高い定数変更と動作確認を併せて進める

プラットフォーム別の入り口:micro:bit / Raspberry Pi

マイコンLチカの入口も、使うプラットフォームで雰囲気が変わります。
教育向けで始めやすい代表例は micro:bit です。
5×5のLEDマトリクスを本体に内蔵しているので、外付けLEDやブレッドボードがなくても「光を制御する」体験に入れます。
表示の変化がそのまま見えるため、授業では点滅だけでなく、アイコン表示や簡単なアニメーションまでつなげやすいのが強みです。
手のひらに収まるサイズ感で扱いやすく、単4電池2本の電池ボックスをつないでも持ち回りやすいので、教室で順番に触ってもらう用途とも相性がよく出ます。

Raspberry Piは入口の印象が少し異なります。
GPIO制御でLEDを光らせる体験はできますが、こちらは「Linuxが動くコンピュータから物理信号を出す」方向の面白さがあります。
LED点滅から始めて、センサーの値を読み、ネットワークやファイル処理と組み合わせる流れに発展させやすいのが魅力です。
Raspberry Pi 4 Model BのGPIOは3.3Vロジックなので、Arduino Unoの5V系とは前提が異なります。

豆知識:フリッカーと人の見え方

点滅の速さによって人の視覚での感じ方は変わり、周波数が低いほどちらつきを強く感じやすくなります。
例えば 40〜50Hz 程度では点滅として認識されやすく、周波数を上げるとオン/オフが連続光に見えてきます。

関連記事Arduino入門|初心者向けの使い方と最初のプロジェクト[Arduino](https://docs.arduino.cc/software/ide-v2/)を今日から始めたい人向けに、購入前の準備から[Arduino IDE](https://docs.arduino.cc/software/ide-v2/)の導入までを30〜60分で一直線にたどれる形にまとめました。最初のLチカ(内蔵LEDの点滅)や外部LEDの点滅まで、配線図とコードをそのまま再現できる手順に絞って解説します。

動かないときのチェックリスト

ハード配線の確認ポイント

外付けLEDが光らないとき、最初に見る場所はコードではなく配線です。
初心者のつまずきはここに集中します。
教室でも、実はプログラムは合っていて、LEDの向きだけが逆だったという場面を何度も見てきました。

LEDには向きがあります。
長い足側がアノード、短い足側がカソードという基本どおりに挿したつもりでも、足を切った後の部品だと見分けに迷うことがあります。
その場合は、LED外周の平らな面がカソード側という見方も使えます。
アノードとカソードが逆だと、見た目は正しく配線したつもりでも点灯しません。
ブレッドボードでは、部品の向きが1列ずれただけでも別の穴に入っていることがあるので、足の位置まで目で追うのが。

抵抗の入れ忘れも定番です。
前のセクションで触れたように、抵抗は明るさ調整のおまけではなく、電流を抑えるための部品です。
しかも「どこかに入っていればよい」のではなく、LEDと直列に入っている必要があります。
GPIOピンから出た線の途中に抵抗を入れてLEDへつなぐ形でも、LEDのカソード側とGNDの間に抵抗を入れる形でも、直列であれば動作します。
逆に、抵抗が別の列に刺さっていて実際には回路に入っていない、というミスは珍しくありません。
筆者の経験では、ジャンパの挿し込みが浅くて導通していないだけ、というケースも教室でよく出ます。

ピン番号の間違いも見逃せません。
コードではD8を点滅させているのに、実配線はD13につないでいる、といった食い違いです。
特にArduino UnoやArduino Nanoでは、内蔵LEDがD13につながっているので、「13番で光るはず」という印象だけが残って、外付けLEDも同じつもりで配線してしまうことがあります。
内蔵LEDと外付けLEDは別物なので、コードで指定したピンと、実際にジャンパ線を挿したピンが一致しているかを一つずつ照らし合わせる必要があります。

GND未接続も、動かない原因として頻出です。
GPIOからLEDへ行く経路だけ見て満足し、戻り道のGNDがつながっていないと電流は流れません。
ブレッドボードの電源レールを使っている場合は、GNDレールまで線が来ているか、そのレール自体がボードのGNDピンにつながっているかも確認対象です。
配線色の使い分けで混乱し、赤い線をGND側に挿していた、黒い線を信号線にして自分で見失った、というのも初心者講座では本当によくあります。
色は補助にはなりますが、最終的には「どの穴とどの穴がつながっているか」で判断したほうが確実です。

TIP

光らないときは、LEDの向き、抵抗が直列に入っているか、コードのピン番号と実配線の一致、GNDの接続、この4点を先に見ると切り分けが早く進みます。

IDE/書き込み設定の確認ポイント

配線が合っていても、ボードに正しいプログラムが入っていなければLEDは期待どおりに動きません。
ここで多いのが、書き込み先ボードやポートの設定違いです。Arduino IDEでは「ツール」からボードとポートを選びますが、この設定が別の機種や別のCOMポートのままになっていると、コード自体は正しくても狙ったボードに書き込まれません。

ありがちなのは、Arduino Unoを使っているのに別のボード設定でコンパイルしているケースです。
アップロード時にエラーが出ることもありますし、通ったように見えて実際には動いていないように見えることもあります。
まずは、接続しているボード名とIDE上の設定が一致しているかを見るのが基本です。
互換機や一部のArduino NanoではUSBシリアル周りでつまずくこともありますが、この段階では難しく考えすぎず、書き込み先のボード設定、ポート設定、エラーメッセージの有無を順番に見れば十分です。

コンパイルエラーや書き込みエラーを読み飛ばさないことも大切です。
初心者のうちは、赤い文字が出ると身構えてしまいますが、実際には「どこで止まったか」が表示されています。
コードの文法ミスなのか、ボードと通信できていないのかで、対処する場所が変わります。
筆者は講座で、動かないときほどエラー文を一緒に声に出して読みます。
内容を分解すると、配線の問題なのか、IDE設定の問題なのかが見えてくるからです。

もう一つ見落とされがちなのが、点滅周期そのものです。
delayの値を小さくしすぎると、LEDはオンオフしていても人の目には点灯しっぱなしに見えます。
特に100ms以下まで短くすると、「壊れた」「消えない」と誤解されやすくなります。
コードを書き換えた直後に挙動が変わらないように見えたら、配線ミスだけでなく、周期が速すぎないかも疑うと切り分けが進みます。

内蔵LEDとシリアルで切り分ける

初心者が途中で嫌にならないためには、いきなり全部を疑わないことが大切です。
筆者はまず、外付けLEDを外した状態で内蔵LEDから確認します。
Arduino UnoやArduino Nanoなら、内蔵LEDはD13につながっているので、最小構成で「書き込み」と「実行」が通っているかを見られます。
Arduino公式 Blink(https://www.arduino.cc/en/Tutorial/Blinkの考え方どおり、まずはボード単体で光るかを確かめると、問題を配線側とソフト側に分けられます)。
初心者が途中で嫌にならないためには、まず疑う範囲を狭めて一つずつ確認するやり方が有効です。
筆者は外付けLEDを使う前に内蔵LEDで環境を確かめることを勧めています。
混同しやすいのは内蔵LEDと外付けLEDの対象切り替えです。
コードがLED_BUILTINやD13を操作しているのに、外付けLEDはD8につないでいる、という状態だと、ボード上のLEDだけ光ってブレッドボード側は無反応になります。
逆に外付けLED用のピンへコードを書き換えたのに、今度は内蔵LEDが光らなくなって「失敗した」と感じることもあります。
実際には、どのLEDを点けたいのかが途中で入れ替わっているだけです。
点灯対象を一度言葉にして整理すると、混乱がほどけます。

混同しやすいのは内蔵LEDと外付けLEDの対象切り替えです。まず「どのLEDを点けたいか」を明確にすると、原因追及が早くなります。

この段階的なやり方のよいところは、失敗の範囲を毎回ひとつに絞れることです。
内蔵LEDで動けば、ボード設定と書き込みは通っています。
外付けLEDを足して止まったなら、配線か部品の向きです。
シリアルにログが出ているなら、少なくともプログラムは回っています。
Lチカは単純な題材ですが、この切り分けの感覚が身につくと、センサーやモーターに進んだときも慌てにくくなります。

切り分けの順番は、内蔵LED→外付けLED→必要に応じてシリアル出力、という段階を踏むと失敗の範囲を狭めやすいです。

例えば、ループ内にシリアルログを入れておけば、LEDが見えない場合でもプログラムが回っているかを確認できます。

最初の一歩は、ボード単体で光らせることです。
ここではArduino UnoやArduino Nanoの内蔵LEDを使います。
多くの環境で LED_BUILTIN が用いられるため、配線を増やさずに「IDEで書いて、ボードに書き込んで、実際に動く」という流れをそのまま確認できます。
最短で成功体験を作るなら、この順番がいちばん素直です。

コードはArduino公式 Blink(https://www.arduino.cc/en/Tutorial/Blinkのままで十分です。LED_BUILTIN を出力に設定し、点灯と消灯のあいだに delay(1000) を入れる、あの定番の形ですね。
前のセクションまでで見てきた確認ポイントも、ここだと切り分けが簡単です。
光れば、少なくともボード選択、ポート選択、書き込み、プログラム実行の流れは通っています)。

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

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

筆者は講座でも、いきなり外付けLEDから始めません。
最初に内蔵LEDで成功させると、「自分の環境で動いた」という基準が手元に残るからです。
この基準があると、次に外付け回路でつまずいても、原因を配線側へ絞れます。
ここが。
Lチカはただ光れば終わりではなく、どこまで確認できたかを一段ずつ積み上げる題材でもあります。
筆者は講座でも、最初に内蔵LEDで成功させることを優先します。
基準があると、外付け回路での不具合を配線側に絞りやすくなります。

Step2:外付けLED+330Ωで再現

内蔵LEDで動いたら、同じ点滅を外付けLEDでも再現してみましょう。ここでブレッドボードや抵抗の直列接続の理解が深まります。

配線は、デジタルピンから抵抗へ、抵抗からLEDのアノード(足の長い側)、LEDのカソードからGNDへ、という一直線の形で組むと迷いません。
コードは内蔵LED用の LED_BUILTIN を、外付けLEDをつないだピン番号に変えるだけです。
たとえば D8 にしたなら、const int ledPin = 8; と置いて使います。

配線は「デジタルピン → 抵抗 → LEDのアノード → LEDのカソード → GND」の順にすると視覚的にも分かりやすいです。
const int ledPin = 8; // LEDピン設定(1/4) コードは LED_BUILTIN を外付け用のピン番号に置き換えるだけで動作を移せます。
例えば D8 を使う場合は const int ledPin = 8; を定義します。
void setup() { pinMode(ledPin, OUTPUT); // 出力に設定(1/4) }

void loop() { 外付けLEDでは抵抗を直列に入れることが必須です。
これによりLEDもGPIOも保護できます。
delay(1000); digitalWrite(ledPin, LOW); // LOWで消灯(1/4) delay の値を変えるだけで点滅のテンポを簡単に変えられます。
まずは 100ms、500ms、2000ms のように幅を持たせて試してみてください。
}


Device Plus の解説など外部の実例も参照しつつ、理論値(150Ω)と実用値(220〜330Ω)の違いを確認してください。

内蔵LEDは「書き込みや実行の確認用」、外付けLEDは「回路の仕組みを学ぶ用」と役割を分けて考えると学習が進みます。

### Step3:周期変更で“見え方”を観察

次は、配線を変えずに `delay()` の値だけを動かして、見え方がどう変わるかを観察します。1,000ms の基準が手元にあるので、差がつかみやすくなります。ここでは 100ms、500ms、2,000ms の3パターンを試すと変化がはっきり出ます。

500ms は速さを少し上げた感覚で、2,000ms はだいぶ待ち時間を感じる設定です。見た目の変化をメモして比較しましょう。

いちばん面白いのは 100ms です。授業ではこの設定にしたとき、「あれ、点きっぱなしに見える」と気づく場面がよくあります。ここから自然に、周波数と人の視覚の話へ関心が向きます。光は実際にはオンオフしていても、変化が速くなると人の目には連続して見えます。照明のフリッカーでも、50Hz以下だと違和感が出やすく、40Hzあたりでは点滅感が認識されやすいとされます。Lチカの `delay()` を変えるだけで、こうした「電気の動き」と「人間の見え方」がつながるのが、この演習のおもしろさです。
100ms 程度にすると人の目には連続光に近づきます。ここから視覚特性の話題に進めると理解が深まります。
試すコードは、`delay()` の数字を入れ替えるだけで足ります。

```cpp
`delay()` の数値を書き換えることで、見た目の印象がどう変わるかを確認してください。

それぞれの設定で「点滅が読めた/点灯に見えた/待ち時間が長く感じた」など、自分の言葉で記録を残すと理解が深まります。
  pinMode(ledPin, OUTPUT); // 出力に設定(2/4)
}

void loop() {
  digitalWrite(ledPin, HIGH); // HIGHで点灯(2/4)
  delay(100);
  digitalWrite(ledPin, LOW); // LOWで消灯(2/4)
  delay(100);
}
const int ledPin = 8; // LEDピン設定(3/4)

void setup() {
  pinMode(ledPin, OUTPUT); // 出力に設定(3/4)
}
void loop() {
  digitalWrite(ledPin, HIGH); // HIGHで点灯(3/4)
  delay(500);
  digitalWrite(ledPin, LOW); // LOWで消灯(3/4)
  delay(500);
}
void loop() {
  digitalWrite(ledPin, HIGH); // HIGHで点灯(3/4)
  delay(500);
  digitalWrite(ledPin, LOW); // LOWで消灯(3/4)
  delay(500);
}
const int ledPin = 8; // LEDピン設定(4/4)

void setup() {
  pinMode(ledPin, OUTPUT); // 出力に設定(4/4)
}

void loop() {
  digitalWrite(ledPin, HIGH); // HIGHで点灯(4/4)
  delay(2000);
  digitalWrite(ledPin, LOW); // LOWで消灯(4/4)
  delay(2000);
}

この段階では、正解を当てるというより、「自分の目にはどう見えたか」を言葉にすることに価値があります。
1秒では落ち着いて追えた、100msでは点灯に近く見えた、2秒では待ち時間が長く感じた、と書き出すだけでも十分です。
コードの数字が、そのまま体感の差に変わる経験になります。

NOTE

観察メモは「速い・遅い」だけで済ませず、「点滅が読めた」「点灯に見えた」「止まったようで不安になった」のように自分の言葉で残すと、周波数や時間制御の理解につながります。

Step4:555タイマーで作る

余裕があれば、同じ点滅を555タイマーでも作ってみると、マイコン版との違いが一気に立体的になります。
ここではプログラムを書かず、抵抗とコンデンサの組み合わせ、いわゆる CR 定数で点滅周期を決めます。
555の動作原理と使い方555の動作原理と使い方のような解説を見ながらアスタブル回路を組むと、「点滅はコードで作るもの」と思っていた感覚が少し変わります)。

マイコン版は delay() の数値を書き換えれば周期が変わりますが、555では抵抗やコンデンサを差し替えて変えます。
この違いは、実際に手を動かすとよくわかります。
コード変更は速く、何度でも試せます。
555は部品を差し替える手間があるぶん、「この部品が時間を決めている」という手触りが強く残ります。
マイコンは論理を学ぶ入口、555は発振という現象そのものに触れる入口です。
ただし、ここでは精密なタイマーとして期待しすぎないほうが現実的です。
使用する555の種類やコンデンサの公差・温度特性によって実際の周期は変動しますので、設計値と実測が数パーセント〜数十パーセントずれる可能性がある点を踏まえ、必要ならデータシートを確認して測定で補正してください。
この4段階を終えたら、学んだことを短く書き出しておくと理解が定着します。
たとえば、LチカはLEDを点滅させて書き込み・配線・出力の基本を確認する題材だということ、抵抗が必要なのはLEDとGPIOに流れる電流を抑えるためで、5V・2V・20mAの計算から理論値 150Ω が出ること、内蔵LEDは最短確認用、外付けLEDは極性や配線理解の練習台になること、このあたりは自分の言葉で説明できる状態にしておきたいところです。

確認項目も、丸暗記ではなく文章で残すと理解の深さが見えます。
たとえば「LEDの長い足をどちらへ向けたか」「抵抗をどこへ直列に入れたか」「コードのピン番号が実配線と一致していたか」「GNDへ戻る経路ができていたか」「100msで自分にはどう見えたか」といった内容です。
3つ以上を自分の表現で書ければ、この演習は“光った”だけで終わらず、次の回路へつながる土台になります。

【発振回路も解説】タイマーIC 555の動作原理と使い方ana-dig.com 関連記事ブレッドボード使い方|配線の基本と回路の組み方ブレッドボードは、はんだ付けなしで回路を試せる便利な道具ですが、最初に内部のつながり方を取り違えると、LEDひとつでも点灯しません。中央部は5穴ごとに導通し、真ん中の溝をまたぐと左右は絶縁、さらに電源レールは途中で分割されていたり左右で別系統だったりするので、まずここを頭に入れるのが出発点です。

Lチカの次に進むなら

Lチカで「光った」を確認できたら、次は出力を増やすか、入力を足すか、あるいはトラブルを自分で切り分ける練習に進むと伸びます。
本記事はその入口として、LEDとGPIOの基本を身体で覚える段階にあります。
ここから先は、基礎的な電気の理解を少しずつ補いながら、入出力を広げていく流れが自然です。
Raspberry Pi 4 Model BのGPIO制御や、micro:bitのブロックからテキストコードへの移行も、この延長線上にあります。

مشاركة المقال

中村 拓也

大手メーカーで組込みシステムの開発に15年従事。Arduino・Raspberry Piを活用した自作IoTデバイスの制作実績多数。電子工作の基礎から応用まで、実務経験に基づいた解説を得意とする。