Arduinoのエラー・トラブル解決大全|アップロードできない時の対処法
Arduinoを使っていると、必ずと言っていいほど、何かのエラーやトラブルにぶつかります。本記事は、そんなときの「駆け込み寺」となるよう作りました。アップロードできない、コンパイルエラーが出る、配線してもLEDが光らない、センサーの値がおかしい。こうした場面ごとに、できる限り幅広くQ&A形式で集めました。専門用語は、できるだけかみくだいて説明しています。気になる項目を、目次から探してみてください。
🔧 この記事の使い方
最初から順番に読む必要はありません。今、困っていることに近い項目を探してください。
- アップロードできないときは → 1章へ
- 赤い文字のエラーが出るときは → 2章へ
- LEDやスイッチが思い通りに動かないときは → 3章へ
- センサーやモジュールが反応しないときは → 4章へ
- シリアルモニタがおかしいときは → 5章へ
- 動作が不安定・リセットするときは → 6章へ
- ライブラリやIDE自体の不調のときは → 7章へ
- その他の応用的なトラブルは → 8章へ
01アップロード・書き込みエラー編

「書き込みボタンを押しても失敗する」。もっとも多くの人がつまずく壁です。代表的な原因から、詳しく見ていきましょう。
とくに多い3つの原因(詳しく解説)
1ポートが選ばれていない・見えない
「ツール」メニューの「シリアルポート」を開いてください。何も表示されない、または灰色で選べない状態になっていませんか。これは、パソコンがArduinoを認識できていないサインです。USBケーブルを挿し直す、別のUSBポートに挿す、この2つをまず試しましょう。
2ボードの種類が合っていない
「ツール」メニューの「ボード」を開いてください。お使いのArduinoの機種(Unoなど)が選ばれているか、確認しましょう。違う機種が選ばれていると、書き込みは失敗します。
3ケーブルが「充電専用」だった
見た目はそっくりでも、データを送れないUSBケーブルが存在します。スマホの充電専用ケーブルに、よくあるパターンです。別のケーブルに変えるだけで、あっさり解決することが多いです。
① 「ツール」→「ボード」を開き、実機と同じ機種名(Uno等)になっているか確認する。
② 「ツール」→「シリアルポート」を開き、正しいポート番号(Windowsなら「COM+数字」)が選ばれているか確認する。表示が複数ある場合は、Arduinoを一度抜いてから一覧を見て、消えた番号がArduinoのポートです。
③ ①②を直しても失敗するなら、書き込みボタンを押した直後(「アップロード中…」と出た瞬間)に、Arduino本体のリセットボタンを1回押す。タイミングが合うと成功することがあります。
④ それでも直らない場合は、Q13(USBハブ)とQ8(互換ボードのドライバ)も確認してください。
② ケーブルを変えても出ない場合、Windowsなら「デバイスマネージャー」を開き、「ほかのデバイス」や「不明なデバイス」に黄色い!マークの項目がないか確認する。あれば、それがArduinoです。右クリックして「ドライバーの更新」を行う。
③ 互換ボード(CH340・CP2102チップ搭載)の場合は、Q8の手順でドライバを個別にインストールする。
④ 別のパソコンがあれば、そちらで認識されるか試す。認識されれば、パソコン側の設定が原因と切り分けられます。
② それでも直らなければ、Arduino IDEを完全に終了し、再度開き直す(設定が内部でおかしくなっていることがあります)。
③ ボードの種類とポートの選択を、Q1と同様に再確認する。
④ ATmega328pを使うUno系で頻発する場合、ブートローダーの破損(Q10)も候補に入れる。
② 5秒ほど待ってから、再度挿す。
③ 「ツール」→「シリアルポート」を開き、新しく表示されたポート番号を選び直す(以前の番号が消えていることが多いです)。
④ この症状は、スリープからの復帰後にも起こりやすいので、パソコンを再起動すると改善する場合もあります。
② 変化がなければ、IDE右下の黒い出力欄に、赤い文字が出ていないか確認する。出ていれば、その内容を本記事内で検索する。
③ 何も表示が変わらないなら、IDEを強制終了し、Arduinoを挿し直してから、開き直して再度アップロードする。
④ 3回試しても同じ場所で止まるなら、USBケーブルを交換する。
② 検索欄に、購入時の製品名またはメーカー名(例:ESP32なら「esp32」)を入力する。
③ 該当する項目の「インストール」ボタンを押す。数分かかることがあります。
④ インストール完了後、IDEを再起動し、「ツール」→「ボード」を開き直すと、一覧に追加されています。
② ケーブルをつなぎ直し、「ツール」→「シリアルポート」でポートを選び直す。
③ 書き込みボタンを押し、最初からやり直す(前回の書き込みは失敗した状態で残っているため、上書きが必要です)。
④ 成功しない場合は、Q3の手順で応答を確認する。
② 「(確認したチップ名) ドライバ Windows」または「Mac」で検索し、チップメーカーの公式サイトからダウンロードする。
③ ダウンロードしたインストーラーを実行し、指示に従って進める。
④ インストール後、パソコンを再起動する(再起動しないと反映されないことが多いです)。
⑤ 再起動後、Arduinoを挿し、「ツール」→「シリアルポート」に新しい項目が出るか確認する。
② その赤い文字の中から、「error:」という単語を探す。その直後の文章が、具体的な原因です。
③ 文章の中に、コードのファイル名と行番号(例:「Sketch.ino:12」)があれば、その行を、IDEのコード画面で確認する。
④ 2章(コンパイルエラー編)で、似た内容を探して対応する。
② 別売りの「USBaspライター」や、もう1台のArduinoを使って、ブートローダーを書き込み直す方法があります(「Arduino ブートローダー 書き込み」で検索し、公式ドキュメントの手順に従ってください)。
③ 手順が難しく感じる場合は、無理に自己解決せず、新しいArduino本体に交換することも、現実的な選択肢です。
② あれば、まず標準値(多くは115200)を選ぶ。
③ 失敗する場合、1段階遅い値(57600など)に変更して、再度試す。
④ 製品の説明書やパッケージに、推奨速度の記載がないかも確認する。
② 閉じたことを確認してから、あらためて書き込みボタンを押す。
③ 書き込み完了後、シリアルモニタは再度開いて構いません。
② パソコン本体に、直接空いているUSBポートがあれば、そこに挿し直す。
③ それで成功すれば、原因はハブの給電・通信能力不足です。以後は、本体に直接挿すか、給電能力の高い「セルフパワー式」のUSBハブに変更してください。
② 「Software」または「Download」のページから、お使いのOS(Windows/Mac/Linux)に合ったインストーラーをダウンロードする。
③ 既存のIDEは削除せずに、そのままインストールして問題ありません。
④ インストール後、新しいIDEを起動し、同じコードを開いて再度書き込みを試す。
② 「プライバシーとセキュリティ」を選ぶ。
③ 下にスクロールし、Arduino IDEの許可を求める通知がないか確認する。あれば、「許可」をクリックする。
④ 許可の項目が見当たらない場合は、一度Arduino IDEを終了し、再度起動し直すと、許可を求めるポップアップが出ることがあります。
② 次のコマンドを、自分のユーザー名に置き換えて実行する。
sudo usermod -a -G dialout ユーザー名③ 実行後、一度ログアウトし、再度ログインする(再起動でも構いません。反映には再ログインが必須です)。
④ 再ログイン後、ターミナルで
groupsと入力し、「dialout」が表示されているか確認する。表示されていれば、設定は成功しています。02コンパイルエラー編

