ガイド · 読了まで17分

Arduinoのプロジェクトが動かない?10分でできるトラブルシューティングの手順

Arduinoのプロジェクトが動かないときは、電源、書き込み、配線、部品、コード、センサーの6つの層を外側から順に確認します。フロー表、テスト用スケッチ、8項目のチェックリスト付き。

Arduinoのプロジェクトが動かないときは、手当たり次第に配線を抜いて故障箇所を探すのはやめましょう。外側から内側へ進みます。まず電源(ボードの電源は入っているか?)、次に書き込み(コードは本当にボードに届いたか?)、次に配線(GNDは共通か、各線は正しいピンにあるか?)、次に部品の向きと値(LEDが逆向きではないか、抵抗は正しいか?)、次にコード(ピン番号とロジック)、最後にセンサーと環境(明るさ、距離、電源電圧)です。層ごとに1つずつテストし、一度に変えるのは1か所だけにします。この順番に従えば、ほとんどの故障は10分以内に見つかります。よくある間違いは外側の層にあり、そこがいちばん手軽に確認できるからです。

この記事では、個々のエラーメッセージを並べるのではなく、トラブルシューティングの方法を紹介します。まずこの方法の2つのルールを説明し、次に各層の症状、1分テスト、考えられる原因をまとめたフロー表を示します。そのあと、Blinkとシリアルモニタで回路を切り分ける短いテスト用スケッチ、テスターでの4つのチェック(テスターがない場合のLEDとシリアルモニタでの代わりの方法も)、BlueGraysの無料プロジェクトでの故障をステップごとに診断する例、症状別のクイックリファレンス表、授業で使える8項目のトラブルシューティングのチェックリストを紹介します。

電源ラインと中央の溝がある、Arduinoの回路に使う白いブレッドボード
動かないプロジェクトの多くは、コードより先にブレッドボードに問題があります。1行ずれている、中央の溝の反対側に挿している、電源ラインが2つに分かれている、といったものです。

トラブルシューティングの2つのルール:外側から内側へ、変えるのは1か所

外側から内側へ進む理由は単純で、内側の層は外側の層に依存しているからです。ボードに電源が来ていなければコードが正しいかどうかは関係なく、コードがボードに届いていなければ配線を直しても何も変わりません。外側の層は確認もいちばん速くできます。電源LEDを見るのは5秒、書き込みのメッセージを読むのは10秒ですが、コードのロジックの誤りを見つけるには何分もかかることがあります。2つ目のルールは、変えるのは1か所というルールです。配線、抵抗、コードのしきい値を一度に全部変えると、プロジェクトが動き出しても何が効いたのかわかりません。動かなければ、新たな故障を増やしてしまったかもしれません。1か所変えてテストし、結果を書き留めてから次に進みましょう。

  • 症状を1文で書く:「LDRを手で覆うとLEDが点くはずなのに、まったく点かない」。「動かない」は症状ではありません。期待したことと実際に起きたことを分けて書くと、確認すべき層が見えてくることがよくあります。
  • 配線中はUSBを抜く:接続を変えている間もボードに電源が入っていると、うっかり触れたときにショートの原因になります。変更して目で確認してから、もう一度挿します。
  • 動作確認済みの部品に交換する:怪しいLED、線、センサーを、動くとわかっているものに交換するのは、テスターなしでできるいちばん確実なテストです。
  • メモを取る:「線を7から8に移した、変化なし」のような短いメモがあれば同じテストを繰り返さずに済み、フォーラムで質問したり先生に聞いたりするときのまとめにもそのまま使えます。
  • 単純にする:プロジェクトが大きいなら、モジュールを1つずつ外します。まずボードだけ、次にボードと出力部分、次に入力部分です。どの部分を加えたときにおかしくなるかで、故障箇所がわかります。

10分でできるトラブルシューティングのフロー表

次の表を上から下へ読み、今のテストに合格するまで次の層に進まないでください。各テストは約1分なので、6つの層すべてが6〜10分で終わります。ほとんどのテストは、目とボードのLED、Arduino IDEのシリアルモニタで十分です。テスターがあれば速く進みますが、必須ではありません。「考えられる原因」の列には、テストに失敗したときに最初に見るべき場所を、だいたい起こりやすい順に並べています。

