Arudino

【Arudino】言語のリファレンスまとめ

Arduino 言語は、「C言語」と「C++」をベースにして作られています。初心者でも扱いやすいように、便利な関数やライブラリが用意されているので、短いコードで動かすことができます。

Arudino の公式サイトに言語のリファレンスがまとめてありますが、英語で記載されています。

公式サイトは次のリンクからアクセスできます。

\ Language Reference /

公式サイトで言語の切り替えはできるものの、英語・ドイツ語・ポルトガル語のみ対応していて、残念ながら日本語は対応外です。

そこで、この記事では Arudino 言語のリファレンスについて日本語でまとめてみました。Arudino を利用される方は、ぜひ参考にしてみて下さい。

データ型

Arudino で使用できるデータ型は次の通りです。データ型は多数存在しますが、実質同じ型がいくつか存在しますので注意しましょう。

データ型説明
bool真(true)または偽(false)のどちらかの値を持つ型である
byte0から255までの8bit(1byte)の数値を格納する型である
char1文字のデータを8bit(1byte)に格納する型である
dobule32bit(4byte)の倍精度浮動小数点を格納する型である
float32bit(4byte)の浮動小数点を格納する型である
int16bit(2byte)の符号付の整数を格納する型である
long32bit(4byte)の符号付の整数を格納する型である
short16bit(2byte)の符号付の整数を格納する型である(intと同じ)
unsigned char8bit(1byte)の符号無しの整数を格納する型である
unsigned int16bit(2byte)の符号無しの整数を格納する型である
unsigned long32bit(4byte)の符号無しの整数を格納する型である
word16bit(2byte)の符号無しの整数を格納する型である(unsigned intと同じ)

bool

bool(ブール)型は、真(true)または偽(false)のどちらかの値を持つ型です。boolean型も同じです。

サイズ(bit数):8bit

入力範囲:0, 1

使い方の例
bool a = true;
bool b = false;

byte

byte(バイト)型は、0から255までの8bit(1byte)の数値を格納する型です。unsigned char型と同じです。

サイズ(bit数):8bit

入力範囲:0 ~ 255

整数型(符号なし整数)

使い方の例
byte b = 36;

char

char型は、1文字のデータを8bit(1byte)に格納する型です。

char型で文字を格納するには、文字の両端を一重引用符で囲みます。文字を直接指定するか、ASCII(アスキー)コードで割り当てられた数値を指定します。

複数の文字(文字列)を格納するには、char型の配列を使います。配列の宣言は配列数を明示してもいいですし、配列数を明示しなくてもいいです。

配列を文字として扱う場合は終端が明確になるように、終端文字として ‘\0’ が必要になります。この終端文字は、Arudino のコンパイラが自動的に処理してくれるので必ずしも記述する必要はありません。ただし、配列の宣言で配列数を明示する場合は「文字列の数」と「終端文字1文字」を足した数以上を指定しなければなりません。

(参考:ASCIIコード表)

サイズ(bit数):8bit

入力範囲:-128 ~ 127

文字列型

使い方の例
// 1文字
char c1 = 'A';
char c2 = 65;  // ASCIIコード表でAを10進数に変換すると、65になる

// 文字列
char s1[ ] = "uno";                  // 配列数を明示しない
char s2[4] = "uno";                  // 配列数を明示する
char s3[4] = {'u', 'n', 'o'};        // 初期化リストを使って1文字ずつ書くことができる
char s4[4] = {'u', 'n', 'o', '\0'};  // 初期化リストを使って終端文字を書くことができる

// 文字列の配列
char* sList[] = {
  "uno1", "uno2", "uno3", "uno4"
}; 

dobule

32bit(4byte)の浮動小数点を格納する型です。float型と同じです。

Arudino Dueでは、64bit(8byte)の浮動小数点を格納することができます。

サイズ(bit数):32bit (64bit)

入力範囲:3.4028235E+38~-3.4028235E+38

浮動小数型

使い方の例
double d = 3.14;

float

32bit(4byte)の浮動小数点を格納する型です。整数よりも分解能が高い値を扱う時に使用します。浮動小数点は整数と比較して計算処理に時間がかかることになります。

サイズ(bit数):32bit

入力範囲:3.4028235E+38~-3.4028235E+38

浮動小数型

使い方の例
float f = 3.14;

int

16bit(2byte)の符号付の整数を格納する型です。多数ある型の中でも頻繁に利用される型です。

Arudino Due や SAMDベースのボードでは、32bit(4byte)の浮動小数点を格納することができます。

サイズ(bit数):16bit(32bit)

入力範囲:-32,768~32,767 (-2,147,483,648~2,147,483,647)

整数型

使い方の例
int i = 20; 

long

