この記事の結論
- Serial.begin()でボーレートを設定しないとシリアルモニタは使えない、Arduino側とモニタ側の数値は必ず揃える
- Serial.print()は改行なし、Serial.println()は改行ありで、1行に複数の値をまとめたいかどうかで使い分ける
- シリアルモニタは、LEDの点滅だけでは見えない「スケッチの中で今どんな値になっているか」を覗き見るための窓
- 記号の羅列のような文字化けが出たら、まずボーレートの数値が一致しているかを疑う
キットの通りに配線してLチカに成功したものの、次に「センサーの値を条件に応じてLEDを光らせる」という一歩進んだ工作をしようとしたとたん、つまずいてしまう人は少なくありません。
LEDが光る・光らないという結果は目で見えても、その裏でセンサーがどんな数値を読み取っているのか、if文がどちらの条件に入ったのかは、配線やLEDの点滅だけでは分かりません。
この「中身が見えない」状態のままコードを直そうとすると、あてずっぽうの修正になってしまい、かえって時間がかかります。
この記事では、Arduino IDEに標準搭載されている「シリアルモニタ」を使って、スケッチの中の値をパソコン画面に表示しながら動きを確認する方法を、基本のSerial.begin()から実践的な使い方まで順番に解説します。
シリアルモニタとは何か、何のために使うのか
シリアルモニタとは、Arduino IDEに標準で組み込まれている機能で、Arduinoボードとパソコンをつないだまま、ボードの中で処理されている文字や数値をパソコンの画面に表示できる仕組みです。
Lチカの回路にテスターを当てて電圧を測るのとは違い、シリアルモニタが覗いているのは電気の状態ではなく「スケッチというプログラムの中の値」です。
Arduino IDEの画面右上にある虫眼鏡のようなアイコン(シリアルモニタを開くボタン)をクリックすると、専用のウィンドウが開きます。

ボードの選び方やIDEのインストールがまだの人は、先にArduino IDEのインストール・初期設定・書き込み方法の記事を確認しておくと、この先の作業がスムーズです。
Serial.begin()、ボーレートを設定する
シリアルモニタを使うためには、スケッチのsetup()の中に必ず1行、Serial.begin(9600);のような命令を書いておく必要があります。
ボーレートとは何か
Serial.begin()のかっこの中に書く数値は「ボーレート」と呼ばれ、Arduinoとパソコンがどれくらいの速さでデータをやり取りするかを表す単位です。
単位はbps(1秒間に送れるビット数)で、数値が大きいほど通信が速くなります。
よく使う9600と115200の違い
初心者向けの解説記事やライブラリのサンプルコードでは、9600が使われていることが最も多く、迷ったらまずこの数値を選んでおけば大きな問題は起きません。
一方で、Arduino Uno R4のような比較的新しいボードや、大量のデータを高速に確認したい場面では、115200という数値もよく使われます。
数値そのものに絶対的な正解はなく、「同じボードなら同じ数値を使い続ける」というルールさえ守っていれば、9600でも115200でも動作に支障はありません。
ボーレート不一致で起きる文字化け
シリアルモニタを開いても「?」や「■」のような記号がランダムに流れ続けるだけで、意味のある文字が一切出てこないことがあります。
これはほぼ100%、スケッチのSerial.begin()に書いた数値と、シリアルモニタ画面の右下で選んでいるボーレートの数値が食い違っていることが原因です。
画面右下のプルダウンメニューを開き、スケッチに書いた数値(9600なら9600)と同じ表示になっているか確認してください。
この不一致は初心者だけでなく、複数のサンプルコードをコピー&ペーストで組み合わせたときにも起きやすいミスです。
コードの上の方に書かれているSerial.begin()の数値をコピー元ごとに変えてしまわないよう、1つのスケッチの中では統一しておくことを習慣にしておくと安心です。
Serial.print()・Serial.println()・Serial.write()の違い
値を実際に表示するための命令にはいくつか種類があり、目的に応じて使い分けます。
print()とprintln()、改行の有無
Serial.print()は、表示した後に改行をしません。
一方のSerial.println()(末尾に「ln」が付く)は、表示した後に自動で改行します。
末尾の「ln」の2文字だけの違いですが、この差を意識しないままコードを書くと、本来1行ずつ表示したかった値が全部つながって1行になってしまい、非常に読みにくい表示になります。
複数の値を1行にまとめて表示するテクニック
センサーの値とラベル文字を1行にまとめて表示したいときは、途中まではprint()を重ねて使い、最後の1回だけprintln()にします。
Serial.print("sensorValue: "); // ← 改行なし
Serial.println(sensorValue); // ← 改行あり、ここで改行される
このように書くと、「sensorValue: 512」のようにラベルと数値が1行にまとまって表示され、後から見返したときに何の値なのかがひと目で分かります。
write()は生のバイトデータを送る命令
Serial.write()は、print()のように文字として変換せず、数値をそのままバイトデータとして送る命令です。
他の機器と通信するプログラムを作るような上級者向けの場面で使われることが多く、シリアルモニタで値を確認したいだけの初心者のうちは、print()とprintln()の2つだけ覚えておけば十分です。
実践、センサー値や変数の中身を確認しながら動きを追う
ここからは、実際のスケッチの中でシリアルモニタをどう活用するか、具体的な場面ごとに見ていきます。
センサーの生の値をまず出してみる
たとえば明るさを読み取るCdSセルのようなアナログセンサーを使うとき、いきなりif文でしきい値を決め打ちしてしまうと、うまく動かなかったときに原因を切り分けられません。
まずはloop()の中でSerial.println(analogRead(A0));のように、読み取った生の値をそのまま出力してみるのがコツです。