層症状1分テスト考えられる原因
1.電源何も起きない、ボードのLEDが消えている、またはボードが熱くなるONのLEDは点いているか?USBを抜いて部品に触れ、熱いものはないか?充電専用のUSBケーブル、ゆるいポート、5VとGNDのショート、逆向きに配線したモジュール
2.書き込みコードを変えたのに、ボードが前の動作のままIDEは書き込み完了と表示したか、エラーの行はないか?「ツール」メニューのボードとポートは正しいか?ボードやポートの選択ミス、コンパイルエラー、ドライバがない、シリアルモニタがポートを使用中
3.配線ある部品がまったく反応しない、またはときどきしか動かない図を拡大し、すべての線を両端で数える。GNDはボードと共通か?ブレッドボードの行のずれ、分かれた電源ライン、DピンとAピンの取り違え、断線したジャンパー
4.部品の向きと値LEDが消えている、またはとても暗い、ボタンが常に押されていると読み取られるLEDの長い足はピン側か?抵抗の帯は何を示しているか?ボタンが90度回転していないか?逆向きのLED、220 Ωの代わりに10 kΩ、LDRと抵抗の入れ替わり、モジュールのVCCとGNDの並び
5.コードボードは動くが、動作がおかしいコード内のピン番号をすべて回路と照らし合わせる。チェックポイントをシリアルモニタに表示するピン番号の間違い、pinModeがない、=と==の取り違え、合わないしきい値や待ち時間
6.センサーと環境値がまったく変わらない、意味をなさない、または飛び跳ねるシリアルモニタでセンサーの値を見ながら、条件を変える(照明を消す、手を近づける)周囲の明るさ、センサーの測定範囲外、ウォームアップ時間、3.3 Vと5 Vの不一致、長い配線とノイズ

第1・2層:電源と書き込み

Arduino Unoでは、この2つの層の最初の手がかりを2つのLEDが教えてくれます。ONのLEDはボードに電源が入っていることを示します。消えているなら、まずUSBケーブルを替えてください。充電専用でデータを通さないケーブルもあるからです。ONが点いているのに、挿したときにパソコンのUSBの接続音が途切れたり、LEDがちらついたりするなら、回路のどこかでショートしているかもしれません。USBを抜いて5VとGNDの線をたどり、逆向きに挿したモジュールや、2本のラインをまたいでしまった線を探します。熱くなる部品は常に深刻なサインです。取り外すまでボードに電源を入れないでください。モーター、サーボ、リレーを使う場合、USBでは電流が足りないことがあります。その場合の症状はふつう「何も動かない」ではなく、不規則なリセットや細かい震えです。電池やACアダプターの選択肢については「Arduinoを電池で動かす方法」をご覧ください。

書き込みの層で答える問いは1つだけです。ボード上のコードは、画面に見えているコードと同じでしょうか?書き込みが終わると、Arduino IDEは下部の出力エリアにそう表示します。赤い行があれば、コードはボードに届いておらず、ボードは前のプログラムを動かし続けています。修正が効かなかったと思い込んでしまうので、これは厄介です。avrdude、ポート、ドライバのエラーについては「Arduinoに書き込めないとき」で各メッセージを説明しています。コンパイルの段階でつまずいているなら「Arduinoのコンパイルエラー」をご覧ください。簡単な確認テストもあります。コード内の待ち時間を100から1000に変えて書き込みます。LEDの点滅のリズムが変わらなければ、問題は書き込みの層にあります。ESP32のボードの中には、書き込み中にBOOTボタンを押し続ける必要があるものもあります。Raspberry Pi Picoでは、Thonnyの右下でMicroPythonのインタプリタが選ばれているか確認してください。

第3層:配線、GND、ピン

