Arduinoエラー・トラブル解決大全|アップロードできない時の対処法

プログラミング・電子工作






Arduinoのエラー・トラブル解決大全|アップロードできない時の対処法







トラブルシューティング / 保存版

Arduinoのエラー・トラブル解決大全|アップロードできない時の対処法

Arduinoを使っていると、必ずと言っていいほど、何かのエラーやトラブルにぶつかります。本記事は、そんなときの「駆け込み寺」となるよう作りました。アップロードできない、コンパイルエラーが出る、配線してもLEDが光らない、センサーの値がおかしい。こうした場面ごとに、できる限り幅広くQ&A形式で集めました。専門用語は、できるだけかみくだいて説明しています。気になる項目を、目次から探してみてください。

YOFUKASI LAB編集部
公開日:2026年9月14日
読了目安:45分(辞書的に活用推奨)

執筆・実機検証:YOFUKASI LAB運営者

理学療法士/Arduino・Pythonを使った医療機器制作・学会発表経験あり

🔧 この記事の使い方

最初から順番に読む必要はありません。今、困っていることに近い項目を探してください。

  • アップロードできないときは → 1章へ
  • 赤い文字のエラーが出るときは → 2章へ
  • LEDやスイッチが思い通りに動かないときは → 3章へ
  • センサーやモジュールが反応しないときは → 4章へ
  • シリアルモニタがおかしいときは → 5章へ
  • 動作が不安定・リセットするときは → 6章へ
  • ライブラリやIDE自体の不調のときは → 7章へ
  • その他の応用的なトラブルは → 8章へ
Chapter 01 / Upload Errors

01アップロード・書き込みエラー編

Arduinoのアップロードエラーで確認するポート・ボード・USBケーブル

「書き込みボタンを押しても失敗する」。もっとも多くの人がつまずく壁です。代表的な原因から、詳しく見ていきましょう。

とくに多い3つの原因(詳しく解説)

1ポートが選ばれていない・見えない

「ツール」メニューの「シリアルポート」を開いてください。何も表示されない、または灰色で選べない状態になっていませんか。これは、パソコンがArduinoを認識できていないサインです。USBケーブルを挿し直す、別のUSBポートに挿す、この2つをまず試しましょう。

2ボードの種類が合っていない

「ツール」メニューの「ボード」を開いてください。お使いのArduinoの機種(Unoなど)が選ばれているか、確認しましょう。違う機種が選ばれていると、書き込みは失敗します。

3ケーブルが「充電専用」だった

見た目はそっくりでも、データを送れないUSBケーブルが存在します。スマホの充電専用ケーブルに、よくあるパターンです。別のケーブルに変えるだけで、あっさり解決することが多いです。

1「avrdude: stk500_getsync(): not in sync」と出る
次の順番で確認してください。
① 「ツール」→「ボード」を開き、実機と同じ機種名(Uno等)になっているか確認する。
② 「ツール」→「シリアルポート」を開き、正しいポート番号(Windowsなら「COM+数字」)が選ばれているか確認する。表示が複数ある場合は、Arduinoを一度抜いてから一覧を見て、消えた番号がArduinoのポートです。
③ ①②を直しても失敗するなら、書き込みボタンを押した直後(「アップロード中…」と出た瞬間)に、Arduino本体のリセットボタンを1回押す。タイミングが合うと成功することがあります。
④ それでも直らない場合は、Q13(USBハブ)とQ8(互換ボードのドライバ)も確認してください。

2ポートの一覧に何も表示されない
① 別のUSBケーブルに交換する(充電専用ケーブルの可能性が高いため。Q73参照)。
② ケーブルを変えても出ない場合、Windowsなら「デバイスマネージャー」を開き、「ほかのデバイス」や「不明なデバイス」に黄色い!マークの項目がないか確認する。あれば、それがArduinoです。右クリックして「ドライバーの更新」を行う。
③ 互換ボード(CH340・CP2102チップ搭載)の場合は、Q8の手順でドライバを個別にインストールする。
④ 別のパソコンがあれば、そちらで認識されるか試す。認識されれば、パソコン側の設定が原因と切り分けられます。

3「programmer is not responding」と出る
① USBケーブルを一度抜き、5秒待ってから挿し直す。
② それでも直らなければ、Arduino IDEを完全に終了し、再度開き直す(設定が内部でおかしくなっていることがあります)。
③ ボードの種類とポートの選択を、Q1と同様に再確認する。
④ ATmega328pを使うUno系で頻発する場合、ブートローダーの破損(Q10)も候補に入れる。

4「selected serial port does not exist」と出る
① Arduinoを一度パソコンから抜く。
② 5秒ほど待ってから、再度挿す。
③ 「ツール」→「シリアルポート」を開き、新しく表示されたポート番号を選び直す(以前の番号が消えていることが多いです)。
④ この症状は、スリープからの復帰後にも起こりやすいので、パソコンを再起動すると改善する場合もあります。

5「Done uploading」が出ない・止まったまま
① 60秒ほど、そのまま待つ(大きめのコードは時間がかかることがあります)。
② 変化がなければ、IDE右下の黒い出力欄に、赤い文字が出ていないか確認する。出ていれば、その内容を本記事内で検索する。
③ 何も表示が変わらないなら、IDEを強制終了し、Arduinoを挿し直してから、開き直して再度アップロードする。
④ 3回試しても同じ場所で止まるなら、USBケーブルを交換する。

6ボードの選択欄に、自分のArduinoが出てこない
① 「ツール」→「ボード」→「ボードマネージャー」を開く。
② 検索欄に、購入時の製品名またはメーカー名(例:ESP32なら「esp32」)を入力する。
③ 該当する項目の「インストール」ボタンを押す。数分かかることがあります。
④ インストール完了後、IDEを再起動し、「ツール」→「ボード」を開き直すと、一覧に追加されています。

7書き込み中にケーブルを抜いてしまった
① まず、Arduinoの電源ランプ(LEDが点灯しているか)を確認する。点灯していれば、本体は壊れていません。
② ケーブルをつなぎ直し、「ツール」→「シリアルポート」でポートを選び直す。
③ 書き込みボタンを押し、最初からやり直す(前回の書き込みは失敗した状態で残っているため、上書きが必要です)。
④ 成功しない場合は、Q3の手順で応答を確認する。