32bit(4byte)の符号付の整数を格納する型です。

サイズ(bit数):32bit

入力範囲:2,147,483,648~2,147,483,647

整数型

使い方の例
long l = 20; 

short

16bit(2byte)の符号付の整数を格納する型です。int型と同じです。

サイズ(bit数):16bit

入力範囲:-32,768~32,767

整数型

使い方の例
short s = 20; 

unsigned char

8bit(1byte)の符号無しの整数を格納する型です。byte型と同じです。

コーディングルールに従って、byte型かunsigned char型のどちらを使用するようにしましょう。公式サイトではbyte型を優先するように記載があります。

サイズ(bit数):8bit

入力範囲:0~255

文字列型

使い方の例
unsigned char uc = 240; 

unsigned int

16bit(2byte)の符号無しの整数を格納する型です。int型とは違い、0から65,535までの正の数しか格納ができません。

サイズ(bit数):16bit

入力範囲:0~65,535

整数型

使い方の例
unsigned int ui = 240; 

unsigned long

32bit(4byte)の符号無しの整数を格納する型です。long型とは違い、0から4,294,967,295までの正の数しか格納ができません。

サイズ(bit数):32bit

入力範囲:0~4,294,967,295

整数型

使い方の例
unsigned long ul = 240; 

word

16bit(2byte)の符号無しの整数を格納する型です。unsigned int型と同じです。

サイズ(bit数):16bit

入力範囲:0~65,535

整数型

使い方の例
word w = 240; 

演算子

Arudino で使用できる演算子の種類は次の通りです。

算術演算子

この演算子は計算するために使用します。加減乗除以外に除算した時の余りを返す演算子があります。

算術演算子説明
+2つの値を加算する
2つの値を減算する
*2つの値を乗算する
/2つの値を除算する
%2つの整数を除算した時の余りを返す
=右辺の値を左辺の変数に格納する
使い方の例
//加算
int a = 5 + 1;  //aには6が代入される

//減算
int b = 5 - 1;  //bには4が代入される

//乗算
int c = 5 * 1;  //cには5が代入される

//除算
int d = 5 / 1;  //dには5が代入される

//余り
int e = 5 / 2;  //eには1が代入される 

代入演算子

この演算子は計算するために使用します。左辺と右辺の値で計算して左辺に代入する演算子です。

算術演算子説明
+=左辺と右辺を足した値を左辺に代入する
-=左辺から右辺を引いた値を左辺に代入する
*=左辺と右辺を掛けた値を左辺に代入する
/=左辺を右辺で割った値を左辺に代入する
%=左辺を右辺で割った余りを左辺に代入する
使い方の例
//加算
int x = 5;
x += 1;     //xは6になる
x = x + 1;  //上の式と同じ

//減算
int x = 5;
x -= 1;     //xは4になる
x = x - 1;  //上の式と同じ

//乗算
int x = 5;
x *= 1;     //xは5になる
x = x * 1;  //上の式と同じ

//除算
int x = 5;
x /= 1;     //xは5になる
x = x / 1;  //上の式と同じ

//余り
int x = 5;
x %= 2;     //xは1になる
x = x % 1;  //上の式と同じ

比較演算子

右辺と左辺を比較して、比較した結果を真偽(true / false)で返す演算子です。

比較演算子には次の6種類があります。

比較演算子説明
==A == BAとBが等しい場合は真
!=A != BAとBが等しくない場合は真
<A < BAがB未満の場合は真(AとBが等しい場合は偽)
>A > BAがBを超える場合は真(AとBが等しい場合は偽)
<=A <= BAがB以下の場合は真(AとBが等しい場合は真)
>=A >= BAがB以上の場合は真(AとBが等しい場合は真)
使い方の例
if (x == y)
{
    // xとyが等しい
}

if (x != y)
{
    // xとyは等しくない
}

if (x < y)
{
    // xはyより小さい
}

if (x > y)
{
    // xはyより大きい
}

if (x <= y)
{
    // xはy以下である
}

if (x >= y)
{
    // xはy以上である
} 

論理演算子

複数の条件式を組み合わせて真偽(true / false)で返す演算子です。

論理演算子には次の3種類があります。

論理演算子説明
&&式A && 式B式Aと式Bがともに真の場合は真になる
||式A || 式B式Aと式Bがの少なくとも1つが真の場合は真になる
!!式A式Aが真の場合は偽、偽の場合は真になる
使い方の例
if (3 < x && x < 10)
{
    // xは3より大きく、10より小さい
}

if (3 < x || x < 10)
{
    // xは3より大きい、もしくはxは10より小さい
}

if (!(3 < x))
{
    // xは3以下である
}

ビット演算子

整数型の数値に対してビット単位で演算を行うための演算子です。