書き込みボタンを押す前の段階で、赤い文字が出る。これは、コードの文法に、何か間違いがあるサインです。1文字の違いで起こることも多いので、落ち着いて見比べましょう。
もっとも多い原因(詳しく解説)
1セミコロン(;)の付け忘れ
Arduinoのコードでは、1つの命令の終わりに、必ずセミコロンを付けます。エラーメッセージに表示された行の、1つ上の行を見てみましょう。セミコロンが抜けていないか、確認してください。
2波かっこ({ })の数が合っていない
開いたかっこの数と、閉じたかっこの数は、必ず同じになります。コードエディタでは、対になるかっこが色で示されることもあります。1つずつ、数を数えてみましょう。
3全角文字が紛れ込んでいる
日本語入力のまま、記号を打ってしまうことがあります。「;」のような全角の記号は、Arduinoには理解できません。半角と全角を、よく見比べてみましょう。
② コード画面で、その単語が書かれている行を探す。
③ その行の、1つ上の行の末尾を見る(エラーは、セミコロンが見つからず次の行まで来て初めて発生するため、原因は1行上にあることが多いです)。
④ 末尾に「;」がなければ追加し、保存してから再度コンパイルする。
② setup()、loop()、if文、for文など、かっこを使う場所を、上から順にすべて確認する。
③ 多くのエディタでは、かっこにカーソルを合わせると、対になるかっこが光ります。怪しい場所で試してみる。
④ 見つからない場合は、コードを一時的に半分にコピーし、前半・後半それぞれでコンパイルしてみると、問題のある側を絞り込めます。
② 同じ綴りで、大文字・小文字も含めて完全に一致しているか確認する。
③ その変数を、使う行より前の行で、
int ○○;のように宣言しているか確認する(Arduinoは、上から順にコードを読むため、宣言前に使うとエラーになります)。④ 波かっこの中で宣言していないか確認する(Q29のスコープの問題)。
② コードの一番上に、
#include <○○.h>という行があるか確認する。なければ追加する。③ ライブラリ自体がインストールされていない可能性もあります。「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」で、名前を検索してインストールする。
② 代入しようとしている値が、その型に合っているか確認する。例えば
int a = "abc";のように、数値の変数に文字列を入れようとしていないか。③ 数値には
intかfloat、文字の並びにはString(ダブルクォート ” “で囲む)、1文字だけならchar(シングルクォート ‘ ‘で囲む)を使う、という対応を確認する。int 関数名() {のように、void以外の型で始まっているか確認する。② その関数の中の、すべての処理の流れの最後に、
return 値;があるか確認する。③ if文で分岐している場合、それぞれの分岐すべてに、returnがあるか確認する(片方の分岐にだけreturnがあると、このエラーが出ます)。
int data[10];)を確認し、かっこの中の数字(要素数)を控える。② 使える番号は、0から「要素数-1」までです。上の例なら、0〜9までしか使えません。
③ for文で配列を回す場合、
i < 10のように、要素数と同じ数を使っているか確認する(i <= 10だと1つ超えてしまいます)。② その行を、一度すべて削除する。
③ 半角英数モードに切り替えてから、同じ内容を打ち直す。
④ 特に、コピー&ペーストした行は、全角スペースが紛れ込みやすいので、疑わしい行はすべて打ち直すことをおすすめします。
/*を検索する。② それぞれに対応する
*/が、ちゃんとあるか、1つずつ確認する。③ 見つけにくい場合は、複数行コメントの代わりに、行ごとに
//を付ける方法に変更すると、閉じ忘れ自体がなくなります。② 一度、その引用符を削除する。
③ IMEを半角英数モードにしてから、キーボードの「Shift+2」で、半角のダブルクォートを打ち直す。
② ブラウザで「Arduino Reference ○○」と検索し、公式ページのつづりと、1文字ずつ見比べる。
③ 特に間違えやすい例:
HIGH/LOW(すべて大文字)、Serial(Sだけ大文字)、setup/loop(すべて小文字)。② コード内でその名前を検索し、
int ○○のような宣言が、何箇所にあるか数える。③ 2箇所以上あれば、1つを残して、残りを削除するか、別の名前に変更する。
{ }の中で作った変数は、その中でしか使えません。② 複数の場所(setup()とloop()の両方など)で使いたい変数は、
void setup()より上の行(グローバル変数の位置)で宣言し直す。③ 宣言する場所を移動したら、元の場所にあった同名の宣言は、削除する。
#defineを検索する。② 行の末尾にセミコロン「;」が付いていないか確認する。
③ 付いていたら削除する。
#defineは「文字の置き換え」を行う特別な命令で、セミコロンも一緒に置き換えられてしまい、意図しないエラーの原因になります。#includeの行を、すべて確認する。② 同じファイル名が、2回以上書かれていないか確認する。
③ 重複していたら、1行だけ残して削除する。
④ 自作のヘッダファイルを作る場合は、ファイルの先頭に
#pragma onceを1行加えておくと、この問題を未然に防げます。② まずは、書き込みボタンを押してみる。動作に問題がなければ、当面は無視して構いません。
③ ただし、変数の型変換に関するWarningは、将来的な誤動作の原因になることがあるため、余裕があれば、内容を読んで対応することをおすすめします。
03配線・回路のトラブル編