照明をつけた状態・消した状態でそれぞれどのくらいの数値になるかを実測してからif文のしきい値を決める、という進め方は、CdSセルで明るさを読み取る記事でも紹介している考え方です。
紹介した商品:CdSセル(GL5528)
Kaito Denshi(海渡電子) CdSセル 光可変抵抗器 5mm GL5528 10個
明るさで抵抗値が変わる、5mmタイプの定番CdSセル。10個入りで分圧回路の実験にも使えます。
Amazon ¥750(10個入り) / 楽天市場 ¥1,010(10個入り)
※価格は記事執筆時点のものです。購入前に最新価格をご確認ください。
if文の分岐結果を文字で確認する
「LEDが光らない」というとき、原因は配線なのかコードなのか、見た目だけでは判断しづらいことがあります。
そんなときは、if文とelseの両方にSerial.println("条件A: 成立");のような一言を仕込んでおくと、実際にどちらの処理が実行されているのかがシリアルモニタ上で一目瞭然になります。
思っていた方の分岐に入っていないと分かった時点で、配線ではなくコードの条件式が疑わしいと切り分けられ、原因を探す範囲がぐっと狭まります。
if文・変数・条件分岐そのものの基本については、Arduinoスケッチ基礎の記事で整理しています。
delay()中は表示が止まって見える点に注意
loop()の中にdelay(1000)のような待ち時間が入っていると、その間はSerial.println()も実行されないため、シリアルモニタの表示も1秒おきにしか更新されません。
あわせて、シリアルモニタ右下の「自動スクロール」にチェックが入っているかも確認しておくと、最新の値が画面の一番下に流れ続けて見やすくなります。
よくあるつまずきとチェックリスト
最後に、シリアルモニタ関連でよくあるつまずきを、原因と対処のセットで整理します。
「Serial.begin()も書いたし、ボーレートも合っているのに何も表示されない」という相談もよく見かけます。
この場合に見落としやすいのがUSBケーブルの種類で、充電専用(データ通信非対応)のケーブルを使っていると、電源は入ってもシリアル通信自体が成立しません。
手元のケーブルがパソコンとのデータ転送(ファイル転送や書き込み)に使えるタイプかどうかを確認してみてください。

紹介した商品:USB Type-Bケーブル(Arduino Uno用)
SeeedStudio Type-B USB cable for Arduino Diecimila and Freeduino
Arduino Unoの書き込み・シリアル通信に使えるUSB Type-Bケーブルです。
楽天市場 ¥554
※価格は記事執筆時点のものです。購入前に最新価格をご確認ください。
| 症状 | よくある原因 | 確認ポイント |
|---|---|---|
| 記号の羅列で文字化けする | ボーレートの数値がスケッチとモニタで不一致 | 画面右下のプルダウンをSerial.begin()の数値と揃える |
| 何も表示されない | Serial.begin()の書き忘れ、シリアルポートの選択ミス | ツールメニューのポート選択、ケーブルがデータ通信対応か確認 |
| 表示が一瞬で流れて読めない | delay()が短すぎる、自動スクロールが切れている | delay()を一時的に長くして様子を見る |
| 数値がすべて同じ値で止まって見える | loop()の中で値を読み直していない | analogRead()やdigitalRead()がloop()の中にあるか確認 |
書き込みそのものがうまくいかない・ボードが認識されないといった、シリアルモニタ以前の段階でのトラブルについては、Arduinoが書き込みできない・反応しないときのチェックリストで症状別に整理しています。
まとめ:デバッグの基本はまず「見える化」すること
シリアルモニタは、電子工作のデバッグにおいて最も手軽で、最も使用頻度の高い道具です。
「動かない」「思った通りにならない」というときほど、いきなりコードを書き換えるのではなく、まず今の値を表示させて現状を把握することが近道になります。
取り組む前に、以下の点がなんとなくつかめているか確認してみてください。
- Serial.begin()の数値とシリアルモニタ画面のボーレート設定は揃える必要があるという見当がついている
- print()とprintln()の改行の有無の違いがだいたいわかっている
- 「動かない」ときにまず値を出力して現状を確認する、という考え方が身についている
シリアルモニタでの動作確認に慣れてきたら、次はセンサーやモジュールごとの具体的な使い方に進んでいくと、より複雑な工作にも対応しやすくなります。
関連記事
- 関連記事:➔ Arduinoのスケッチ基礎、setup/loop・変数・if文の考え方
- 関連記事:➔ はじめてのLチカに挑戦、回路の組み方とスケッチの意味を理解する
- 関連記事:➔ Arduinoが書き込みできない・反応しないときのチェックリスト
- 関連記事:➔ CdSセル(光センサー)で明るさを読み取る記事


コメント