Uncategorized

ブラウザで Arduino の LED を点滅させよう — 基板は不要

Arduino を始めた人が最初にやるプロジェクト、それが blink スケッチです。マイコンの世界の「Hello, World!」であり、何十年も生き残ってきたのには理由があります。基板が動いていること、コードが実行されていること、配線が思った通りに繋がっていること — これを、LED ひとつで全部証明してくれるんです。

ただ、ここが多くのチュートリアルがあまり言わない部分:これを学ぶのに、何かを買う必要はありません。ブラウザのシミュレーターで全部を組み立てて実行し、LED が点滅するのを見て、実際に何が起きているのか理解できてから基板を注文すればいいんです。この記事ではそのやり方をお見せします。あと、シミュレーションが現実と一致しなくなる部分についても正直にお伝えします。実際、そういう部分はあるんです。

回路は基板に付いている

たいていの「回路を作ろう」系チュートリアルは部品リストから始まります。この記事では必要ありません。なぜなら Arduino Uno は PCB 上に回路を全部乗せているからです:小さな LED(L と書かれたもの)がデジタルピン13番に直結されていて、電流制限抵抗も基板上に直列に入っています。挿すものも、半田付けするものも、焼き切れる心配もありません。

Arduino Uno board on a browser-based simulator canvas, set up for the blink LED example

あとで実機に移って、オンボードの LED の代わりに外付け LED を使いたくなったら、レシピはこうです:アノード(長い足)→ 220Ω 抵抗を通してピン13、カソード(短い足)→ GND。220Ω から 1kΩ の間ならどれでも動きます。抵抗値が小さいほど明るくて荒々しくなります。でも今は、シンプルにいきましょう。

基板をキャンバスに載せる

シミュレーターを開いて、Add(表示によっては Components ボタン)をクリックします。部品ピッカーが開いて、検索ボックスと基板のグリッドが表示されます。「Arduino Uno」と入力してキャンバスにドラッグするだけ。完了です。

Add Component dialog listing Arduino Uno, Nano, Mega, Raspberry Pi Pico and ESP32 boards

基板がキャンバスに置かれると、ピン名が表示されます。ピン13の隣の L マークを見つけてください — それが LED です。シミュレーションを動かすまでは、地味に見えるでしょう。

重要な4行

コードエディターに移動します。スケッチ全体はこれだけです:

// Blink: toggle the onboard LED once a second

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

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

Arduino blink sketch in the simulator code editor: pinMode, digitalWrite and delay on pin 13

Arduino スケッチには必ず2つの関数があります。setup() は電源投入時に1回だけ実行され、loop() はその後ずっと上から下へ繰り返し実行されます。その中で、実は4行だけが仕事をしています:

  • pinMode(13, OUTPUT) — ピン13を「電圧を出すため」のピンにする指示です。これを省略するとピンは入力のままなので、LED はうっすら光るだけか、まったく光りません。初めての人が必ずつまずくポイントです。
  • digitalWrite(13, HIGH) — ピンを5V にします。LED オン。
  • delay(1000) — 1000ミリ秒、何もせず待ちます。これがないと LED は毎秒数百万回も点滅して、目には点灯しているようにしか見えません。
  • digitalWrite(13, LOW) — ピンを0V にします。LED オフ。2つ目の delay(1000) がその状態を保持して、ループが繰り返されます。

本当に、プログラムはこれだけです。物足りなく感じたなら、それで正解 — blink のポイントはまさにそこなんです。

Run を押す

エディターツールバーの Run ボタンを押します。シミュレーターがスケッチをコンパイルして、仮想の AVR チップ上で実行を開始します — 本物の Uno と同じファミリーのチップです。

Simulator editor toolbar showing the run button and sketch file tab

キャンバス上の L LED を見てください:1秒点灯、1秒消灯。キャンバスのツールバーには一時停止・停止・リセットのほか、シリアルモニターとオシロスコープもあります。まだ必要ないかもしれませんが、すぐ使う日が来ますよ。

Simulator canvas toolbar with board selector, serial monitor, oscilloscope and zoom controls

シミュレーターが教えてくれないこと

シミュレーションは優しい先生ですが、実機がすぐ教えてくれるいくつかの教訓は飛ばしてしまいます:

  • シミュレーターの中で LED は死にません。 実機で抵抗なしに LED をピンへ直結すると、動きます — ただし一瞬だけ。その後、LED は焼き切れるか、GPIO をゆっくり痛めます。シミュレーターはそんな回路を永遠に動かし続けるので、抵抗を付ける習慣は今のうちに身につけましょう。
  • 本物の Uno は起動時に点滅します。 ブートローダーが電源投入時に L LED を数回点滅させます。初心者はよくこれを「自分のコードがおかしい」と勘違いしますが、正常な動作です。
  • 互換基板は個体差があります。 安い Uno 互換機では L LED の色が違ったり、暗かったり、パッドの位置が少し違ったりします。シミュレーターが示すのは理想化された基板1枚で、あなたの机の中の引き出しはそんなにきれいではありません。
  • delay() はすべてを止めます。 このスケッチでは問題ありません。でもボタンやセンサーを使う本番プロジェクトでは、この1000ms の停止がバグになります。「delay 中はどうして応答しないんだ」という感覚を覚えておいてください — きっとまた出会います。

みんなが時間を無駄にするミス

筆者はこれまでたくさんの最初のスケッチが失敗するのを見てきました。ほぼ必ず次のどれかです:

  • setup() に pinMode() がない。定番中の定番。コンパイルは通るのに、何も光らない。
  • 外付け LED を逆向きに挿す。長い足をピンに、短い足を GND に。逆だとただ暗いまま — 故障もなく、光もなく、楽しさもなし。
  • コードを編集したのに Run を押し直さない。シミュレーションは自分では再起動しません。
  • ピンを文字で入力してしまう、または癖でピン12を掴んでしまう。オンボード LED はピン13だけを聞いています。

次のステップ

1秒点滅が退屈に感じ始めたら — だいたい2分ほどでそうなります — いろいろ変えてみましょう。delay を250ms にするとストロボになります。外付け LED を抵抗付きでピン12に移して、スケッチを合わせて書き直すのもいいでしょう。~ マークの付いたピン(PWM 対応ピンです)で analogWrite() を試して、トグルではなくフェードさせてみるのも面白いですよ。押しボタンを付けて、指に LED が応えるようにするのもおすすめです。

無料シミュレーターを開いて、Blink サンプルを読み込んでみましょう — この記事の回路とコードがすでに配線済みで入っています。アカウント不要、インストール不要。LED があなたに点滅を返してきたら、あなたは正式に組み込みプログラマーの仲間入りです。だいたいね。

Leave a Reply

Your email address will not be published. Required fields are marked *