コードは正しいのに、部品が思い通りに動かない。こんなときは、配線を疑いましょう。目で見ただけでは気づきにくいミスも多くあります。
② 長い足が、抵抗を経由してArduinoのピン側に、短い足がGND側につながっているか確認する。
③ 向きが正しくても光らない場合は、LED自体の故障を疑い、別のLEDに交換して試す。
④ コード側で、そのピンを
OUTPUTに設定し、HIGHにしているか確認する。② 抵抗が入っていなければ、すぐに電源を切り、抵抗を追加してから再度電源を入れる。
③ 一度切れてしまったLEDは、多くの場合、修理できません。新しいLEDに交換する。
④ 今後のために、Arduinoの5V出力と、LEDの標準電圧(約2V)の差を、抵抗の計算式(オームの法則)で確認する習慣をつけると安心です。
delay(20);のような短い待ち時間を1行追加する。② それでも不安定なら、待ち時間を50ミリ秒程度まで増やしてみる。
③ 根本的に解決したい場合は、「Bounce2」という専用ライブラリをインストールし、公式のサンプルコードを参考に書き換える。
pinMode()の行を確認し、INPUT_PULLUPを使っているか確認する。使っていなければ、これに書き換える。②
INPUT_PULLUPを使う場合、配線はボタンの片方をピンへ、もう片方をGNDへ直接つなぐだけで構いません(プルアップ抵抗は内蔵されています)。③ 抵抗を使った配線をしている場合は、抵抗の値(10kΩ程度が一般的)と、配線の向きを、回路図と見比べて確認する。
② 部品の足が、この「つながっている5つの穴」の中の、別々の列に入っていないか確認する。
③ テスターをお持ちの場合、導通チェック機能で、実際につながっているかを確認すると確実です。
② 交換して症状が直れば、断線が原因だったと確定できます。
③ テスターがあれば、線の両端に当てて、導通チェック機能で確認すると、交換せずに特定できます。
② それぞれのGNDが、最終的にArduinoのGNDピン、または共通のGNDラインに、すべてつながっているか確認する。
③ 1つでもGNDが浮いている(どこにもつながっていない)部品があれば、そこを配線し直す。
pinMode()やdigitalWrite()で使っているピン番号を、すべて書き出す。② Arduino本体のピンに書かれている番号と、実際に部品を挿している場所を、1つずつ照らし合わせる。
③ アナログピン(A0など)とデジタルピン(0〜13など)を混同していないかも、あわせて確認する。
② それぞれのLEDに、電流を制限するトランジスタを追加するか、外部電源からLEDに電力を供給する回路に変更する。
③ 応急処置として、抵抗の値を大きくすると、暗くはなりますが、電流の負荷は下げられます。
② 部品の足と基板の穴を、指や治具でしっかり固定する。
③ こて先を、部品の足と基板の両方に2〜3秒当てて温めてから、はんだを流し込む(はんだ自体をこてで溶かすのではなく、部品と基板を温めてから溶かすのがコツです)。
④ 冷えるまで、部品を動かさずに待つ。
② 別の同じ部品に交換して、動作するか確認する。
③ 今後の予防として、作業前に、水道の蛇口など、身近な金属に一度触れて、体の静電気を逃がす習慣をつけましょう。特に乾燥する時期は、注意が必要です。
② 電源を切ったあと、配線図と実際の配線を見比べ、電源(5Vや3.3V)とGNDが、直接つながっていないか(ショートしていないか)確認する。
③ ショート箇所を見つけて修正したら、部品自体が壊れていないか、別の部品に交換して動作確認する。
② IC部品などを、この溝をまたいで挿していないか確認する(ICは、またいで挿すのが正しい使い方ですが、それ以外の部品は片側にまとめるのが基本です)。
③ 部品の足が、溝の左右で別々の列に入り、意図せず未接続になっていないか確認する。
② 足の先端が曲がっていないか確認し、曲がっていればラジオペンチなどでまっすぐに直す。
③ 穴の位置を目視で確認しながら、垂直に、奥まで、ゆっくりと押し込む。
② 足の長さも確認する。長い方がプラスです。
③ 回路図の指示と、実際の向きが一致しているか確認し、逆であれば向きを直す。
④ 一度でも逆挿しで通電させた場合、内部が劣化している可能性があるため、新しい部品に交換することをおすすめします。
② 新しい部品を挿す前に、データシート(部品名で検索すると見つかります)の、ピン配置図を確認する。
③ 部品に印刷された、小さな印(丸い凹み、色の帯、面取りなど)と、データシートの図を、指差し確認してから挿す。
04センサー・パーツ別トラブル編