ビットとは「0」と「1」で表現するコンピュータの最小単位の事です。このビットが8個集まると1byteになります。1byteあれば、0~255までの数値を表現することができます。

ビット演算子では、個々のビットに対して演算を行えます。ビット演算子には次の3種類があります。

論理演算子説明
&a & b両方のビットが1の場合、出力は1になる。それ以外の場合は0になる。
|a | b両方もしくはどちらか片方が1の場合、出力は1になる。それ以外の場合は0になる。
^a ^ bどちらか片方が1の場合、出力は1になる。それ以外の場合は0になる。
~a ~ b 右辺の1つの値に対して各ビットを反対の値にする。
<<a << b 指定された数だけ左側へビットの値が移動する。
>>a >> b 指定された数だけ右側へビットの値が移動する。
&(AND)

2つの整数の間で演算が行われ、両方のビットが1の場合は結果が1になります。それ以外の場合は0になります。

8bitに対して&演算を行うと、8回の&演算が繰り返されます。

値1 … 0010001
値2 … 0100010
————————————————–
結果 … 0000000

使い方の例
int a = 33;     // 2進数:0000000000100001
int b = 98;     // 2進数:0000000001100010
int c = a & b;  //  結果:0000000000100000 (10進数で32)
|(OR)

2つの整数の間で演算が行われ、両方のビットが1もしくはどちらか一方が1の場合は結果が1になります。それ以外の場合は0になります。

8bitに対して&演算を行うと、8回の&演算が繰り返されます。

値1 … 0000011
値2 … 0000
————————————————–
結果 … 01100111

使い方の例
int a = 33;     // 2進数:0000000000100001
int b = 98;     // 2進数:0000000001100010
int c = a | b;  //  結果:0000000001100011 (10進数で99)
^(XOR)

2つの整数の間で演算が行われ、どちらか一方が1の場合は結果が1になります。それ以外の場合は0になります。

8bitに対して&演算を行うと、8回の&演算が繰り返されます。

値1 … 00000
値2 … 0000
————————————————–
結果 … 0110011

使い方の例
int a = 33;     // 2進数:0000000000100001
int b = 98;     // 2進数:0000000001100010
int c = a ^ b;  //  結果:0000000001000011 (10進数で67)
~(NOT)

右辺の1つの値に対して各ビットを反対の値にします。0の場合は結果が1になります。逆に1の場合は結果が0になります。

8bitに対して~演算を行うと、8回の~演算が繰り返されます。

値1 … 00100011
————————————————–
結果 … 11011100

使い方の例
int a = 33;    // 2進数:0000000000100001
int b = ~a;    //  結果:1111111111011110 (10進数で-34)

ここで補足説明です。int 型の最上位ビットは符号ビットになります。符号ビットが0の場合は正の整数として扱われます。符号ビットが1の場合は負の整数として扱われます。

このような正負の値のエンコーディングは「2の補数」と呼ばれます。

値 32767 … 0111111111111111
値 32766 … 0111111111111110
値 32765 … 0111111111111101
:
値        0 … 0000000000000000
:
値-32766 … 1000000000000010
値-32767 … 1000000000000001
値-32768 … 1000000000000000

<<(左シフト)

指定された数だけ左側へビットの値が移動します。

8bitに対して左へ3つシフトを行うと、シフトされた数だけ0が追加されて次のようになります。8bitからはみ出したビットは保持されることなく失われます。

値1 … 00100011
————————————————–
結果 … 00011000

使い方の例
int a = 33;      // 2進数:0000000000100001
int b = a << 3;  //  結果:0000001100011000 (10進数で792)
>>(右シフト)

指定された数だけ右側へビットの値が移動します。

8bitに対して右へ2つシフトを行うと、シフトされた数だけ0が追加されて次のようになります。8bitからはみ出したビットは保持されることなく失われます。

値1 … 00100011
————————————————–
結果 … 00001000

使い方の例
int a = 33;      // 2進数:0000000000100001
int b = a >> 3;  //  結果:0000000000000100 (10進数で4)

制御文

Arudino で使用できる制御文は次の通りです。

if(条件分岐)

if 文は条件式の真偽に応じて分岐します。2つの値の大小関係や、等しい・等しくない等の条件により処理を変える場合に使われます。

最初の if 文の条件式が成立しなかった場合に、if else 文を使って次の条件式を設定することができます。

使い方
// パターン1
if (条件A) {
    // 条件Aが成立した場合に実行
}


// パターン2
if (条件A) {
    // 条件Aが成立した場合に実行
}
else {
    // 条件Aが不成立した場合に実行
}