ボードに電源が入り、コードも書き込めたら、次は配線の番です。いちばん多い間違いは、共通GNDを忘れることと、ブレッドボードの読み違いの2つです。センサーやモジュールに専用の電源があっても、そのGNDはArduinoのGNDにつなぐ必要があります。そうしないと信号の電圧に基準がありません。ブレッドボードでは中央の溝が左右を分けていて、長いブレッドボードでは縁に沿った電源ラインが中央で分かれていることがあります。ラインの片側に5Vを入れ、反対側の部品にも電源が来ていると思い込むのは非常によくある間違いです。この層でいちばんよい方法は、図との1対1の照合です。すべての線を両端とも数え、図上の対応する線を指でさします。デジタル2とアナログA2の取り違え、5VとVINの混同、1行ずれた線がすぐに見つかります。回路図の記号になじみがなければ、「回路図の読み方」でブレッドボードに移す方法をステップごとに説明しています。

線を変えるときはボードのUSBケーブルを抜いてください。5Vや3.3VのピンをGNDに直接つないではいけません。ボードが熱くなり、パソコンがUSBポートを停止することがあります。部品が熱くなる、焦げたにおいがする、電源LEDがちらつく場合は、作業を続ける前に電源を切ってください。

第4層:部品の向きと値

配線が正しいのにまだ部品が反応しないなら、部品そのものを見ます。LEDの長い足(アノード)は抵抗を通してピンへ、短い足(カソード)はGNDへつなぎます。逆向きのLEDはふつう壊れず、点かないだけです。いちばん取り違えやすい部品は抵抗です。220 Ωは赤・赤・茶、10 kΩは茶・黒・橙の帯です。LEDの横に10 kΩを入れると、気づかないほどかすかにしか光りません。LDRやボタンの横に220 Ωを入れると、読み取り値が意味をなさなくなります。帯は「抵抗のカラーコード」ツールで読め、LEDに合う値は「LED抵抗計算ツール」で求められます。4本足の押しボタンを90度回して挿すと、常に押されている、または一度も押されていないと読み取られます。モジュールのVCC、GND、信号の並びはメーカーによって違うので、ネット上の写真ではなく、ボード自体に書かれたピンのラベルを読んでください。トランジスタやレギュレーターのような3本足の部品も、型番によってピンの並びが違います。

第5層:コード(ピン番号とロジック)

ハードウェアに問題がなければ、コードが回路と同じことを言っているか確認します。1つ目の確認はピン番号です。LEDが物理的には8番にあるのに、コードがdigitalWrite(9, HIGH)なら、すべて完璧に見えても何も起きません。2つ目の確認はpinModeです。setup()にpinMode(pin, OUTPUT)がないと、digitalWrite(pin, HIGH)はピンを出力にせず、内部プルアップ抵抗を有効にするだけなので、LEDはとても暗く光ります。抵抗を除けば、これが「LEDが暗い」いちばん多い原因です。3つ目の確認はロジックです。if (value = 100)と書くと何も比較されず、変数に100が代入されて条件が常に真になります。正しくは==です。しきい値と待ち時間もこの層に含まれます。周囲の環境に合わないしきい値では、センサーが完璧に動いていても何も反応しません。ライブラリを使うプロジェクトでは、正しいライブラリがインストールされているかも確認しましょう。詳しくは「Arduinoにライブラリを追加する方法」をご覧ください。

第6層:センサーと環境

最後の層は、回路とコードが正しくても結果を狂わせる外部の条件です。LDRの値は部屋の明るさで変わります。昼間に窓際で動いたしきい値が、夜に照明の下では働かないことがあります。HC-SR04は布のような柔らかい面からはエコーが返らず、2 cmより近くは測れません。MQシリーズのガスセンサーは、測定前に数分のウォームアップが必要です。DHT11は1秒に1回より頻繁に読むとエラーを返します。ESP32とRaspberry Pi Picoのピンは3.3 Vで動作します。5 Vを出力するセンサーを直接つなぐと、読み取りがおかしくなったり、ピンが壊れたりすることがあります。長い配線、モーターからのノイズ、フローティング状態の入力も値が飛ぶ原因です。この層でいちばん役立つ道具はシリアルモニタです。センサーの生の値を見ながら、わざと条件を変えてみましょう。I2Cのディスプレイやセンサーがまったく応答しない場合は、「I2Cとは?」のスキャナーのスケッチでアドレスを確認できます。

切り分け:Blinkでボードを、シリアルモニタで各ステップを確認する

