Arduinoの基礎知識

Arduino-言語・関数リファレンス一覧

Arduinoの言語・関数リファレンスを紹介します。

現在掲載している情報は、まだ一部なので順次、追記していく予定です。

データ型

データ型 入力範囲 サイズ
(ビット数)
説明
boolean
(ブーリアン)
0, 1 1bit ON/OFFの判断に使用
char
(チャー、キャラ)
-128~127 8bit 文字の代入に使用
unsigned char
(アンサインド チャー、
アンサインド キャラ)
0~255 8bit
int
(イント)
-32768~32767
(Arduino Due: -2147483648~2147483647)
16bit
(32bit)
整数に使用
unsigned int
(アンサインド イント)
0~65535
(Arduino Due: 0~4294967295)
16bit
(32bit)
long
(ロング)
-2147483648~2147483647 32bit 大きい整数に使用
unsigned long
(アンサインド ロング)
0~4294967295 32bit
float
(フロート)
3.4028235E+38から-3.4028235E+38 32bit 小数に使用

演算子

算術演算子

算術演算子 使用例 説明
+ a = b + c bとcを足した値をaに代入
a = b – c bからcを引いた値をaに代入
* a = b * c bとcを掛けた値をaに代入
/ a = b / c bをcで割った値をaに代入
% a = b % c bをcで割った余りをaに代入
= a = b bの値をaに代入

代入演算子

Arduino 代入演算子 使用例 説明
+= a += b aとbを足した値をaに代入
-= a -= b aからbを引いた値をaに代入
*= a *= b aとbを掛けた値をaに代入
/= a /= b aをbで割った値をaに代入
%= a %= b aをbで割った余りをaに代入

インクリメント・デクリメント演算子

インクリメント・
デクリメント演算子
使用例 説明
++ a++または
++a
aの値を1増加
a–または
–a
aの値を1減少

比較演算子

比較演算子 使用例 説明
!ERROR! unexpected operator ‘=’ a == b aとbが等しい時、成立
!= a != b aとbが等しくない時、成立
< a < b aがbより小さい時、成立
> a > b aがbより大きい時、成立
<= a <= b aがb以下の時、成立
>= a >= b aがb以上の時、成立

論理演算子

論理演算子 使用例 説明
&& (a >= 10) && (a < 100) aが10以上かつ100未満の時、成立
|| (a == 10) || (a == 100) aが10または100の時、成立
! !(a == 10) aが10でない時、成立

制御文

条件分岐「if」


if(条件A) {
  条件Aが成立した場合に実行
}

if(条件A) {
  条件Aが成立した場合に実行
}
else {
  条件Aが不成立した場合に実行
}

if(条件A) {
  条件Aが成立した場合に実行
}
else if(条件B) {
  条件Aが不成立、条件Bが成立した場合に実行
}
else {
  条件A、条件Bが不成立した場合に実行
}

繰り返し「for」


for(カウンタ初期値; 条件A; カウンタ増加の指定;) {
  条件Aが成立する間、繰り返し実行
}

繰り返し「while」


while(条件A) {
  条件Aが成立する間、繰り返し実行
}

繰り返し「do while」


do {
  必ず1回実行した後、
  条件Aが成立する間、繰り返し実行
} while(条件A);

条件分岐「switch case」


switch(対象の変数) {
  case 変数1:
    対象の変数が1の場合に実行
    break;
  case 変数2:
    対象の変数が2の場合に実行
    break;
  case 変数3:
    対象の変数が3の場合に実行
    break;
  default:
    対象の変数が全て当てはまらない場合に実行
}

標準関数

Arduino IDEやArduino Web Editorでは、Arduino独自の標準関数が用意されており、関数を呼び出さずにそのまま使用することができます。

以下のリンクがArduino公式WEBサイトのリファレンスページになります。当記事では、これらの情報を参考にArduinoの標準関数をまとめています。

ちなみに、日本語ページも用意されていますが、全て翻訳されてはいません。

Digital I/O(デジタル入出力)

関数 引数 戻り値 説明
void pinMode(pin, mode) pin:対象のデジタル入出力のピン番号
mode:入力、出力、プルアップ入力のモード指定
なし デジタル入出力のモード切り替え
void digitalWrite(pin, value) pin:対象のデジタル入出力のピン番号
value:5V/HIGHまたは0V/LOW
なし デジタル出力
int digitalRead(pin) pin:対象のデジタル入出力のピン番号 ピンの入力状態をHIGHまたはLOWで返す デジタル入力

pinMode()/デジタル入出力のモード切り替え

pinMode()/デジタル入出力のモード切り替え
  • 関数:void pinMode(pin, mode)
  • 引数:pin⇒対象のデジタル入出力のピン番号
  •   :mode⇒入力、出力、プルアップ入力のモード指定
  • 戻り値:なし

引数で、対象のデジタル入出力に「ピン番号」と「モード」を指定して、デジタル入出力のモードを切り替えます。

モードは「入力:INPUT」、「出力:OUTPUT」、「プルアップ入力:INPUT_PULLUP」から選択できます。

digitalWrite()/デジタル出力

digitalWrite()/デジタル出力
  • 関数:void digitalWrite(pin, value)
  • 引数:pin⇒対象のデジタル入出力のピン番号
  •   :value⇒5V/HIGHまたは0V/LOW
  • 戻り値:なし

引数で、対象のデジタル入出力に「ピン番号」と「出力電圧」を指定して、デジタル出力を行います。

出力電圧は、「5V:HIGH」、「0V:LOW」になります。

digitalRead()/デジタル入力

digitalRead()/デジタル入力
  • 関数:int digitalRead(pin)
  • 引数:pin⇒対象のデジタル入出力のピン番号
  • 戻り値:ピンの入力状態をHIGHまたはLOWで返す

引数で、対象のデジタル入出力に「ピン番号」を指定して、デジタル入力を行います。

入力電圧の状態は、戻り値で5Vは「HIGH」、0Vは「LOW」を返します。

Analog I/O(アナログ入出力)

関数 引数 戻り値 説明
void analogReference(type) type:基準電圧の設定 なし アナログ入力の基準電圧を設定
int analogRead(pin) pin:対象のアナログ入力のピン番号 ピンの入力状態を0~1023で返す アナログ入力の状態を確認
void analogWrite(pin, value) pin:対象のデジタル入出力のピン番号
value:出力値を0~255で指定
なし アナログ出力(PWM)

analogReference()/アナログ入力の基準電圧を設定

analogReference()/アナログ入力の基準電圧を設定
  • 関数:void analogReference(type)
  • 引数:type⇒基準電圧の設定
  • 戻り値:なし

引数で、「基準電圧」を指定して、アナログ入力の基準電圧を設定します。

基準電圧は、「DEFAULT」で「5V」、「INTERNAL」で「1.1V」で設定でき、「INTERVAL」では「AREF」ピンに加わっている電圧が基準電圧になります。ただし、「AREF」ピンには5Vを超える電圧を印加することはできません。

analogRead()/アナログ入力の状態を確認

analogRead()/アナログ入力の状態を確認
  • 関数:int analogRead(pin)
  • 引数:pin⇒対象のアナログ入力のピン番号
  • 戻り値:ピンの入力状態を0~1023で返す

引数で、対象のアナログ入力の「ピン番号」を指定して、アナログ入力の状態を確認することができます。

アナログ入力に印加された電圧は、0~5Vの範囲を戻り値で0~1023を返します。例えば、1Vであれば、205程度の値が返されます。

analogWrite()/アナログ出力(PWM)

analogWrite()/アナログ出力(PWM)
  • 関数:void analogWrite(pin, value)
  • 引数:pin⇒対象のデジタル入出力のピン番号
  •   :value⇒出力値を0~255で指定
  • 戻り値:なし

引数で、対象のデジタル入出力の「ピン番号」と「出力値」を指定して、アナログ出力(PWM)を行います。

出力値は「0~255」の範囲で指定できます。例えば、51であれば、約1VのPWM出力になります。

Advanced I/O(デジタル・アナログ入出力 発展版)

関数 引数 戻り値 説明
void tone(pin, unsigned int frequency, unsigned long duration) pin:対象のデジタル入出力のピン番号
frequency:出力周波数
duration:出力時間(ms)
なし 矩形波出力
void noTone(pin) pin:対象のデジタル入出力のピン番号 なし 矩形波停止
unsigned long pulseInLong(pin, value, unsigned long timeout) pin:対象のデジタル入出力のピン番号
value:パルス検出タイプ(HIGHまたはLOW)
timeout:タイムアウト時間(us)
パルスの時間(us)を返す パルス検出
void shiftOut(dataPin, clockPin, bitOrder, value) dataPin:データ出力するデジタル入出力のピン番号
clockPin:クロック出力するデジタル入出力のピン番号
bitOrder:出力データの順番をMSBFIRSTまたはLSBFIRSTで指定
value:出力する1Byteのデータ
なし 1Byteのデータを出力
byte incoming = shiftIn(dataPin, clockPin, bitOrder) dataPin:データ入力するデジタル入出力のピン番号
clockPin:クロック出力するデジタル入出力のピン番号
bitOrder:入力データの順番をMSBFIRSTまたはLSBFIRSTで指定
value:出力する1Byteのデータ
入力データを1Byteで返す 1Bitずつの入力から1Byteのデータを取得

Time(時間)

