Arduino関数・コード早見表|setup/loop・データ型・入出力関数・制御構文リファレンス完全まとめ
やまちゃん
/
「Arduinoの関数の引数って何だっけ?」「analogWriteって何ピンに使えるんだっけ?」——コードを書いていてふと手が止まる瞬間、ありますよね。
この記事は逆引きリファレンスとして使うことを想定して作りました。setup/loopのライフサイクルからデータ型一覧・主要関数の引数と戻り値・制御構文の定型パターン・よくあるコンパイルエラーの直し方まで、「Arduino コードの書き方」を一枚で確認できる早見表としてまとめています。📌
📌 対象読者:Arduinoを使い始めた入門〜中級者/関数仕様をすぐ確認したい方
Contents
🔄 setup / loop のライフサイクル

すべての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コースや電子部品もまとめています。
📚 関連商品・おすすめ書籍
※本記事にはアフィリエイトリンクが含まれます。
ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。
ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。
Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。