層をすばやく確認するいちばん速い方法は、回路とコードを部分に分けることです。1つ目の部分はボード自体です。何もつながずに、ボード上のL LEDを点滅させるコードを書き込みます。Lが点滅すれば、電源、書き込み、ボードは問題なく、ここからはボードの外に問題を探します。2つ目の部分は出力で、同じコードで外付けのLEDを点滅させます。3つ目の部分は入力で、センサーの値をシリアルモニタに表示します。次のスケッチは3つすべてを行い、各ステップで番号つきのチェックポイントをシリアルモニタに表示します。外付けのLEDを220 Ωの抵抗を通して9番ピンに、テストするアナログセンサーの信号をA0につなぎ、シリアルモニタを9600ボー(baud)に設定してください。

C++ (Arduino IDE)
1const int LED_PIN = 9;       // Harici LED pini / External LED pin
2const int SENSOR_PIN = A0;   // Analog sensör pini / Analog sensor pin
3
4void setup() {
5  Serial.begin(9600);                  // Seri monitör de 9600 olmalı / Serial Monitor must be 9600 too
6  pinMode(LED_BUILTIN, OUTPUT);        // Karttaki L ışığı / On-board L LED
7  pinMode(LED_PIN, OUTPUT);            // Harici LED çıkış / External LED as output
8  Serial.println("1) setup bitti");    // Kontrol noktası 1 / Checkpoint 1
9}
10
11void loop() {
12  digitalWrite(LED_BUILTIN, HIGH);     // Kart canlı mı? / Is the board alive?
13  digitalWrite(LED_PIN, HIGH);         // Harici LED açık / External LED on
14  Serial.println("2) LED acik");       // Kontrol noktası 2 / Checkpoint 2
15  delay(500);
16
17  digitalWrite(LED_BUILTIN, LOW);
18  digitalWrite(LED_PIN, LOW);          // Harici LED kapalı / External LED off
19  Serial.println("3) LED kapali");     // Kontrol noktası 3 / Checkpoint 3
20  delay(500);
21
22  int value = analogRead(SENSOR_PIN);  // 0-1023 arası okuma / Reading from 0 to 1023
23  Serial.print("4) A0 = ");
24  Serial.println(value);               // Sensör değeri / Sensor value
25}
シリアルモニタとボードで見えるもの意味確認する層
シリアルモニタが空で、Lが点滅しないコードが動いていない、またはボードに届いていない1.電源、2.書き込み
文字化けした文字が流れるシリアルモニタの速度がSerial.begin(9600)と合っていない5.コード(ボーレートの設定)
「1) setup bitti」(トルコ語で「setup完了」)がときどき再び表示されるボードが勝手にリセットしている。ふつうは電源が足りないため1.電源
2と3が交互に表示され、Lは点滅するが外付けのLEDは点かないコードとボードは問題なし。外付けのLEDの経路が切れている3.配線、4.部品の向きと値
A0が常に0付近、または常に1023付近信号線がGNDか5Vにつながっている、センサーに電源が来ていない、または分圧用の抵抗がない3.配線、4.部品の値
何もつないでいないのにA0がでたらめに飛ぶピンがフローティング状態。正常で、センサーをつなげば収まるはず3.配線

このスケッチの本当の強みはチェックポイントです。自分のプロジェクトでも同じ方法を使いましょう。setup()の最後と、loop()の重要なステップのあとに、「ボタンが押された」「しきい値を超えた」のような短いSerial.println()を追加します。シリアルモニタに最後に表示されたメッセージが、プログラムが止まった場所を教えてくれます。ある条件がなぜ一度も成立しないのかを調べるには、条件の直前で比較する値を表示します。「value < 50」が一度も真にならないなら、値が50を下回らないことがその場でわかります。大きなプロジェクトでも同じ考え方で、コードの一部を一時的にコメントアウトし、部分ごとにテストします。ボーレート、改行コード、プロッタといったシリアルモニタの設定については「シリアルモニタの使い方」をご覧ください。

テスターでの4つのチェック(ない場合はLEDとシリアルモニタで)

テスターがあると、トラブルシューティングが推測から測定に変わります。たった4つの測定で、Arduinoの故障のほとんどをカバーできます。測る前に、テスターを正しいモードにしてください。電圧はDC V、配線や行の確認はブザー(導通)、抵抗はΩです。導通と抵抗のチェックは、必ずUSBを抜いた状態で行います。テスターがなければ、最後の列の方法で、同じ問いにより大まかですが十分な答えが得られます。テスターのレンジや、テスト棒をどの差し込み口に挿すかは、「テスターの使い方」で写真つきで説明しています。

チェックテスターの設定とテスト棒期待される結果テスターがない場合
電源電圧DC V。黒のテスト棒をGNDに、赤のテスト棒を5Vピンに当てる(ボードはUSB接続)約4.7〜5.1 V。3.3Vピンでは約3.3 VONのLEDを見て、Blinkを書き込む。Lが規則正しく点滅すれば電源は問題なし
線とブレッドボードの行ブザーモード、USBは抜く。線の両端か、同じ行の2つの穴に当てるブザーが鳴る。鳴らなければ断線か、別の行怪しい線を動作確認済みの線に交換する。その線を通して5VとGNDの間にLEDと220 Ωの抵抗をつなぐ
抵抗値Ωレンジ。抵抗を回路から外し、両方の足に当てる220 Ωなら約209〜231 Ω(誤差5%)カラーコードの帯を読み、カラーコードの計算ツールで確認する
信号の電圧DC V。黒のテスト棒をGNDに、赤のテスト棒を出力ピンかセンサーの信号線に当てる出力がHIGHなら約5 V、LOWなら0 V。LDRの分圧回路では明るさに応じた値シリアルモニタでanalogReadの値を見る(5 Vで約1023、0 Vで約0)。出力ピンにLEDをつなぐ

実例:「LDRで作る常夜灯」プロジェクトでLEDが点かない

この方法を、BlueGraysの無料プロジェクトLDRで作る常夜灯で試してみましょう。回路では、LDRの片端が5Vに、もう片端がA0につながっています。A0とGNDの間には10 kΩの抵抗があり、この2つで分圧回路を作っています。LEDは330 Ωの抵抗を通して13番ピンにつながっています。コードはA0を読み、値が50未満なら部屋が暗いとみなしてLEDを点灯します。症状は「LDRを手で覆っても、LEDがまったく点かない」です。手当たり次第に線を差し替える代わりに、層を順番に確認していきましょう。

光によって抵抗値が変わるLDR(フォトレジスタ)の部品
LDRの抵抗値は、光が強くなるほど下がります。常夜灯のプロジェクトでは10 kΩの抵抗と分圧回路を作ります。2つを入れ替えると、LEDは明るいところで点き、暗いところで消えます。
  1. 電源:ONのLEDは点いていて、熱いものはありません。次へ進みます。
  2. 書き込み:書き込みはエラーなく終わりました。念のため、コード内の50を一時的に2000に変えて書き込みます。analogReadが返す値は最大1023なので、条件は常に真になり、LEDは点きっぱなしになるはずです。
  3. 配線とL LED:13番ピンはボード上のL LEDにもつながっています。しきい値2000でLは点くのに外付けのLEDが点かないなら、コードは動いていて、問題はLEDの経路にあります。LEDの長い足は330 Ωを通して13番へ、短い足はGNDへつながっていますか?
  4. 部品の向きと値:LEDは逆向きではありませんが、横にあるのが330 Ωではなく10 kΩなら、光がかすかすぎて気づきません。2本の抵抗は色で見分けます。
  5. コードとセンサー:しきい値2000で外付けのLEDが点くなら、50に戻します。次に実際の値を見るため、同じ回路にLDRで光の強さを測定プロジェクトのコードを書き込みます。同じLDRの配線を使い、0.5秒ごとにA0の値をシリアルモニタに表示します。
  6. 値を読む:覆っていないときは600前後、手で覆うと120前後だったとします。値が50を下回ることはないので、LEDは一度も点きません。常夜灯のコードに戻り、しきい値を200から300の間に上げます。
  7. 逆の動作を見抜く:覆ったときに値が下がらずに上がるなら、LDRと10 kΩの位置が入れ替わっています。手を動かしていないのに値がでたらめに飛ぶなら、A0の線が、LDRと抵抗が合流する行にしっかり挿さっていません。

この例で故障を見つけたのは、新しい知識ではなく順番でした。まずLED自体が点くことを確かめ、次にセンサーが実際に何を読んでいるかを見たのです。アプリでは、このプロジェクトの「コードを理解」タブの「困ったときは」に、これらの症状のうち5つが症状と解決策の組み合わせとして載っています。暗くなっても外付けのLEDがまったく点かない、LEDが明るいところで点いて暗いところで消える、手で覆っても点かない、点きっぱなしかちらつく、書き込みエラー、の5つです。プロジェクトの「トラブルシューティング」には、電源から始まり、書き込み、ピン番号、ブレッドボード、ジャンパーワイヤー、GND、LED、抵抗と進む、一般的な10ステップのチェックリストがあります。お気づきかもしれませんが、この順番はこの記事の冒頭で紹介した層とほぼ同じです。

アプリのヘルプ:プロジェクトが動かないときに見る場所

  • 「トラブルシューティング」:プロジェクトページにある、「プロジェクトが動作しない場合は、以下のステップを確認してください。」で始まる順序立てたチェックリストです。170以上のプロジェクトにあり、プレミアムで利用できます。無料プロジェクトでも、このセクションはプレミアムで表示されます。何が壊れているのかまったく見当がつかないときは、ここを最初から最後までたどりましょう。
  • 「コードを理解」>「困ったときは」:そのプロジェクトのコードと回路に特有の、症状と解決策の組み合わせです。無料プロジェクトでは誰でも、プレミアムプロジェクトではプレミアムで利用できます。症状を1文で書けるなら、まずここを見てください。このセクション全体については「「コードを理解」のガイド」の記事で説明しています。
  • 「一緒に作りましょう」のステップに戻る:ガイドモードで「2.回路を組む」に戻り、ボードのUSBケーブルを抜いた状態で回路を一から組み直します。「3.コードを書き込む」では、Arduino IDEの「ツール」メニューでボードとポートをもう一度確認します。このモードは、どのステップにいたかを覚えています。使い方は「スマホで初めてのArduinoプロジェクトを作る」で説明しています。
  • 回路図を拡大する:「回路図」をピンチで拡大し、自分の配線を接続ごとに照らし合わせます。必要なら「ギャラリーに保存」で保存し、確認した線に印をつけましょう。第3層の故障のほとんどはこれで見つかります。
  • フォーラムで的確に質問する:ここまで全部試してもまだ動かないなら、「学ぶ」 › 「フォーラム」の「質問」カテゴリーでトピックを立てましょう。ボード、コード全体、接続、期待した動作と実際の動作、確認済みの層を書き、回路のはっきりした写真を添えます。書き方は「Arduinoのフォーラムでの質問のしかた」にあります。

症状別クイックリファレンス

症状最初に確認する層最初のテスト関連記事
何も起きず、ONのLEDも消えている1.電源別のUSBケーブルとポートを試す。5VとGNDのショートを探すArduinoを電池で動かす方法
コードが書き込めない、avrdudeやポートのエラー2.書き込み「ツール」メニューのボードとポート。データを通すケーブルArduinoに書き込めないとき
コンパイル時に赤いエラーの行5.コード最初のエラーの行を読み、その行番号に移動するArduinoのコンパイルエラー
LEDは点くがとても暗い4.部品の値、5.コード抵抗の色。setup()にpinMode(…, OUTPUT)はあるか?LEDとは?
センサーが常に0、または常に10233.配線センサーのVCCとGND、信号線の行、分圧用の抵抗分圧回路
ボタンが勝手に押されているように見える3.配線プルダウン抵抗はあるか、またはINPUT_PULLUPを使っているか?Arduinoに押しボタンをつなぐ方法
サーボが震える1.電源サーボを別の5 V電源から給電し、GNDをつなぐサーボモーターとは?
ボードが不規則にリセットする1.電源モーターやリレーを外してテストする。シリアルモニタでsetupのメッセージが繰り返されるか?Arduinoがリセットを繰り返すとき、ESP32のブラウンアウトエラー
シリアルモニタの文字化け5.コードシリアルモニタの速度をSerial.begin()の値に合わせるシリアルモニタの使い方

先生向け:8項目のトラブルシューティングのチェックリスト