特定のセンサーやモジュールに関する、個別のトラブルを集めました。使っている部品に近い項目を、探してみてください。
pinMode()を確認し、TrigピンがOUTPUT、EchoピンがINPUTに設定されているか確認する。② 配線が、コードのピン番号と一致しているか確認する(TrigとEchoを逆に挿す間違いが非常に多いです)。
③ センサーの正面20cm以内に、平らな障害物(壁や手のひらなど)を置いて、値が変化するか試す。反応すれば正常です。
④ 電源を、Arduinoの5Vからきちんと取れているか確認する(3.3Vでは正しく動かない製品が多いです)。
② 信号を取り出す配線が、アナログピン(A0〜A5のいずれか)につながっているか確認する。デジタルピンでは、正しい値を読み取れません。
③ コードで、
analogRead(A0)のように、正しいピン番号を指定しているか確認する。④ センサーに直接、懐中電灯やスマホのライトを当てて、シリアルモニタの値が変化するか確認する。
② 「スケッチ」→「ライブラリを管理」で、「DHT sensor library」を検索し、インストールされているか確認する。関連する「Adafruit Unified Sensor」も必要です。
③ コード内で、DHT11とDHT22、どちらの型番を使っているか、正しく指定しているか確認する(型番を間違えると、正しい値になりません)。
④ センサーの読み取り間隔が短すぎないか確認する。DHT系は、2秒に1回程度が上限です。
② 外部電源(サーボ用の電池ボックスなど)を用意し、サーボの電源線とGNDに接続する。
③ 外部電源のGNDと、ArduinoのGNDを、必ず接続する(これを忘れると、信号がうまく伝わりません)。
④ それでも震える場合は、コード内の角度指定が、短い間隔で頻繁に変わりすぎていないか確認する。
② ドライバとArduino間の、制御信号線(IN1、IN2など)が、コードのピン指定と一致しているか確認する。
③ モーターとドライバの出力端子(OUT1、OUT2)の配線が、正しく接続されているか確認する。
④ ドライバのEnable(イネーブル)ピンがある場合、HIGHにしないと動作しない製品があるため、確認する。
② 「I2C Scanner」で検索すると出てくる、確認用の短いコードをArduinoに書き込む。
③ シリアルモニタを開き、表示されたアドレス(0x27や0x3Cなど)を確認する。何も表示されなければ、配線かはんだ付けを疑う。
④ 表示されたアドレスが、使いたいライブラリのコード内で指定されているアドレスと一致しているか確認し、違えば書き換える。
② CS(チップセレクト)ピンは、コードで自由に指定できます。配線した実際のピン番号と、コード内の指定が一致しているか確認する。
③ 複数のSPIデバイスを同時に使う場合、MOSI・MISO・SCKは共通、CSだけがデバイスごとに別のピンになっているか確認する。
② 端子(金属の接点)が印刷された面が、正しい向きを向いているか、製品の説明書で確認する。
③ コネクタのロック(黒い小さなパーツ)を持ち上げてから挿入し、奥まで入れてから、ロックを下げて固定する。
④ 固定が不十分だと、浮いた状態で認識されないことが多いため、軽く引っ張って抜けないか確認する。
② コード内の
SD.begin(CSピン番号)の数字が、実際に配線したCSピンと一致しているか確認する。③ SPI接続の配線(Q55参照)も、あわせて確認する。
④ 32GBを超える大容量のSDカードでは、対応していないモジュールもあるため、8〜16GB程度の小容量カードで試してみる。
② 「IRremote」ライブラリがインストールされているか確認する。
③ リモコンとモジュールの距離を、30cm以内に近づけて試す。
④ リモコンの電池残量も、意外と見落としがちな原因なので確認する。
② コードのsetup()内で、センサーの初期化関数(begin()など)が呼ばれているか、戻り値がエラーを示していないか確認する。
③ センサーを、水平な机の上に静止させた状態で、値が「重力加速度1G相当」に近い数値になるか確認する。大きくずれる場合は、キャリブレーション(校正)が必要な製品もあります。
② 抵抗値を、今より小さい値(例えば10kΩ→1kΩ)に変更し、反応が良くなるか試す。
③ 逆に、値が振り切れて変化しない場合は、抵抗値を大きくしてみる。
④ 適切な抵抗値は、センサーのデータシートに、目安が書かれていることが多いので確認する。
② カードを、リーダーの表面に近づけすぎず、1〜3cm程度の距離で試す(密着しすぎると、逆に読み取れないことがあります)。
③ 「MFRC522」ライブラリのサンプルコード(DumpInfoなど)を、そのまま書き込んで、正常に動くか確認する。動けば、自作コード側に問題があると分かります。
② スマホ側のBluetooth設定を開き、対象のデバイス名が一覧に出るか確認する。
③ 出てこない場合は、モジュールへの電源供給(多くは3.3V〜5V)が、安定しているか確認する。
④ 初期パスコード(多くの場合「0000」や「1234」)で、接続を試す。
② お使いのWi-Fiルーターが、2.4GHz帯を有効にしているか確認する(5GHz専用の設定になっていないか)。
③ シリアルモニタに、接続状況を表示するコードを入れ、どの段階で止まっているか確認する。
④ ルーターとモジュールの距離を近づけて、電波状況による影響がないか確認する。
② アクティブブザーの場合、
digitalWrite(ピン, HIGH)だけで音が鳴ります。③ パッシブブザーの場合、音の高さを指定する
tone(ピン, 周波数)という命令が必要です。④ 使っている命令が、ブザーの種類と合っているか確認し、違えば書き換える。
05シリアル通信のトラブル編

シリアルモニタは、Arduinoの状態を知るための、大切な窓口です。この窓口に不調があると、他のトラブルの原因も見えにくくなります。
Serial.begin(数字)の、数字(ボーレート)を確認する。② Arduino IDEのシリアルモニタを開き、画面右下のプルダウンメニューを確認する。
③ ①と②の数字が違えば、右下のプルダウンを、コードと同じ数字に変更する。
④ 変更しても直らない場合は、一度シリアルモニタを閉じてから、開き直す。
void setup()の中に、Serial.begin(9600);のような行があるか確認する。なければ追加する。② 追加した場合は、コードを保存し、再度Arduinoに書き込む。
③ シリアルモニタの右下のボーレートが、①の数字と一致しているか確認する。
④
loop()の中で、実際にSerial.print()やSerial.println()が呼ばれているかも確認する。② 画面上部の検索機能(Ctrl+F)で、「Serial.begin」と検索する。
③ 見つかった行の、かっこの中に書かれている数字が、ボーレートです。その数字を、シリアルモニタの設定にも反映させる。
② 「改行なし」になっていれば、「新規改行」または「CRおよびLF」に変更する。
③ コード側でも、
Serial.print()ではなく、行末で改行されるSerial.println()を使っているか確認する。②
delay()の数値を、今より大きくしてみる(例:50ミリ秒→200ミリ秒)。③ 改善すれば、送信頻度が高すぎたことが原因と分かります。今後は、必要な頻度まで調整して使う。
Serial.begin()の行が、Serial.print()より前にあるか確認する。② 多くの場合、
Serial.begin()はsetup()の中、Serial.print()はloop()の中に書きます。この順番(構造)になっているか確認する。③ 順番が入れ替わっていれば、正しい位置に書き直す。
Serial.print("温度: "); Serial.println(temp);② 複数の値を1行に並べたい場合は、値の間に
Serial.print("\t");(タブ文字)を挟むと、列がそろって見やすくなります。③ 数値の桁数を指定したい場合は、
Serial.print(値, 2);のように、第2引数で小数点以下の桁数を指定できます。② 気になる場合は、コード側で対処できます。
setup()の中、Serial.begin()の直後にdelay(1000);を1行加えると、再起動が落ち着いてから、動作を開始するようになります。② 今後は、データ通信ができると確認済みのケーブルを、専用に1本、電子工作用として保管しておくことをおすすめします。
② 使い終わったら、必ずそのソフトを閉じるか、ポートを解放する処理(
ser.close()など)を実行してから、別のソフトを起動する。③ どうしても同時に使いたい場合は、片方のソフトで受信したデータを、ファイルに書き出し、もう片方がそのファイルを読む、という間接的な連携方法もあります。
06電源のトラブル編