8互換ボード(CH340チップ等)が認識されない
① 基板の、USBコネクタ付近にある黒い小さなICチップの刻印を確認する(CH340、CH341、CP2102など)。
② 「(確認したチップ名) ドライバ Windows」または「Mac」で検索し、チップメーカーの公式サイトからダウンロードする。
③ ダウンロードしたインストーラーを実行し、指示に従って進める。
④ インストール後、パソコンを再起動する(再起動しないと反映されないことが多いです)。
⑤ 再起動後、Arduinoを挿し、「ツール」→「シリアルポート」に新しい項目が出るか確認する。

9「exit status 1」とだけ表示される
① IDE下部の黒い出力欄を、一番上までスクロールして見る。「exit status 1」は最後にまとめて出る合図で、本当の原因は、その上の赤い文字に書かれています。
② その赤い文字の中から、「error:」という単語を探す。その直後の文章が、具体的な原因です。
③ 文章の中に、コードのファイル名と行番号(例:「Sketch.ino:12」)があれば、その行を、IDEのコード画面で確認する。
④ 2章(コンパイルエラー編)で、似た内容を探して対応する。

10ブートローダーが壊れているかもしれない
① 別のArduinoが手元にあれば、まったく同じコードをそちらに書き込んでみる。成功すれば、最初のArduino本体側に問題があると分かります。
② 別売りの「USBaspライター」や、もう1台のArduinoを使って、ブートローダーを書き込み直す方法があります(「Arduino ブートローダー 書き込み」で検索し、公式ドキュメントの手順に従ってください)。
③ 手順が難しく感じる場合は、無理に自己解決せず、新しいArduino本体に交換することも、現実的な選択肢です。

11書き込み速度(upload speed)が合っていない
① 「ツール」メニューを開き、「Upload Speed」という項目がないか探す(ボードの種類によっては表示されません)。
② あれば、まず標準値(多くは115200)を選ぶ。
③ 失敗する場合、1段階遅い値(57600など)に変更して、再度試す。
④ 製品の説明書やパッケージに、推奨速度の記載がないかも確認する。

12シリアルモニタを開いたまま書き込もうとしている
① IDE画面右上の、シリアルモニタのウィンドウ(別枠で開いている場合はそのウィンドウ)を閉じる。
② 閉じたことを確認してから、あらためて書き込みボタンを押す。
③ 書き込み完了後、シリアルモニタは再度開いて構いません。

13USBハブ経由だと失敗する
① Arduinoを、USBハブから一度外す。
② パソコン本体に、直接空いているUSBポートがあれば、そこに挿し直す。
③ それで成功すれば、原因はハブの給電・通信能力不足です。以後は、本体に直接挿すか、給電能力の高い「セルフパワー式」のUSBハブに変更してください。

14Arduino IDEのバージョンが古い
① 「Arduino IDE」の公式サイト(arduino.cc)を開く。
② 「Software」または「Download」のページから、お使いのOS(Windows/Mac/Linux)に合ったインストーラーをダウンロードする。
③ 既存のIDEは削除せずに、そのままインストールして問題ありません。
④ インストール後、新しいIDEを起動し、同じコードを開いて再度書き込みを試す。

15Macで「アクセスが拒否されました」と出る
① 画面左上の、りんごマークから「システム設定」を開く。
② 「プライバシーとセキュリティ」を選ぶ。
③ 下にスクロールし、Arduino IDEの許可を求める通知がないか確認する。あれば、「許可」をクリックする。
④ 許可の項目が見当たらない場合は、一度Arduino IDEを終了し、再度起動し直すと、許可を求めるポップアップが出ることがあります。

16Linuxで権限エラーが出る
① ターミナルを開く。
② 次のコマンドを、自分のユーザー名に置き換えて実行する。
sudo usermod -a -G dialout ユーザー名
③ 実行後、一度ログアウトし、再度ログインする(再起動でも構いません。反映には再ログインが必須です)。
④ 再ログイン後、ターミナルでgroupsと入力し、「dialout」が表示されているか確認する。表示されていれば、設定は成功しています。



Chapter 02 / Compile Errors

02コンパイルエラー編

Arduinoのコンパイルエラーで多いセミコロン・波かっこ・全角文字のミス

書き込みボタンを押す前の段階で、赤い文字が出る。これは、コードの文法に、何か間違いがあるサインです。1文字の違いで起こることも多いので、落ち着いて見比べましょう。

もっとも多い原因(詳しく解説)

1セミコロン(;)の付け忘れ

Arduinoのコードでは、1つの命令の終わりに、必ずセミコロンを付けます。エラーメッセージに表示された行の、1つ上の行を見てみましょう。セミコロンが抜けていないか、確認してください。

2波かっこ({ })の数が合っていない

開いたかっこの数と、閉じたかっこの数は、必ず同じになります。コードエディタでは、対になるかっこが色で示されることもあります。1つずつ、数を数えてみましょう。

3全角文字が紛れ込んでいる

日本語入力のまま、記号を打ってしまうことがあります。「;」のような全角の記号は、Arduinoには理解できません。半角と全角を、よく見比べてみましょう。

17「expected ‘;’ before…」と出る
① エラー文の「before ‘○○’」の、○○の部分を確認する。
② コード画面で、その単語が書かれている行を探す。
③ その行の、1つ上の行の末尾を見る(エラーは、セミコロンが見つからず次の行まで来て初めて発生するため、原因は1行上にあることが多いです)。
④ 末尾に「;」がなければ追加し、保存してから再度コンパイルする。

18「expected ‘}’ at end of input」と出る
① コードの先頭から、開きかっこ「{」が出るたびに指を1本折り、閉じかっこ「}」が出るたびに1本戻す、というつもりで数える。
② setup()、loop()、if文、for文など、かっこを使う場所を、上から順にすべて確認する。
③ 多くのエディタでは、かっこにカーソルを合わせると、対になるかっこが光ります。怪しい場所で試してみる。
④ 見つからない場合は、コードを一時的に半分にコピーし、前半・後半それぞれでコンパイルしてみると、問題のある側を絞り込めます。

19「’○○’ was not declared in this scope」と出る
① エラー文の○○(変数名や関数名)を、コード内で検索する(Ctrl+Fまたはcommand+F)。
② 同じ綴りで、大文字・小文字も含めて完全に一致しているか確認する。
③ その変数を、使う行より前の行で、int ○○;のように宣言しているか確認する(Arduinoは、上から順にコードを読むため、宣言前に使うとエラーになります)。
④ 波かっこの中で宣言していないか確認する(Q29のスコープの問題)。