// パターン3
if (条件A) {
    // 条件Aが成立した場合に実行
}
else if (条件B) {
    // 条件Aが不成立、条件Bが成立した場合に実行
}
else {
    // 条件A、条件Bが不成立した場合に実行
}

for(繰り返し)

for 文は波括弧に囲まれた処理を繰り返し実行します。

for 文は「カウンタ初期値」「条件式」「カウンタの更新」を使って記述します。条件式が真(true)である限り、繰り返し処理が実行されます。

使い方
for (カウンタ初期値; 条件A; カウンタの更新) {
    // 条件Aが成立する間、繰り返し実行
}

while(繰り返し)

while 文は波括弧に囲まれた処理を繰り返し実行します。

while 文は条件式が真(true)である限り、繰り返し処理が実行されます。条件式で使われる変数は、繰り返し処理内で変化するように記述します。

for 文は繰り返す回数がわかっている場合に便利な構文ですが、繰り返す回数がわからない場合には while 文を使うと便利です。

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

do while(繰り返し)

do while 文は波括弧に囲まれた処理を繰り返し実行します。while 文とは異なり、ループ処理を行った後に「条件式を満たすかどうか」を判定します。

do-while文は、while文と同じく、回数が明確に決まっていない繰り返し処理を行う場合に適しています。

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

switch(条件分岐)

switch 文は if 文と同じように条件を分岐する場合に使います。

switch() で指定された変数と一致する case の処理が実行されます。どの case にも一致しなかった時に実行したい処理は default に記述します。  default は省略することも可能です。

case の処理が実行されたら、break を使って switch 文からに抜け出すようにします。この break がないと続けて次の case が実行されてしまいます。

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

break

break 文は for 文や while 文、do while 文など繰り返し処理から抜け出す時に使います。

使い方の例
for (x = 0; x <= 255; x++) {
    if (x == 200) {
        break;
    }
}

continue

continue 文は for 文や while 文、do while 文など繰り返し処理の途中で、処理をスキップしたい時に使います。break 文とは異なり、ループを止めることはありません。

使い方の例
for (x = 0; x <= 255; x++) {
    if (x == 200) {
        continue;
    }
}

retuen

retuen は 関数の実行を中止して、呼び出し元の関数に処理を戻します。

使い方の例
for (x = 0; x <= 255; x++) {
    if (x == 200) {
        return;
    }
}

標準関数

Arudino IDE や Arudino Web Editor では、Arudino 独自の標準関数が用意されています。

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

Arudino ボードのピンの入出力設定をしたり、デジタル信号の出力や入力を行うことができます。

関数戻り値説明
pinMode(pin, mode)なし指定したピンのデジタル入出力のモードを切り替える。
void digitalWrite(pin, value)なし指定したピンからデジタル信号を出力する。
int digitalRead(pin)デジタル入力指定したピンのデジタル信号の状態を確認する。

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

Arudino ボードのアナログ入力の基準電圧を設定したり、アナログ信号の出力や入力を行うことができます。

関数戻り値説明
void analogReference(type)なしアナログ入力の基準電圧を設定する。
int analogRead(pin)なし指定したピンのアナログ入力の状態を確認する。
void analogWrite(pin, value)デジタル入力指定したピンからアナログ信号を出力する。

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

デジタル入出力やアナログ入出力の関数以外にも便利な関数が用意されています。

関数戻り値説明
shiftOut(dataPin, clockPin, bitOrder, value)なし1バイト分のデータを1ビットずつ出力する。
shiftIn(dataPin, clockPin, bitOrder)1バイト分のデータ1ビットずつの入力データから1バイトのデータを取得する。
pulseIn(pin, value, timeout)パルスの長さ指定したピンに入力されたパルスを検出する。
tone(pin, frequency)なし指定した周波数の矩形波を生成する。
noTone(pin)なしtone()で開始された矩形波の生成を停止する。

Time(時間)

Time 関数はプログラム実行中に指定時間待機したり、経過時間を計測することができます。

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

Math(計算)

数値の比較、絶対値、べき乗、平方根などの計算をすることができます。

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

 

以上、最後まで読んで頂きありがとうございました。

プログラミングを学習したいなら…

プログラミングスキルを身に付けるなら、プログラミングを効率良く学べる
プログラミングスクール」がオススメです。

特にこんな方にオススメ!!
これからエンジニアを目指したい
プログラミングの専門性を高めたい
プログラミングを学んで副業をしたい
エンジニアに転職して年収をアップさせたい

プログラミングを触ったことがない未経験からでも、プログラミングスクールで学習すれば、エンジニアへ就職・転職することも可能です。

あなたの「行動力」と「やる気」で、あなたの人生を大きく変えるチャンスになることでしょう。

プログラミングスクールに興味がある方は是非チェックしてみてください。

> プログラミングを学ぶ <

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA