「Arduinoの関数の引数って何だっけ?」「analogWriteって何ピンに使えるんだっけ?」——コードを書いていてふと手が止まる瞬間、ありますよね。

この記事は逆引きリファレンスとして使うことを想定して作りました。setup/loopのライフサイクルからデータ型一覧・主要関数の引数と戻り値・制御構文の定型パターン・よくあるコンパイルエラーの直し方まで、「Arduino コードの書き方」を一枚で確認できる早見表としてまとめています。📌

📌 対象読者:Arduinoを使い始めた入門〜中級者/関数仕様をすぐ確認したい方

🔄 setup / loop のライフサイクル

Arduino code reference
Arduino code reference / Photo by Marc Mueller via Pexels

すべてのArduinoスケッチは以下の2関数で構成されます。

関数 実行タイミング 主な用途
setup() 電源ON・リセット後に1回だけ pinMode設定・Serial.begin・初期値代入
loop() setup()完了後に無限ループ センサー読み取り・制御・通信処理

📦 データ型一覧表

型名 サイズ 範囲 用途例
bool 1 byte true / false フラグ管理
byte 1 byte 0〜255 PWM値・通信データ
int 2 byte −32768〜32767 ピン番号・センサー値
unsigned int 2 byte 0〜65535 カウンタ
unsigned long 4 byte 0〜4294967295 millis()・micros()の格納
long 4 byte 約±21億 大きな整数計算
float 4 byte 小数6〜7桁精度 電圧・温度換算
char 1 byte −128〜127 1文字・ASCII
String 可変 シリアル出力テキスト

⚠️ 注意:String型はヒープを使うためメモリ断片化の原因になることがあります。メモリ節約が必要な場合は文字配列(char[])の使用を検討してください。

📋 主要関数リファレンス一覧表


ピン制御系

関数 引数 戻り値 注意点
pinMode(pin, mode) pin: ピン番号
mode: OUTPUT / INPUT / INPUT_PULLUP
なし setup()内で呼ぶのが基本
digitalWrite(pin, value) pin: ピン番号
value: HIGH / LOW
なし OUTPUTに設定済みのピンに使う
digitalRead(pin) pin: ピン番号 HIGH / LOW INPUT_PULLUPはボタン接続に便利
analogRead(pin) pin: A0〜A5など int(0〜1023) 基準電圧は5V(UNO)。変換式: V = val × 5.0 / 1023.0
analogWrite(pin, value) pin: PWM対応ピン(〜マーク付き)
value: 0〜255
なし UNOのPWMピンは3・5・6・9・10・11のみ

Serial通信系

関数 引数 戻り値 注意点
Serial.begin(baud) baud: 通信速度(9600・115200など) なし シリアルモニタ側と速度を合わせる
Serial.print(val) val: 数値・文字列など 書き込んだバイト数 改行なし
Serial.println(val) val: 数値・文字列など 書き込んだバイト数 末尾に改行(\r\n)が付く
Serial.available() なし 受信バッファのバイト数 0より大きければ読み取り可能
Serial.read() なし int(受信した1バイト。なければ-1) available()で確認してから呼ぶ

🔁 制御構文の定型パターン集

if 文(条件分岐)

// ボタン状態でLED切り替え
int buttonState = digitalRead(2);
if (buttonState == HIGH) {
  digitalWrite(13, HIGH);
} else {
  digitalWrite(13, LOW);
}

for 文(回数指定の繰り返し)

// LEDを5回点滅させる
for (int i = 0; i < 5; i++) {
  digitalWrite(13, HIGH);
  delay(300);
  digitalWrite(13, LOW);
  delay(300);
}

while 文(条件継続ループ)

// センサー値が500を超えるまで待機
while (analogRead(A0) <= 500) {
  delay(10); // 短い待機でCPU負荷を下げる
}

millis() を使った非ブロッキング処理(delay代替パターン)

// delay()を使わずに1秒ごとにLEDを切り替える
unsigned long previousMillis = 0;
const long interval = 1000;
bool ledState = false;

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    ledState = !ledState;
    digitalWrite(13, ledState ? HIGH : LOW);
  }
}

💡 delay()はその間すべての処理が止まります。ボタン入力やSerial受信を同時に行う場合はmillis()パターンに切り替えましょう。

⚠️ よくあるコンパイルエラーと直し方


エラーメッセージ(抜粋) 主な原因 直し方
'xxx' was not declared in this scope 変数・関数名のスペルミス、または宣言前に使用 宣言箇所を確認。グローバル変数はsetup()の外に書く
expected ';' before ... 行末のセミコロン抜け エラー行の1行前のセミコロンを確認
expected ')' before ... 括弧の対応ミス 開き括弧と閉じ括弧の数を数える
invalid conversion from 'int' to ... 型の不一致 (float)などキャストを使うか変数の型を合わせる
a function-definition is not allowed here 関数の中に関数を定義しようとしている setup()/loop()の外に関数を書く
sketch too big フラッシュメモリ容量オーバー 不要なライブラリの削除・String型をchar[]に変更

📝 まとめ

この記事では以下をリファレンス形式でまとめました。

  • setup/loopのライフサイクル:1回実行 vs 無限ループの役割分担
  • データ型一覧:型サイズ・範囲・用途を表で確認
  • 関数リファレンス:pinMode・digitalWrite・digitalRead・analogRead・analogWrite・Serial系の引数・戻り値・注意点
  • 制御構文の定型パターン:if/for/while+millis()非ブロッキングパターン
  • よくあるコンパイルエラーと直し方:エラー文→原因→対処をすぐ逆引き

実際にLEDやセンサーを使ったプロジェクトに挑戦したい方は、以下の記事も合わせて参考にしてみてください。💪

📡 Arduinoをもっと深く学ぼう!

Arduino・ラズパイ・ロボットプログラミングを体系的に学びたい方へ。おすすめのUdemyコースや電子部品もまとめています。

Arduinoロボット入門のおすすめコース・部品を見る →

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

Arduinoをはじめよう 第4版 (Make: PROJECTS)

もしも

Arduinoをはじめよう 第4版 (Make: PROJECTS)

Arduino公式推薦の定番入門書

Amazonで見る

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。