24人のクラスで8つのグループが同時に回路を組んでいて、最初の15分で6つのグループが「動きません」と手を挙げたとします。次のチェックリストをすべてのグループの机に置き、最初にルールを決めましょう。手を挙げる前にカードを上から下までたどり、どの項目でつまずいたか、何を変えたかを裏に書く、というルールです。これで先生の時間に余裕ができ、生徒には問題解決の習慣が身につきます。トラブルシューティングのメモは、評価に使える過程の記録にもなります。大人数のクラスでのグループの組み方は「大人数のクラスでArduinoを教える」を、過程の評価については「Arduinoプロジェクト評価のルーブリック」をご覧ください。

  1. 症状:何を期待し、何が起きているか?1文で書く。
  2. 電源:ONのLEDは点いているか?USBを抜いて、熱い部品はないか?
  3. 書き込み:書き込みはエラーなく終わったか?「ツール」メニューのボードとポートは正しいか?
  4. ボード:Blinkを書き込んだあと、ボード上のL LEDは点滅するか?
  5. 配線:図を拡大し、すべての線を両端で数える。GNDは共通か、線は正しいピンと正しい行にあるか?
  6. 部品:LEDの長い足はピン側か?抵抗の帯は部品リストの値と合っているか?モジュールのVCCとGNDは正しいか?
  7. コード:コード内のピン番号は回路と合っているか?チェックポイントをシリアルモニタに表示すると、最後に出るのはどれか?
  8. センサーと次のステップ:シリアルモニタのセンサーの値は妥当か、条件を変えると値も変わるか?それでも解決しなければ、「困ったときは」と「トラブルシューティング」を確認してから先生を呼ぶ。一度に変えるのは1か所だけにし、メモを取る。

トラブルシューティングはスキルで、故障に出会うたびに速くなります。最初のプロジェクトで20分かかった原因探しが、5つ目のプロジェクトでは3分に縮まります。症状から層の見当がつくようになるからです。次にプロジェクトが動かないときは、線を抜く前にこの手順を開き、上から順に進めてください。この記事の常夜灯のような小さなプロジェクトは練習に最適です。BlueGraysアプリでは、60件の無料プロジェクトのそれぞれに回路図、コード、「コードを理解」のセクションがついているので、次の故障のときには、どこを見ればよいかもうわかっているはずです。

よくある質問

Arduinoのプロジェクトが動かないのはなぜですか?

よくある原因は、多い順に、電源の問題、ボードに届いていないコード、共通GNDの欠落やブレッドボードで1行ずれた線、逆向きのLEDや間違った抵抗値、コード内のピン番号の間違いです。この順番で、一度に1か所ずつ変えながら確認すれば、たいてい10分以内に故障が見つかります。

Arduinoが壊れているかどうかはどうすればわかりますか?

すべての配線を外し、USBケーブルだけでボードをつないで、Blinkのスケッチ例を書き込みます。ONのLEDが点き、書き込みがエラーなく終わり、L LEDが点滅すれば、ボードはおそらく問題なく、原因は回路かコードのほかの部分にあります。ボードがポートとしてまったく表示されない場合は、まず別のデータ通信用ケーブルとUSBポートを試してください。

Arduinoにコードは書き込めるのに動かないのはなぜですか?

まず、書き込みが本当に終わったか確認します。エラーの行があれば、ボードは前のコードを動かしています。書き込みに問題がなければ、コード内のピン番号を回路と照らし合わせ、setup()にpinModeの行があるか確認し、setup()の最後にSerial.println()を追加して、プログラムがそこまで進むかをシリアルモニタで確かめます。

シリアルモニタが文字化けするのはなぜですか?

シリアルモニタの速度が、コード内のSerial.begin()の値と合っていません。コードが9600なら、シリアルモニタの右下の速度も9600にします。ESP32では起動メッセージが115200ボーで送られるので、9600で数行が文字化けするのは正常です。

テスターなしでArduinoの回路をテストするには?

ボード上のONとLのLEDで電源とボードの状態がわかり、シリアルモニタに表示したanalogReadの値でセンサーの信号がわかります。怪しい線やLEDを動作確認済みの部品に交換すれば、導通テストの代わりになります。抵抗の値はカラーコードの帯から読み、カラーコードの計算ツールで確認できます。