動作が不安定、突然リセットする。こうした症状の多くは、電源に原因があります。電子工作のトラブルの中でも、見落とされがちな部分です。
② モーターやサーボが含まれる場合、まずはそれらを配線から一時的に外してみる。
③ 外した状態で安定するなら、電源不足が原因です。Q76の手順で、外部電源を追加する。
④ 外しても不安定なら、コード側の無限ループや、メモリ不足(Q92参照)も疑う。
② モーター専用の電源(電池ボックスや、ACアダプター)を用意する。
③ モーターの+-を、この外部電源に接続する。
④ 外部電源のGNDと、ArduinoのGNDを、必ずジャンパー線でつなぐ(これを忘れると、Arduinoからの制御信号が、モーター側に正しく伝わりません)。
② USBケーブルを外し、外部電源のみで動作するか確認する。
③ 逆に、外部電源を外し、USBのみで動作するか確認する。
④ どちらか一方で安定するなら、基本的にはその方式のみを使うようにする。
② 該当する部品の電源ラインに、100〜1000µF程度の電解コンデンサを、プラスとマイナスの向きを守って追加する。
③ それでも改善しない場合は、その部品専用の、より大容量な電源に交換する。
② 該当の部品が、まだ動作するか、電源を正しくつなぎ直して確認する。
③ 動作しない場合、その部品は故障した可能性が高いです。新しい部品に交換する。
④ 今後のために、部品の説明書やデータシートで、対応電圧(Operating VoltageやVCC)を、購入時に必ず確認する習慣をつける。
② 焦げたような匂いや、発熱がないか確認する。あれば、その部品には触れず、しばらく冷ますまで待つ。
③ 電源を正しい向きにつなぎ直し、部品が動作するか確認する。
④ 動作しなければ、部品を交換する。今後は、電源ラインの赤(+)と黒(-)の色を、配線前に必ず目視確認する。
② テスターがあれば、使用中の電池の電圧を測定する。公称電圧より大きく下がっていれば、交換のサインです。
③ 頻繁に電池切れが起きる場合は、電池の本数を増やすか、より容量の大きい電池に変更することも検討する。
② コンデンサには極性があるため、長い足をプラス側に、必ず正しい向きで接続する。
③ 追加後、症状が改善するか確認する。改善しない場合は、電源自体の容量不足(Q76、Q78)を、あらためて疑う。
② キーボードやモニターを経由したUSBポートは、電力供給が弱いことが多いため、避ける。
③ ノートパソコンの場合、電源アダプターを接続した状態(バッテリー駆動でない状態)で試すと、改善することがあります。
② 長いケーブルを使い続ける必要がある場合は、ケーブルの芯線が太い(電気抵抗の低い)製品に変更する。
③ 電源側とArduino側、両方の近くに、電解コンデンサ(Q82参照)を追加すると、電圧の変動を緩和できます。
07ライブラリ・環境のトラブル編