20「’○○’ does not name a type」と出る
① ○○が、ライブラリの型名(例:Servo、LiquidCrystalなど)でないか確認する。
② コードの一番上に、#include <○○.h>という行があるか確認する。なければ追加する。
③ ライブラリ自体がインストールされていない可能性もあります。「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」で、名前を検索してインストールする。

21型の不一致エラーが出る
① エラー文に出てくる変数の型(int, float, String, charなど)を確認する。
② 代入しようとしている値が、その型に合っているか確認する。例えばint a = "abc";のように、数値の変数に文字列を入れようとしていないか。
③ 数値にはintfloat、文字の並びにはString(ダブルクォート ” “で囲む)、1文字だけならchar(シングルクォート ‘ ‘で囲む)を使う、という対応を確認する。

22関数の戻り値がないと言われる
① エラーが出ている関数の定義を探す。int 関数名() {のように、void以外の型で始まっているか確認する。
② その関数の中の、すべての処理の流れの最後に、return 値;があるか確認する。
③ if文で分岐している場合、それぞれの分岐すべてに、returnがあるか確認する(片方の分岐にだけreturnがあると、このエラーが出ます)。

23配列の範囲外を指定してしまう
① 配列を宣言した行(例:int data[10];)を確認し、かっこの中の数字(要素数)を控える。
② 使える番号は、0から「要素数-1」までです。上の例なら、0〜9までしか使えません。
③ for文で配列を回す場合、i < 10のように、要素数と同じ数を使っているか確認する(i <= 10だと1つ超えてしまいます)。

24「stray ‘\343’ in program」のような、意味不明な記号が出る
① エラーで示された行番号を確認する。
② その行を、一度すべて削除する。
③ 半角英数モードに切り替えてから、同じ内容を打ち直す。
④ 特に、コピー&ペーストした行は、全角スペースが紛れ込みやすいので、疑わしい行はすべて打ち直すことをおすすめします。

25コメントの中身が実行されてしまう
① コード内で、/*を検索する。
② それぞれに対応する*/が、ちゃんとあるか、1つずつ確認する。
③ 見つけにくい場合は、複数行コメントの代わりに、行ごとに//を付ける方法に変更すると、閉じ忘れ自体がなくなります。

26引用符(” “)がうまく認識されない
① エラーが出た行の、引用符の形をよく見る。半角は「”」、全角は「”」「“」のように、傾きや形が違います。
② 一度、その引用符を削除する。
③ IMEを半角英数モードにしてから、キーボードの「Shift+2」で、半角のダブルクォートを打ち直す。

27大文字・小文字を間違えている
① エラーで指摘された単語を、コピーする。
② ブラウザで「Arduino Reference ○○」と検索し、公式ページのつづりと、1文字ずつ見比べる。
③ 特に間違えやすい例:HIGH/LOW(すべて大文字)、Serial(Sだけ大文字)、setup/loop(すべて小文字)。

28同じ名前の変数を、二重に定義してしまう
① エラー文の「redefinition of ‘○○’」の○○を確認する。
② コード内でその名前を検索し、int ○○のような宣言が、何箇所にあるか数える。
③ 2箇所以上あれば、1つを残して、残りを削除するか、別の名前に変更する。

29{ }の中で定義した変数が、外で使えない
① 「スコープ」とは、変数が使える範囲のことです。波かっこ{ }の中で作った変数は、その中でしか使えません。
② 複数の場所(setup()とloop()の両方など)で使いたい変数は、void setup()より上の行(グローバル変数の位置)で宣言し直す。
③ 宣言する場所を移動したら、元の場所にあった同名の宣言は、削除する。

30#defineの後ろにセミコロンを付けてしまう
① コード内で#defineを検索する。
② 行の末尾にセミコロン「;」が付いていないか確認する。
③ 付いていたら削除する。#defineは「文字の置き換え」を行う特別な命令で、セミコロンも一緒に置き換えられてしまい、意図しないエラーの原因になります。

31同じヘッダファイルを、二重に読み込んでいる
① コード上部の#includeの行を、すべて確認する。
② 同じファイル名が、2回以上書かれていないか確認する。
③ 重複していたら、1行だけ残して削除する。
④ 自作のヘッダファイルを作る場合は、ファイルの先頭に#pragma onceを1行加えておくと、この問題を未然に防げます。

32黄色い「Warning」は出るが、赤い「Error」ではない
① Warning(警告)とError(エラー)は、別物です。Errorは、コンパイルが止まる致命的な問題です。Warningは、多くの場合、書き込みは可能です。
② まずは、書き込みボタンを押してみる。動作に問題がなければ、当面は無視して構いません。
③ ただし、変数の型変換に関するWarningは、将来的な誤動作の原因になることがあるため、余裕があれば、内容を読んで対応することをおすすめします。



Chapter 03 / Wiring Issues

03配線・回路のトラブル編

Arduinoの配線トラブルで確認するLEDの向き・抵抗・GND・ピン番号

コードは正しいのに、部品が思い通りに動かない。こんなときは、配線を疑いましょう。目で見ただけでは気づきにくいミスも多くあります。

33LEDがまったく光らない
① LEDの2本の足の長さを見比べる。長い方がプラス(アノード)、短い方がマイナス(カソード)です。
② 長い足が、抵抗を経由してArduinoのピン側に、短い足がGND側につながっているか確認する。
③ 向きが正しくても光らない場合は、LED自体の故障を疑い、別のLEDに交換して試す。
④ コード側で、そのピンをOUTPUTに設定し、HIGHにしているか確認する。

34LEDがすぐに切れてしまう
① 回路図を見て、LEDと直列に、抵抗(220Ω〜1kΩ程度)が入っているか確認する。
② 抵抗が入っていなければ、すぐに電源を切り、抵抗を追加してから再度電源を入れる。
③ 一度切れてしまったLEDは、多くの場合、修理できません。新しいLEDに交換する。
④ 今後のために、Arduinoの5V出力と、LEDの標準電圧(約2V)の差を、抵抗の計算式(オームの法則)で確認する習慣をつけると安心です。

35ボタンを押していないのに反応する(チャタリング)
① コードに、ボタンを読み取った直後、delay(20);のような短い待ち時間を1行追加する。
② それでも不安定なら、待ち時間を50ミリ秒程度まで増やしてみる。
③ 根本的に解決したい場合は、「Bounce2」という専用ライブラリをインストールし、公式のサンプルコードを参考に書き換える。

36ボタンの値が、常にふらついている
① コードのpinMode()の行を確認し、INPUT_PULLUPを使っているか確認する。使っていなければ、これに書き換える。
INPUT_PULLUPを使う場合、配線はボタンの片方をピンへ、もう片方をGNDへ直接つなぐだけで構いません(プルアップ抵抗は内蔵されています)。
③ 抵抗を使った配線をしている場合は、抵抗の値(10kΩ程度が一般的)と、配線の向きを、回路図と見比べて確認する。

37ブレッドボードに挿しているのに、電気が流れない
① ブレッドボードの穴のつながり方を確認する。中央の電源ライン(+-の印がある列)は横向きに、部品を挿すエリアは縦向きに、5つの穴がつながっています。
② 部品の足が、この「つながっている5つの穴」の中の、別々の列に入っていないか確認する。
③ テスターをお持ちの場合、導通チェック機能で、実際につながっているかを確認すると確実です。

38ジャンパー線を疑ってみる
① 疑わしいジャンパー線を、別の新しい線に交換する。
② 交換して症状が直れば、断線が原因だったと確定できます。
③ テスターがあれば、線の両端に当てて、導通チェック機能で確認すると、交換せずに特定できます。

39複数の部品を使うと、動きがおかしくなる
① 使っているすべての部品(センサー、LED、モーターなど)のGND端子を確認する。
② それぞれのGNDが、最終的にArduinoのGNDピン、または共通のGNDラインに、すべてつながっているか確認する。
③ 1つでもGNDが浮いている(どこにもつながっていない)部品があれば、そこを配線し直す。

40ピン番号を、コードと配線で間違えている
① コード内のpinMode()digitalWrite()で使っているピン番号を、すべて書き出す。
② Arduino本体のピンに書かれている番号と、実際に部品を挿している場所を、1つずつ照らし合わせる。
③ アナログピン(A0など)とデジタルピン(0〜13など)を混同していないかも、あわせて確認する。

41複数のLEDを同時に光らせると、暗くなる
① 同時に光らせているLEDの数を数える。3〜4個を超える場合は、電流不足の可能性が高いです。
② それぞれのLEDに、電流を制限するトランジスタを追加するか、外部電源からLEDに電力を供給する回路に変更する。
③ 応急処置として、抵抗の値を大きくすると、暗くはなりますが、電流の負荷は下げられます。

42はんだ付けした部分が、時々外れる
① 該当箇所のはんだを、はんだ吸い取り線などで一度取り除く。
② 部品の足と基板の穴を、指や治具でしっかり固定する。
③ こて先を、部品の足と基板の両方に2〜3秒当てて温めてから、はんだを流し込む(はんだ自体をこてで溶かすのではなく、部品と基板を温めてから溶かすのがコツです)。
④ 冷えるまで、部品を動かさずに待つ。

43部品を触った直後から、動かなくなった
① 静電気による破損の可能性が高いです。残念ながら、多くの場合、部品の修復はできません。
② 別の同じ部品に交換して、動作するか確認する。
③ 今後の予防として、作業前に、水道の蛇口など、身近な金属に一度触れて、体の静電気を逃がす習慣をつけましょう。特に乾燥する時期は、注意が必要です。

44部品が熱くなっている
ただちに電源を切ってください。発熱は、発火のリスクにつながります。
② 電源を切ったあと、配線図と実際の配線を見比べ、電源(5Vや3.3V)とGNDが、直接つながっていないか(ショートしていないか)確認する。
③ ショート箇所を見つけて修正したら、部品自体が壊れていないか、別の部品に交換して動作確認する。

45ブレッドボードの溝をまたいで挿してしまう
① ブレッドボード中央の、溝(谷になっている部分)の位置を確認する。
② IC部品などを、この溝をまたいで挿していないか確認する(ICは、またいで挿すのが正しい使い方ですが、それ以外の部品は片側にまとめるのが基本です)。
③ 部品の足が、溝の左右で別々の列に入り、意図せず未接続になっていないか確認する。

46部品の足が、奥まで挿さっていない
① 該当の部品を、一度ブレッドボードから抜く。
② 足の先端が曲がっていないか確認し、曲がっていればラジオペンチなどでまっすぐに直す。
③ 穴の位置を目視で確認しながら、垂直に、奥まで、ゆっくりと押し込む。

47電解コンデンサを使うと、動作がおかしい
① コンデンサの側面に描かれた、帯(マイナス側を示す線)を確認する。
② 足の長さも確認する。長い方がプラスです。
③ 回路図の指示と、実際の向きが一致しているか確認し、逆であれば向きを直す。
④ 一度でも逆挿しで通電させた場合、内部が劣化している可能性があるため、新しい部品に交換することをおすすめします。

48部品を逆向きに挿して、壊れてしまった
① 壊れた部品は、多くの場合、修復できません。同じ部品を新しく用意する。
② 新しい部品を挿す前に、データシート(部品名で検索すると見つかります)の、ピン配置図を確認する。
③ 部品に印刷された、小さな印(丸い凹み、色の帯、面取りなど)と、データシートの図を、指差し確認してから挿す。



Chapter 04 / Sensor Issues

04センサー・パーツ別トラブル編

Arduinoの超音波センサー・DHT・サーボ・I2Cのトラブル確認方法

特定のセンサーやモジュールに関する、個別のトラブルを集めました。使っている部品に近い項目を、探してみてください。

49超音波センサーの値が、0や異常に大きい数字になる
① コードのpinMode()を確認し、TrigピンがOUTPUT、EchoピンがINPUTに設定されているか確認する。
② 配線が、コードのピン番号と一致しているか確認する(TrigとEchoを逆に挿す間違いが非常に多いです)。
③ センサーの正面20cm以内に、平らな障害物(壁や手のひらなど)を置いて、値が変化するか試す。反応すれば正常です。
④ 電源を、Arduinoの5Vからきちんと取れているか確認する(3.3Vでは正しく動かない製品が多いです)。

50CdS光センサーの値が、まったく変化しない
① 回路図で、CdSセンサーと抵抗が、直列につながっているか確認する(この2つの間から、信号を取り出す「分圧回路」が必要です)。
② 信号を取り出す配線が、アナログピン(A0〜A5のいずれか)につながっているか確認する。デジタルピンでは、正しい値を読み取れません。
③ コードで、analogRead(A0)のように、正しいピン番号を指定しているか確認する。
④ センサーに直接、懐中電灯やスマホのライトを当てて、シリアルモニタの値が変化するか確認する。

51DHT11・DHT22で、値が読み取れない(nanと表示される等)
① 信号線(DATAピン)と5Vの間に、10kΩ程度のプルアップ抵抗が入っているか確認する(センサーによっては内蔵済みのものもあります)。
② 「スケッチ」→「ライブラリを管理」で、「DHT sensor library」を検索し、インストールされているか確認する。関連する「Adafruit Unified Sensor」も必要です。
③ コード内で、DHT11とDHT22、どちらの型番を使っているか、正しく指定しているか確認する(型番を間違えると、正しい値になりません)。
④ センサーの読み取り間隔が短すぎないか確認する。DHT系は、2秒に1回程度が上限です。

52サーボモーターが、小刻みに震える
① Arduino本体のUSB給電だけで動かしていないか確認する。サーボは、瞬間的に大きな電流を必要とします。
② 外部電源(サーボ用の電池ボックスなど)を用意し、サーボの電源線とGNDに接続する。
③ 外部電源のGNDと、ArduinoのGNDを、必ず接続する(これを忘れると、信号がうまく伝わりません)。
④ それでも震える場合は、コード内の角度指定が、短い間隔で頻繁に変わりすぎていないか確認する。

53モータードライバを使っても、モーターが回らない
① モータードライバのモーター用電源端子(多くはVMやVCC2など)に、モーター専用の電源が接続されているか確認する(ロジック用の5Vとは別です)。
② ドライバとArduino間の、制御信号線(IN1、IN2など)が、コードのピン指定と一致しているか確認する。
③ モーターとドライバの出力端子(OUT1、OUT2)の配線が、正しく接続されているか確認する。
④ ドライバのEnable(イネーブル)ピンがある場合、HIGHにしないと動作しない製品があるため、確認する。

54I2Cデバイスが、まったく認識されない
① 配線を確認する。SDAとSCLが、Arduino UnoならA4とA5に、正しくつながっているか確認する。
② 「I2C Scanner」で検索すると出てくる、確認用の短いコードをArduinoに書き込む。
③ シリアルモニタを開き、表示されたアドレス(0x27や0x3Cなど)を確認する。何も表示されなければ、配線かはんだ付けを疑う。
④ 表示されたアドレスが、使いたいライブラリのコード内で指定されているアドレスと一致しているか確認し、違えば書き換える。

55SPI接続のモジュールが、動かない
① Arduino Unoの場合、SPIのピンは固定です(MOSI=11, MISO=12, SCK=13)。この3本が、正しく配線されているか確認する。
② CS(チップセレクト)ピンは、コードで自由に指定できます。配線した実際のピン番号と、コード内の指定が一致しているか確認する。
③ 複数のSPIデバイスを同時に使う場合、MOSI・MISO・SCKは共通、CSだけがデバイスごとに別のピンになっているか確認する。

56カメラモジュールが認識されない
① フレキシブルケーブルを、コネクタから一度外す。
② 端子(金属の接点)が印刷された面が、正しい向きを向いているか、製品の説明書で確認する。
③ コネクタのロック(黒い小さなパーツ)を持ち上げてから挿入し、奥まで入れてから、ロックを下げて固定する。
④ 固定が不十分だと、浮いた状態で認識されないことが多いため、軽く引っ張って抜けないか確認する。

57SDカードモジュールの初期化に失敗する
① SDカードを、一度パソコンでFAT32形式にフォーマットする。
② コード内のSD.begin(CSピン番号)の数字が、実際に配線したCSピンと一致しているか確認する。
③ SPI接続の配線(Q55参照)も、あわせて確認する。
④ 32GBを超える大容量のSDカードでは、対応していないモジュールもあるため、8〜16GB程度の小容量カードで試してみる。

58赤外線リモコンの信号を、受信できない
① 受信モジュールの3本足(GND・VCC・信号)が、それぞれ正しいピンに接続されているか、データシートで確認する(足の並び順は製品ごとに異なります)。
② 「IRremote」ライブラリがインストールされているか確認する。
③ リモコンとモジュールの距離を、30cm以内に近づけて試す。
④ リモコンの電池残量も、意外と見落としがちな原因なので確認する。

59加速度センサーの値が、明らかにおかしい
① I2C接続の場合は、Q54の手順で、正しく認識されているか確認する。
② コードのsetup()内で、センサーの初期化関数(begin()など)が呼ばれているか、戻り値がエラーを示していないか確認する。
③ センサーを、水平な机の上に静止させた状態で、値が「重力加速度1G相当」に近い数値になるか確認する。大きくずれる場合は、キャリブレーション(校正)が必要な製品もあります。

60圧力センサーの反応が、鈍すぎる
① 分圧回路に使っている抵抗の値を確認する。
② 抵抗値を、今より小さい値(例えば10kΩ→1kΩ)に変更し、反応が良くなるか試す。
③ 逆に、値が振り切れて変化しない場合は、抵抗値を大きくしてみる。
④ 適切な抵抗値は、センサーのデータシートに、目安が書かれていることが多いので確認する。

61RFIDリーダーが、カードに反応しない
① Q55の手順で、SPIの配線を再確認する。
② カードを、リーダーの表面に近づけすぎず、1〜3cm程度の距離で試す(密着しすぎると、逆に読み取れないことがあります)。
③ 「MFRC522」ライブラリのサンプルコード(DumpInfoなど)を、そのまま書き込んで、正常に動くか確認する。動けば、自作コード側に問題があると分かります。

62Bluetoothモジュールと、スマホがペアリングできない
① モジュールのLEDが、点滅しているか確認する(点滅は、ペアリング待機中のサインです)。
② スマホ側のBluetooth設定を開き、対象のデバイス名が一覧に出るか確認する。
③ 出てこない場合は、モジュールへの電源供給(多くは3.3V〜5V)が、安定しているか確認する。
④ 初期パスコード(多くの場合「0000」や「1234」)で、接続を試す。

63Wi-Fiモジュールが、ネットワークに接続できない
① コード内のSSID(Wi-Fi名)とパスワードを、1文字ずつ再確認する(特に大文字・小文字、記号に注意)。
② お使いのWi-Fiルーターが、2.4GHz帯を有効にしているか確認する(5GHz専用の設定になっていないか)。
③ シリアルモニタに、接続状況を表示するコードを入れ、どの段階で止まっているか確認する。
④ ルーターとモジュールの距離を近づけて、電波状況による影響がないか確認する。

64ブザーの音が鳴らない、または音が変
① ブザーの型番や外見を確認する。裏側に緑色の基板が見えるものは「パッシブブザー」、黒い樹脂で覆われているものは「アクティブブザー」であることが多いです。
② アクティブブザーの場合、digitalWrite(ピン, HIGH)だけで音が鳴ります。
③ パッシブブザーの場合、音の高さを指定するtone(ピン, 周波数)という命令が必要です。
④ 使っている命令が、ブザーの種類と合っているか確認し、違えば書き換える。



Chapter 05 / Serial Issues

05シリアル通信のトラブル編

Arduinoシリアル通信の文字化け・Serial.begin・改行・USBケーブルの確認

シリアルモニタは、Arduinoの状態を知るための、大切な窓口です。この窓口に不調があると、他のトラブルの原因も見えにくくなります。

65シリアルモニタが文字化けする
① コード内のSerial.begin(数字)の、数字(ボーレート)を確認する。
② Arduino IDEのシリアルモニタを開き、画面右下のプルダウンメニューを確認する。
③ ①と②の数字が違えば、右下のプルダウンを、コードと同じ数字に変更する。
④ 変更しても直らない場合は、一度シリアルモニタを閉じてから、開き直す。

66シリアルモニタに、何も表示されない
① コードのvoid setup()の中に、Serial.begin(9600);のような行があるか確認する。なければ追加する。
② 追加した場合は、コードを保存し、再度Arduinoに書き込む。
③ シリアルモニタの右下のボーレートが、①の数字と一致しているか確認する。
loop()の中で、実際にSerial.print()Serial.println()が呼ばれているかも確認する。

67ボーレートが分からなくなった
① Arduino IDEで、現在書き込んでいるコードを開く。
② 画面上部の検索機能(Ctrl+F)で、「Serial.begin」と検索する。
③ 見つかった行の、かっこの中に書かれている数字が、ボーレートです。その数字を、シリアルモニタの設定にも反映させる。

68改行がうまく表示されない
① シリアルモニタ画面の、右下にあるプルダウンメニューを確認する(ボーレートの隣にあります)。
② 「改行なし」になっていれば、「新規改行」または「CRおよびLF」に変更する。
③ コード側でも、Serial.print()ではなく、行末で改行されるSerial.println()を使っているか確認する。

69データが、途中で欠けているように見える
① コード内の、データを送信する頻度(delay時間など)を確認する。
delay()の数値を、今より大きくしてみる(例:50ミリ秒→200ミリ秒)。
③ 改善すれば、送信頻度が高すぎたことが原因と分かります。今後は、必要な頻度まで調整して使う。

70「Serial.print」がエラーになる
① コード全体を確認し、Serial.begin()の行が、Serial.print()よりにあるか確認する。
② 多くの場合、Serial.begin()setup()の中、Serial.print()loop()の中に書きます。この順番(構造)になっているか確認する。
③ 順番が入れ替わっていれば、正しい位置に書き直す。

71複数の値が、見づらく表示される
① 各値の前に、何のデータか分かる文字を追加する。例:Serial.print("温度: "); Serial.println(temp);
② 複数の値を1行に並べたい場合は、値の間にSerial.print("\t");(タブ文字)を挟むと、列がそろって見やすくなります。
③ 数値の桁数を指定したい場合は、Serial.print(値, 2);のように、第2引数で小数点以下の桁数を指定できます。

72接続直後の数行が、意味不明な文字になる
① これは、故障ではありません。Arduinoは、シリアル接続の瞬間に、自動的にリセットされる仕様があるためです。
② 気になる場合は、コード側で対処できます。setup()の中、Serial.begin()の直後にdelay(1000);を1行加えると、再起動が落ち着いてから、動作を開始するようになります。

73ケーブルを変えたら、直った
① これは、正しい対処です。USBケーブルには、充電専用(データ線が入っていない)の製品が、外見上見分けがつかない形で存在します。
② 今後は、データ通信ができると確認済みのケーブルを、専用に1本、電子工作用として保管しておくことをおすすめします。

74シリアルポートを、他のソフトも同時に使いたい
① 現在開いているソフト(Arduino IDEのシリアルモニタ、Pythonのプログラムなど)を、1つに絞る。
② 使い終わったら、必ずそのソフトを閉じるか、ポートを解放する処理(ser.close()など)を実行してから、別のソフトを起動する。
③ どうしても同時に使いたい場合は、片方のソフトで受信したデータを、ファイルに書き出し、もう片方がそのファイルを読む、という間接的な連携方法もあります。



Chapter 06 / Power Issues

06電源のトラブル編

Arduinoの電源トラブルと外部電源・共通GND・電圧不足の対処法

動作が不安定、突然リセットする。こうした症状の多くは、電源に原因があります。電子工作のトラブルの中でも、見落とされがちな部分です。

75動作が、たまに不安定になる
① 使っている部品を、すべて書き出す(LED、モーター、センサーの数)。
② モーターやサーボが含まれる場合、まずはそれらを配線から一時的に外してみる。
③ 外した状態で安定するなら、電源不足が原因です。Q76の手順で、外部電源を追加する。
④ 外しても不安定なら、コード側の無限ループや、メモリ不足(Q92参照)も疑う。

76USB給電だけでは、モーターが動かない
① これは、多くの場合、故障ではなく仕様です。
② モーター専用の電源(電池ボックスや、ACアダプター)を用意する。
③ モーターの+-を、この外部電源に接続する。
④ 外部電源のGNDと、ArduinoのGNDを、必ずジャンパー線でつなぐ(これを忘れると、Arduinoからの制御信号が、モーター側に正しく伝わりません)。

77外部電源とUSBを同時につないだら、動作がおかしい
① 多くのArduinoは、複数の電源が同時に入力された場合、自動的にどちらかを優先する設計になっていますが、製品によっては不安定になることがあります。
② USBケーブルを外し、外部電源のみで動作するか確認する。
③ 逆に、外部電源を外し、USBのみで動作するか確認する。
④ どちらか一方で安定するなら、基本的にはその方式のみを使うようにする。

78特定の動作をすると、Arduinoが再起動する
① 再起動する直前に、何が動いていたか(モーターが回り始めた瞬間など)を確認する。
② 該当する部品の電源ラインに、100〜1000µF程度の電解コンデンサを、プラスとマイナスの向きを守って追加する。
③ それでも改善しない場合は、その部品専用の、より大容量な電源に交換する。

795Vと3.3Vを、間違えてつないでしまった
① まず、電源を切る。
② 該当の部品が、まだ動作するか、電源を正しくつなぎ直して確認する。
③ 動作しない場合、その部品は故障した可能性が高いです。新しい部品に交換する。
④ 今後のために、部品の説明書やデータシートで、対応電圧(Operating VoltageやVCC)を、購入時に必ず確認する習慣をつける。

80電源を逆につないでしまった
ただちに電源を切る。
② 焦げたような匂いや、発熱がないか確認する。あれば、その部品には触れず、しばらく冷ますまで待つ。
③ 電源を正しい向きにつなぎ直し、部品が動作するか確認する。
④ 動作しなければ、部品を交換する。今後は、電源ラインの赤(+)と黒(-)の色を、配線前に必ず目視確認する。

81電池で動かしていると、だんだん誤動作する
① 新しい電池に交換し、症状が改善するか確認する。
② テスターがあれば、使用中の電池の電圧を測定する。公称電圧より大きく下がっていれば、交換のサインです。
③ 頻繁に電池切れが起きる場合は、電池の本数を増やすか、より容量の大きい電池に変更することも検討する。

82電圧が、細かく変動しているようだ
① 電源のプラスとマイナスの間に、100µF〜1000µF程度の電解コンデンサを、並列に追加する。
② コンデンサには極性があるため、長い足をプラス側に、必ず正しい向きで接続する。
③ 追加後、症状が改善するか確認する。改善しない場合は、電源自体の容量不足(Q76、Q78)を、あらためて疑う。

83パソコンのUSBポートによって、動作が違う
① パソコン本体に直接付いているUSBポートに、Arduinoを挿し直す。
② キーボードやモニターを経由したUSBポートは、電力供給が弱いことが多いため、避ける。
③ ノートパソコンの場合、電源アダプターを接続した状態(バッテリー駆動でない状態)で試すと、改善することがあります。

84長いケーブルを使うと、動作がおかしい
① 可能であれば、まず短いケーブルに交換して、症状が改善するか確認する。
② 長いケーブルを使い続ける必要がある場合は、ケーブルの芯線が太い(電気抵抗の低い)製品に変更する。
③ 電源側とArduino側、両方の近くに、電解コンデンサ(Q82参照)を追加すると、電圧の変動を緩和できます。



Chapter 07 / Library and IDE Issues

07ライブラリ・環境のトラブル編

Arduinoのライブラリ不足・ボードマネージャー・IDE更新のトラブル対処

コードそのものより、周辺の環境が原因のトラブルです。ソフトの設定を、一度見直してみましょう。

85「○○.h: No such file or directory」と出る
① 「スケッチ」メニュー→「ライブラリをインクルード」→「ライブラリを管理」を開く。
② 検索欄に、エラー文に出てきた○○の部分(拡張子.hは除く)を入力する。
③ 一覧から、該当するライブラリを見つけ、「インストール」ボタンを押す。
④ インストール完了後、IDEを一度再起動してから、再度コンパイルする。

86ライブラリのバージョンによって、動作が変わる
① 「ライブラリを管理」画面で、該当のライブラリを探す。
② 「最新版に更新」ボタンがあれば、押して更新する。
③ 更新して逆に動かなくなった場合は、同じ画面のプルダウンから、以前のバージョン番号を選び直すこともできます。
④ 参考にしている本や記事があれば、そこに書かれたバージョン番号と、実際にインストールされているバージョンを、あわせて確認する。

87同じ名前のライブラリが、複数出てきて混乱する
① 検索結果に表示される、それぞれの「作成者(by ○○)」の欄を確認する。
② 参考にしている記事や本に、作者名の記載がないか確認する。
③ 記載がなければ、ダウンロード数がもっとも多いものを選ぶのが、無難な選択です。
④ 一度インストールして動かなければ、アンインストールし、別の候補を試す。

88新しいボードの種類が、ボードマネージャーに出てこない
① 使いたいボードの名前で、「(ボード名) Arduino IDE 追加方法」と検索する。
② 公式サイトなどに書かれた、ボードマネージャーURL(httpsから始まる長いアドレス)をコピーする。
③ Arduino IDEの「ファイル」→「環境設定」を開く。
④ 「追加のボードマネージャーのURL」欄に、コピーしたURLを貼り付け、OKを押す。
⑤ 「ツール」→「ボード」→「ボードマネージャー」を開き、名前で検索してインストールする。

89Arduino IDEが起動しない
① パソコンを再起動する。
② 再起動後、もう一度IDEを起動してみる。
③ それでも起動しない場合は、一度IDEをアンインストールする。
④ 公式サイトから、最新版のインストーラーを、あらためてダウンロードしてインストールする。

90Arduino IDEが、途中でフリーズする
① 1分ほど、そのまま待ってみる(大きなコードのコンパイル中は、反応が遅くなることがあります)。
② 変化がなければ、タスクマネージャー(Windows)またはアクティビティモニタ(Mac)から、Arduino IDEを強制終了する。
③ 保存していない変更は失われるため、今後はこまめに保存する習慣をつける。
④ 再度IDEを開き、同じ箇所で繰り返しフリーズする場合は、その付近のコードを疑う。

91「スケッチが大きすぎます」と出る
① エラー文に表示された、使用容量と上限容量を確認する。
② コード内で、使っていない変数や、コメントアウトされた大きなコードの塊があれば、削除する。
③ 大きな文字列データ(メッセージなど)があれば、const charPROGMEMを使って、プログラムメモリ側に配置する方法もあります(検索して調べてみてください)。
④ それでも収まらない場合は、より大容量なArduino(Megaなど)への変更も検討する。

92動作中に、突然フリーズする(メモリ不足)
① コード内で、String型の変数を、loop()の中で頻繁に作り変えていないか確認する(これは、実行中のメモリを消費し続ける、よくある原因です)。
② 可能であれば、String型を、char配列に置き換える。
③ 応急的な確認方法として、setup()Serial.println(freeMemory());のような、空きメモリを表示するコード(要ライブラリ)を入れ、実行中にメモリが減り続けていないか観察する。

93日本語のコメントが、文字化けする
① メモ帳やテキストエディタで、コードのファイル(.ino)を開く。
② 「名前を付けて保存」を選び、文字コードの指定欄で「UTF-8」を選択して、上書き保存する。
③ Arduino IDEで、あらためてファイルを開き直し、文字化けが直っているか確認する。

94IDEをアップデートしたら、動かなくなった
① 現在のIDEを、一度アンインストールする。
② Arduino公式サイトの「過去のリリース(Previous Releases)」ページを探す。
③ 以前使えていたバージョン番号を選び、ダウンロードしてインストールする。
④ 動作を確認できたら、しばらくはそのバージョンを使い続け、次の安定版が出てから、あらためて更新を検討する。



Chapter 08 / Advanced Issues

08その他・応用のトラブル編

少し発展的な内容に取り組み始めると出会う、応用的なトラブルです。

95複数のArduino同士で、通信がうまくいかない
① 2台のArduinoのGND同士が、ジャンパー線で接続されているか確認する。
② シリアル通信(TX/RX)の場合、片方のTXを、もう片方のRXへ接続する「たすき掛け」になっているか確認する(TX同士、RX同士をつないでも通信できません)。
③ 両方のコードで、ボーレート(Serial.begin()の数字)が一致しているか確認する。
④ ハードウェアシリアル(0番・1番ピン)を使う場合、書き込み時にこの2本を挿したままだと失敗するため、書き込み時だけ一時的に外す。

96割り込み処理を使うと、誤動作する
① 割り込み関数(attachInterruptで指定した関数)の中身を確認する。
② その中に、delay()Serial.print()のような、時間のかかる処理が入っていないか確認する。
③ 入っていれば削除し、フラグ(volatile bool型の変数)を立てるだけの処理に変更する。実際の重い処理は、loop()の中で、そのフラグを見て実行するように書き換える。

97delay()を使うと、他の処理が止まって見える
① コード内のdelay()を、すべて洗い出す。
② 複数の処理を同時に進めたい場合、millis()を使った書き方に変更する。
③ 具体的には、「前回実行した時刻」を変数で覚えておき、if (millis() - 前回時刻 >= 待ちたい時間)という条件で、処理を実行する形に書き換えます。「Arduino millis 使い方」で検索すると、具体的なサンプルコードが見つかります。

98EEPROMへの書き込みが、だんだん効かなくなる
① コード内で、EEPROMへの書き込みが、どれくらいの頻度で行われているか確認する。
loop()の中で毎回書き込むような設計になっていれば、値が変化したときだけ書き込むよう、条件を追加する。
③ すでに寿命に達している可能性がある場合、別のEEPROM番地に書き込み先をずらす(ウェアレベリング)という対策もありますが、初心者にはハードルが高いため、まずは書き込み頻度を減らすことを優先しましょう。

99プログラムが、思った順番で動いていない気がする
① 疑わしい処理の直前に、Serial.println("ここまで来た1");のような、目印になる行を追加する。
② 疑わしい箇所すべてに、番号を変えながら同様の行を追加する。
③ シリアルモニタを開いて実行し、表示される番号の順番を確認する。想定と違う順番であれば、その付近のif文や関数呼び出しの構造を見直す。

100ここまで読んでも、原因が分からない
① 新しい空のコードを1つ作る。
② 今の問題に関係する部分だけを、最小限、1つずつ移植する(例:LEDの点滅だけを試す)。
③ 動けば、次の要素(センサーの読み取りなど)を1つ追加する。
④ 動かなくなった時点の、直前に追加した要素が、原因である可能性が非常に高いです。この「引き算」または「積み上げ」の方法が、複雑なトラブルにもっとも効果的です。

Chapter 09 / Last Resort

09それでも解決しないときは

!

「最小構成」に戻ってみる

複雑な回路やコードほど、原因の特定が難しくなります。一度、LED1個を光らせるだけの、もっともシンプルな状態に戻してみましょう。そこから1つずつ、部品やコードを足していくことで、どの段階で問題が起きたかが、はっきり見えてきます。

編集部想定シナリオ

複数のセンサーを同時に使う、大きな作品に挑戦していたTさんがいた。ある日を境に、まったく動かなくなってしまった。コードのどこが悪いのか、まったく見当がつかなかった。そこで、思い切って、センサーを1つずつ外していくことにした。3つ目のセンサーを外したとき、突然動き出した。原因は、そのセンサーの配線ミスだった。複雑なトラブルほど、「引き算」で確かめる方法が、有効なことがあります。

エラーメッセージの、赤い文字をそのまま検索することも、有効な手段です。世界中の人が、同じエラーに遭遇している可能性が高いからです。焦らず、1つずつ確認していきましょう。

関連記事・参考資料

基礎を学べる記事

  1. YOFUKASI LAB「Arduinoのコンパイルエラー一覧」2026年, https://yofukasi-lab-wp.com/2026/07/30/error/
  2. YOFUKASI LAB「Arduinoのavrdudeアップロードエラーの原因と対処法」2026年, https://yofukasi-lab-wp.com/2026/08/19/arduino-avrdude-upload-error/
  3. YOFUKASI LAB「Arduinoが「ポートが見つからない」時の原因と解決策まとめ」2026年, https://yofukasi-lab-wp.com/2026/08/23/arduino-port-not-found/

応用・関連記事

  1. YOFUKASI LAB「Arduinoのシリアルモニタが文字化けする原因と直し方」2026年, https://yofukasi-lab-wp.com/2026/08/19/arduinoのシリアルモニタが文字化けする原因と直し方/
  2. YOFUKASI LAB「Arduinoで使えるセンサー30選」2026年, https://yofukasi-lab-wp.com/2026/09/11/arduino-30-sensors-guide/

参考資料(外部・一次情報)

  1. Arduino公式サイト「Troubleshooting」, https://support.arduino.cc/hc/en-us
  2. Arduino公式サイト「Language Reference」, https://www.arduino.cc/reference/en/

※本記事は、個人の学習・電子工作用途を対象にしています。掲載した対処法で解決しない場合や、発熱・異臭など危険を感じる場合は、直ちに電源を切り、専門家にご相談ください。


関連記事

特集記事

コメント

この記事へのコメントはありません。

TOP
CLOSE