Arduinoのアナログセンサーが常に0か1023になるのはなぜですか?

常に0なら、ふつうは信号線がGNDにつながっているか、センサーに電源が来ていません。常に1023なら、信号線が5Vに直結しているか、分圧用の抵抗がありません。センサーのVCCとGND、信号線が正しい行にあるか、LDRのような部品なら10 kΩの抵抗があるかを確認してください。

全プロジェクトを見る
LDRで作る常夜灯
#12初級

LDRで作る常夜灯

暗くなると自動で点灯し、朝になると消灯する小さな常夜灯です。光センサーが部屋の明るさを測定し、Arduinoが十分に暗くなったらLEDを点灯させ、明るくなったら消灯させます。街灯が夕方になると自動で点灯する仕組みも理解できます。

4.8(102)
205
LDRで光の強さを測定
#11初級

LDRで光の強さを測定

部屋の明るさを数値で見てみませんか?光に反応する小さな部品、LDRで周囲の光を測定し、Arduinoが0.5秒ごとにその値をコンピューターの画面に表示します。手で覆うと数値が変わる様子を確認できます。自動で点灯する常夜灯などのプロジェクトへの第一歩です。

4.6(81)
139
LEDの点滅
#1初級

LEDの点滅

電子工作の第一歩は、1個のLEDを点けたり消したりすることです。Arduinoで短い間隔で点灯と消灯を繰り返すと、LEDが素早く点滅します。ボードが光を制御する仕組みを最もシンプルな形で確かめ、これから取り組むプロジェクトの基礎を身につけます。

4.6(188)
1127
ボタンでLEDを点灯(押している間のみ)
#9初級

ボタンでLEDを点灯(押している間のみ)

呼び鈴のように、押している間は点灯し、離すと消灯します。Arduinoはボタンの状態を常に読み取り、押されている間はLEDを点灯させ、指を離した瞬間に消灯させます。このシンプルな回路で、ボードが外部からの操作を検知する仕組みを学べます。

4.8(113)
229
ボタンでLEDの点灯・消灯を切り替え
#10初級

ボタンでLEDの点灯・消灯を切り替え

部屋の照明スイッチのように、ボタンを1回押すと点灯し、もう1回押すと消灯します。Arduinoはボタンが押されるたびにLEDの状態を反転させます。ボタン内部の小さな接点の振動で誤動作しないよう、短い待ち時間も設けます。1つのボタンでオン・オフを切り替える、シンプルな仕組みです。

4.8(100)
167
HC-SR04で距離を測定(シリアルモニタ表示)
#27初級

HC-SR04で距離を測定(シリアルモニタ表示)

HC-SR04センサーは、コウモリが暗闇で道を見つけるのと同じ仕組みで動作します。人には聞こえない音を出し、その反響を捉えて前方の物体までの距離を測ります。Arduinoは0.5秒ごとに距離をセンチメートル単位でコンピューターの画面に表示し、3〜100センチメートルの測定値を示します。駐車センサーや障害物を避けるロボットなどのプロジェクトの基礎になります。

4.6(46)
71
DHT11で温度と湿度を測定
#55中級

DHT11で温度と湿度を測定

部屋の温度は何度で、空気は湿っているでしょうか、それとも乾燥しているでしょうか?DHT11センサーが温度と湿度を測定し、Arduinoが2行のLCDディスプレイに値を表示して、数秒ごとに更新します。センサーに異常があればエラーメッセージが表示されます。自分だけの小さな気象観測装置を作る第一歩です。

4.7(47)
73
Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)
#148初級

Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)

Picoの内蔵LEDの次は、ブレッドボードに外付けLEDを接続し、GP14ピンで制御します。このプロジェクトでは、Picoの汎用GPIOピンを出力として使う方法、LEDの極性(長い足=アノード/+、短い足=カソード/−)、電流制限抵抗(220Ω)が必要な理由を学びます。抵抗を入れないと、LEDに過大な電流が流れて壊れることがあります。回路はとても簡単です。Pico GP14 → 220Ω抵抗 → LED(+)→ LED(−)→ Pico GND。Wokwiでシミュレーションできます。

4.5(2)
7