関数 引数 戻り値 説明
unsigned long millis() なし プログラム実行からの経過時間(ms)を返す プログラム実行からの経過時間(ms)を計測
unsigned long micros() なし プログラム実行からの経過時間(us)を返す プログラム実行からの経過時間(us)を計測
void delay(unsigned long ms) ms:待機時間(ms) なし プログラムの実行を指定時間待機(ms)
void delayMicroseconds(unsigned int us) us:待機時間(us) なし プログラムの実行を指定時間待機(us)

Math(数学)

関数 引数 戻り値 説明
min(x, y) x:1つ目の数値
y:2つ目の数値
2つの数値を比べて小さい数値を返す 2つの数値を比べて小さい数値を算出
max(x, y) x:1つ目の数値
y:2つ目の数値
2つの数値を比べて大きい数値を返す 2つの数値を比べて大きい数値を算出
abs(x) x:数値 絶対値を返す 絶対値を計算
constrain(x, a, b) x:対象の数値
a:範囲の最小値
b:範囲の最大値
範囲内の値を返す 対象の数値が範囲内であれば、そのまま算出
範囲外であれば範囲の最小値または最大値で算出
long map(long value, long fromLow, long fromHigh, long toLow, long toHigh) value:対象の数値
fromLow:元の範囲の最小値
fromHigh:元の範囲の最大値
toLow:変換後の範囲の最小値
toHigh:変換後の範囲の最大値
変換した値を返す 対象の値を元の範囲から変換後の範囲に割合で変換
double pow(float base, float exponent) base:基数
exponent:乗数
べき乗した値を返す べき乗計算
double sqrt(x) x:数値 平方根で計算した値を返す 平方根を計算
sq(x) x:数値 対象の値の2乗を計算した値を返す 対象の値の2乗を計算

Trigonometry(三角関数)

関数 引数 戻り値 説明
double cos(float rad) rad:数値(rad) cosで計算した値を返す cos計算
double sin(float rad) rad:数値(rad) sinで計算した値を返す sin計算
double tan(float rad) rad:数値(rad) tanで計算した値を返す tan計算

Random Numbers(乱数)

関数 引数 戻り値 説明
void randomSeed(unsigned int seed) seed:乱数の種 なし 乱数の種を指定
long random(long max)
long random(long min, long max)
min:範囲の最小値
max:範囲の最大値
取得した乱数 乱数を取得

Bits and Bytes(ビット・バイト)

関数 引数 戻り値 説明
lowByte(x) x:対象の数値 下位Bitを返す 下位Bitを取得
highByte(x) x:対象の数値 上位Bitを返す 上位Bitを取得
bitRead(x, n) x:対象の数値
n:取得するBitの桁
取得Bitを返す 指定Bitを取得
bitWrite(x, n, b) x:対象の数値
n:取得するBitの桁
b:指定値
変更値を返す 特定の桁を変更した値を取得
bitSet(x, n) x:対象の数値
n:取得するBitの桁
変更値を返す 特定の桁を変更した値を取得(指定値は1)
bitClear(x, n) x:対象の数値
n:取得するBitの桁
変更値を返す 特定の桁を変更した値を取得(指定値は0)
bit(n) n:指定Bitの桁 指定した桁のBitを1にした値を返す 指定した桁のBitを1にした値を取得

Interrupts(割り込み)

関数 引数 戻り値 説明
interrupts() なし なし 割り込みを有効
noInterrupts() なし なし 割り込みを無効

External Interrupts(外部割り込み)

関数 引数 戻り値 説明
void attachInterrupt(digitalPinToInterrupt(pin), ISR, int mode) digitalPinToInterrupt(pin):割り込みチャンネル
ISR:割り込み時の実行関数
mode:割り込みタイミング
なし ピンの状態によって割り込みを実行
void detachInterrupt(digitalPinToInterrupt(pin)) digitalPinToInterrupt(pin):割り込みチャンネル なし 特定のチャンネルの割り込みを無効

Communication/Serial(シリアル通信)

説明 引数 戻り値 説明
Serial.begin(unsigned long speed) speed:通信速度 なし シリアル通信を初期化
end() なし なし シリアル通信を終了
int available() なし 残りByte 読み取り可能Byte数を調べる
int Serial.read() なし 1Byte読み込んだ値を返す 1Byte読み込み
int Serial.peek() なし 1Byte読み込んだ値を返す 1Byte読み込み、読み取り位置は動かさない
Serial.flush() なし なし バッファからデータを削除
Serial.write(data)
Serial.write(buf, len)
data:送信データ
buf:送信する配列データ
len:データの長さ
送信データのByte数 データ送信
Serial.print(val, format) val:読み込むデータ
format:読み込みデータの基数
送信データのByte数 文字列送信(改行なし)
Serial.println(val, format) val:読み込むデータ
format:読み込みデータの基数
送信データのByte数 文字列送信(改行あり)

Serial.begin()/シリアル通信を初期化

Serial.begin()/シリアル通信を初期化
  • 関数:Serial.begin(unsigned long speed)
  • 引数:speed⇒通信速度
  • 戻り値:なし

シリアル通信を初期化します。引数で、以下の通信速度(bps)を設定します。

設定可能な通信速度(bps)
  • 300
  • 1200
  • 2400
  • 4800
  • 9600
  • 14400
  • 19200
  • 28800
  • 38400
  • 57600
  • 115200

end()/シリアル通信を終了

end()/シリアル通信を終了
  • 関数:end()
  • 引数:なし
  • 戻り値:なし

シリアル通信を終了します。シリアル通信を終了することで、共用ピンであるPD0とPD1をデジタル入出力として使用できます。

available()/読み取り可能Byte数を調べる

available()/読み取り可能Byte数を調べる
  • 関数:int available()
  • 引数:なし
  • 戻り値:残りByte

Serial.read()/1Byte読み込み

Serial.read()/1Byte読み込み
  • 関数:int Serial.read()
  • 引数:なし
  • 戻り値:1Byte読み込んだ値を返す

Serial.peek()/1Byte読み込み、読み取り位置は動かさない

Serial.peek()/1Byte読み込み、読み取り位置は動かさない
  • 関数:int Serial.peek()
  • 引数:なし
  • 戻り値:1Byte読み込んだ値を返す

Serial.flush()/バッファからデータを削除

Serial.flush()/バッファからデータを削除
  • 関数:Serial.flush()
  • 引数:なし
  • 戻り値:なし

バッファに保存されている受信データを削除します。

Serial.write()/データ送信

Serial.write()/データ送信
  • 関数:Serial.write(data)
  •   :Serial.write(buf, len)
  • 引数:data⇒送信データ
  •   :buf⇒送信する配列データ
  •   :len⇒データの長さ
  • 戻り値:送信データのByte数

Arduinoボードから文字や配列のデータを送信します。配列データを送信する場合、「データの長さ」を指定する必要があります。

Serial.print()/文字列送信(改行なし)

Serial.print()/文字列送信(改行なし)
  • 関数:Serial.print(val, format)
  • 引数:val⇒読み込むデータ
  •   :format⇒読み込みデータの基数
  • 戻り値:送信データのByte数

Arduinoボードから指定した文字列、数値、変数などを送信します。

Serial.println()/文字列送信(改行あり)

Serial.println()/文字列送信(改行あり)
  • 関数:Serial.println(val, format)
  • 引数:val⇒読み込むデータ
  •   :format⇒読み込みデータの基数
  • 戻り値:送信データのByte数

Arduinoボードから指定した文字列、数値、変数などを送信します。また、送信データの最後に「改行」が付加されます。

標準ライブラリ

Servo(サーボモーター)

関数 引数 戻り値 説明
attach(int pin, int min, int max) int pin:指定する
int min:角度0°のパルス幅(usec)、初期値544
int max:角度180°のパルス幅(usec)、初期値2400
インデックス値 サーボモーターのピン番号を指定
bool attached(void) なし 割り当てあり:true
割り当てなし:false
ピンにサーボモーターが割り当てられてるか確認
void detach(void) なし なし サーボモーターに割り当てられているピンを開放
void write(int angle) int angle:指定の角度 なし 指定角度にサーボモータを回転
void writeMicroseconds(int uS) int uS:パルス幅をusec単位で指定 なし パルス幅を指定してサーボモーターを回転
int read(void) なし サーボモーターの角度 現在のサーボモーターの角度を読み取り

Wire(I2C/TWI)

関数 引数 戻り値 説明
void begin(int address) int address:スレーブアドレス なし I2C初期化
requestFrom(int address, int quantity, int stop) int address:I2Cデバイスのアドレス
int quantity:データのbyte数
int stop:1に指定すると、データ送信後にSTOPメッセージを送信して接続終了
0に指定するとデータ送信後も接続保持
受信したbyte数 他のI2Cデバイスにデータ要求
void beginTransmission(int address) int address:I2Cデバイスのアドレス なし I2Cスレーブにデータ送信開始
endTransmission(int stop) int stop:1に指定すると、データ送信後にSTOPメッセージを送信して接続終了
0に指定するとデータ送信後も接続保持
データ送信結果 I2Cスレーブデバイスとのデータ送信完了
write(value)
write(string)
write(data, length)
value:1byteデータ
string:文字列データ
data:配列データ
length:送信byte数
送信したbyte数 I2Cスレーブデバイスにデータ送信
int available(void) なし 読み込み可能byte数 読み込み可能なbyte数を調べる
int read(void) なし 受信byte数 受信したbyte数を調べる

テキストのコピーはできません。