コードそのものより、周辺の環境が原因のトラブルです。ソフトの設定を、一度見直してみましょう。
② 検索欄に、エラー文に出てきた○○の部分(拡張子.hは除く)を入力する。
③ 一覧から、該当するライブラリを見つけ、「インストール」ボタンを押す。
④ インストール完了後、IDEを一度再起動してから、再度コンパイルする。
② 「最新版に更新」ボタンがあれば、押して更新する。
③ 更新して逆に動かなくなった場合は、同じ画面のプルダウンから、以前のバージョン番号を選び直すこともできます。
④ 参考にしている本や記事があれば、そこに書かれたバージョン番号と、実際にインストールされているバージョンを、あわせて確認する。
② 参考にしている記事や本に、作者名の記載がないか確認する。
③ 記載がなければ、ダウンロード数がもっとも多いものを選ぶのが、無難な選択です。
④ 一度インストールして動かなければ、アンインストールし、別の候補を試す。
② 公式サイトなどに書かれた、ボードマネージャーURL(httpsから始まる長いアドレス)をコピーする。
③ Arduino IDEの「ファイル」→「環境設定」を開く。
④ 「追加のボードマネージャーのURL」欄に、コピーしたURLを貼り付け、OKを押す。
⑤ 「ツール」→「ボード」→「ボードマネージャー」を開き、名前で検索してインストールする。
② 再起動後、もう一度IDEを起動してみる。
③ それでも起動しない場合は、一度IDEをアンインストールする。
④ 公式サイトから、最新版のインストーラーを、あらためてダウンロードしてインストールする。
② 変化がなければ、タスクマネージャー(Windows)またはアクティビティモニタ(Mac)から、Arduino IDEを強制終了する。
③ 保存していない変更は失われるため、今後はこまめに保存する習慣をつける。
④ 再度IDEを開き、同じ箇所で繰り返しフリーズする場合は、その付近のコードを疑う。
② コード内で、使っていない変数や、コメントアウトされた大きなコードの塊があれば、削除する。
③ 大きな文字列データ(メッセージなど)があれば、
const charやPROGMEMを使って、プログラムメモリ側に配置する方法もあります(検索して調べてみてください)。④ それでも収まらない場合は、より大容量なArduino(Megaなど)への変更も検討する。
String型の変数を、loop()の中で頻繁に作り変えていないか確認する(これは、実行中のメモリを消費し続ける、よくある原因です)。② 可能であれば、
String型を、char配列に置き換える。③ 応急的な確認方法として、
setup()にSerial.println(freeMemory());のような、空きメモリを表示するコード(要ライブラリ)を入れ、実行中にメモリが減り続けていないか観察する。② 「名前を付けて保存」を選び、文字コードの指定欄で「UTF-8」を選択して、上書き保存する。
③ Arduino IDEで、あらためてファイルを開き直し、文字化けが直っているか確認する。
② Arduino公式サイトの「過去のリリース(Previous Releases)」ページを探す。
③ 以前使えていたバージョン番号を選び、ダウンロードしてインストールする。
④ 動作を確認できたら、しばらくはそのバージョンを使い続け、次の安定版が出てから、あらためて更新を検討する。
08その他・応用のトラブル編
少し発展的な内容に取り組み始めると出会う、応用的なトラブルです。
② シリアル通信(TX/RX)の場合、片方のTXを、もう片方のRXへ接続する「たすき掛け」になっているか確認する(TX同士、RX同士をつないでも通信できません)。
③ 両方のコードで、ボーレート(
Serial.begin()の数字)が一致しているか確認する。④ ハードウェアシリアル(0番・1番ピン)を使う場合、書き込み時にこの2本を挿したままだと失敗するため、書き込み時だけ一時的に外す。
attachInterruptで指定した関数)の中身を確認する。② その中に、
delay()やSerial.print()のような、時間のかかる処理が入っていないか確認する。③ 入っていれば削除し、フラグ(
volatile bool型の変数)を立てるだけの処理に変更する。実際の重い処理は、loop()の中で、そのフラグを見て実行するように書き換える。delay()を、すべて洗い出す。② 複数の処理を同時に進めたい場合、
millis()を使った書き方に変更する。③ 具体的には、「前回実行した時刻」を変数で覚えておき、
if (millis() - 前回時刻 >= 待ちたい時間)という条件で、処理を実行する形に書き換えます。「Arduino millis 使い方」で検索すると、具体的なサンプルコードが見つかります。②
loop()の中で毎回書き込むような設計になっていれば、値が変化したときだけ書き込むよう、条件を追加する。③ すでに寿命に達している可能性がある場合、別のEEPROM番地に書き込み先をずらす(ウェアレベリング)という対策もありますが、初心者にはハードルが高いため、まずは書き込み頻度を減らすことを優先しましょう。
Serial.println("ここまで来た1");のような、目印になる行を追加する。② 疑わしい箇所すべてに、番号を変えながら同様の行を追加する。
③ シリアルモニタを開いて実行し、表示される番号の順番を確認する。想定と違う順番であれば、その付近のif文や関数呼び出しの構造を見直す。
② 今の問題に関係する部分だけを、最小限、1つずつ移植する(例:LEDの点滅だけを試す)。
③ 動けば、次の要素(センサーの読み取りなど)を1つ追加する。
④ 動かなくなった時点の、直前に追加した要素が、原因である可能性が非常に高いです。この「引き算」または「積み上げ」の方法が、複雑なトラブルにもっとも効果的です。
09それでも解決しないときは
「最小構成」に戻ってみる
複雑な回路やコードほど、原因の特定が難しくなります。一度、LED1個を光らせるだけの、もっともシンプルな状態に戻してみましょう。そこから1つずつ、部品やコードを足していくことで、どの段階で問題が起きたかが、はっきり見えてきます。
複数のセンサーを同時に使う、大きな作品に挑戦していたTさんがいた。ある日を境に、まったく動かなくなってしまった。コードのどこが悪いのか、まったく見当がつかなかった。そこで、思い切って、センサーを1つずつ外していくことにした。3つ目のセンサーを外したとき、突然動き出した。原因は、そのセンサーの配線ミスだった。複雑なトラブルほど、「引き算」で確かめる方法が、有効なことがあります。
エラーメッセージの、赤い文字をそのまま検索することも、有効な手段です。世界中の人が、同じエラーに遭遇している可能性が高いからです。焦らず、1つずつ確認していきましょう。
関連記事・参考資料
基礎を学べる記事
- YOFUKASI LAB「Arduinoのコンパイルエラー一覧」2026年, https://yofukasi-lab-wp.com/2026/07/30/error/
- YOFUKASI LAB「Arduinoのavrdudeアップロードエラーの原因と対処法」2026年, https://yofukasi-lab-wp.com/2026/08/19/arduino-avrdude-upload-error/
- YOFUKASI LAB「Arduinoが「ポートが見つからない」時の原因と解決策まとめ」2026年, https://yofukasi-lab-wp.com/2026/08/23/arduino-port-not-found/
応用・関連記事
- YOFUKASI LAB「Arduinoのシリアルモニタが文字化けする原因と直し方」2026年, https://yofukasi-lab-wp.com/2026/08/19/arduinoのシリアルモニタが文字化けする原因と直し方/
- YOFUKASI LAB「Arduinoで使えるセンサー30選」2026年, https://yofukasi-lab-wp.com/2026/09/11/arduino-30-sensors-guide/
参考資料(外部・一次情報)
- Arduino公式サイト「Troubleshooting」, https://support.arduino.cc/hc/en-us
- Arduino公式サイト「Language Reference」, https://www.arduino.cc/reference/en/
※本記事は、個人の学習・電子工作用途を対象にしています。掲載した対処法で解決しない場合や、発熱・異臭など危険を感じる場合は、直ちに電源を切り、専門家にご相談ください。
コメント