Arduino 日本語リファレンス


Arduino言語

Arduino言語はC/C++をベースにしており、C言語のすべての構造と、いくつかのC++の機能をサポートしています。また、AVR Libcにリンクされていて、その関数を利用できます。

setup()
loop()

制御文

if
if else
switch case
for
while
do while
break
continue
return
goto

基本的な文法

; (セミコロン)
{} (波カッコ)
コメント
#define
#include

算術演算子

+ - * /
% (剰余)
= (代入)

比較演算子

== != < > <= >=

ブール演算子

&& (論理積)
|| (論理和)
! (否定)

ビット演算子

ビット演算子は変数をビットのレベルで計算するためのものです。ビット演算子によって、広範囲なプログラミング上の問題を解決することができます。

& (AND)
| (OR)
^ (XOR)
~ (NOT)
<< (左シフト) >> (右シフト)
ポート操作

複合演算子

++ (加算) -- (減算)
+= -= *= /=
&= (AND)
|= (OR)

データ型

boolean
char
unsigned char
byte
int (整数型)
unsigned int (符号なし整数型)
word
long (long整数型)
unsigned long (符号なしlong整数型)
float (浮動小数点型)
double (倍精度浮動小数点型)
文字列(配列)
配列
void

Stringクラス

Stringクラスはarduino-0019からコアに加えられた機能で、配列型の文字列よりも複雑な連結、追加、置換、検索といった操作が可能です。そのかわり、配列型より多くのメモリを消費します。ダブルクオーテーションマークで囲まれた文字列定数はこれまでどおり配列として処理されます。

String()
関数
演算子

定数

定数はプログラムのなかで値が変化しない変数と考えるといいでしょう。Arduino言語であらかじめ定義されている定数と、ユーザーが自分で定義して使う定数があります。おもにプログラムのメンテナンス性を高めるために使われます。

true/false (論理レベルを定義する定数)
HIGH/LOW (ピンのレベルを定義する定数)
INPUT/OUTPUT (デジタルピンを定義する定数)
整数の定数
浮動小数点数の定数

変数の応用

変数のスコープ
Static
volatile
const
PROGMEM
Cast
sizeof

デジタル入出力関数

pinMode(pin, mode)
digitalWrite(pin, value)
digitalRead(pin)

アナログ入出力関数

analogRead(pin)
analogWrite(pin, value)
analogReference(type)
analogReadResolution(bits)
analogWriteResolution(bits)

その他の入出力関数

shiftOut(dataPin, clockPin, bitOrder, value)
shiftIn(dataPin, clockPin, bitOrder)
pulseIn(pin, value, timeout)
tone(pin, frequency)
noTone(pin)

時間に関する関数

millis()
micros()
delay(ms)
delayMicroseconds(us)

数学的な関数

min()、max()、abs()の各関数は実装の都合により、カッコ内で関数を使ったり変数を操作することができません。たとえば、min(a++, 100)とすると正しい答が得られません。かわりに、次のようにしてください。
 a++;
 min(a, 100);

min(x, y)
max(x, y)
abs(x)
constrain(x, a, b)
map(value, fromLow, fromHigh, toLow, toHigh)
pow(base, exponent)
sqrt(x)

三角関数

sin(rad)
cos(rad)
tan(rad)

乱数に関する関数

randomSeed(seed)
random(min, max)

ビットとバイトの操作

lowByte()
highByte()
bitRead()
bitWrite()
bitSet()
bitClear()
bit()

外部割り込み

attachInterrupt(interrupt, function, mode)
detachInterrupt(interrupt)

割り込み

interrupts()
noInterrupts()

シリアル通信

ArduinoボードはSerialという名前で参照される1組のシリアルポート(RXとTX)を持っています。Arduino Megaは4組のポートを持っていて、SerialのほかにSerial1、Serial2、Serial3が使用可能です。

Serial.begin(speed)
Serial.end()
Serial.available()
Serial.read()
Serial.peek()
Serial.flush()
Serial.print(data, format)
Serial.println(data, format)
Serial.write(val)

標準ライブラリ

Arduinoのライブラリは、あらかじめIDEに付属する標準のライブラリと、コミュニティーのメンバーから寄稿されたライブラリの2種類があります。寄稿されたものはユーザーが個々にダウンロードしてインストールする必要があります。

ライブラリの使い方

EEPROM

Arduinoボードが搭載するマイクロコントローラはEEPROMと呼ばれるメモリを持っています。EEPROMは(まるで小さなハードディスクのように)電源を切っても内容が消えません。その容量は機種によって異なり、ATmega168は512バイト、ATmega328は1KB、ATmega1280とATmega2560は4KBです。このライブラリはEEPROMに対する書き込みと読み込みを可能にします。

EEPROM.read(address)
EEPROM.write(address, value)

SoftwareSerial

ソフトウェアシリアルライブラリはArduinoボードの0〜1番以外のピンを使ってシリアル通信を行うために開発されました。本来ハードウェアで実現されている機能をソフトウェアによって複製したので、SoftwareSerialと名付けられました。

ソフトウェアシリアルのサンプルコード
SoftwareSerial(rxPin, txPin)
SoftwareSerial: begin(speed)
SoftwareSerial: available()
SoftwareSerial: isListening()
SoftwareSerial: overflow()
SoftwareSerial: read()
SoftwareSerial: print(data)
SoftwareSerial: println(data)
SoftwareSerial: listen()
SoftwareSerial: write(data)

Stepper

ユニポーラおよびバイポーラのステッパモータをコントロールするためのライブラリです。このライブラリを利用するには、ステッパモータと制御のための適切なハードウェアが必要です。

Stepperライブラリのサンプルコード
Stepper(steps, pin1, pin2, pin3, pin4)
Stepper: setSpeed(rpms)
Stepper: step(steps)

Wire

2線インタフェイス(TWI/I2C)のデバイスとの通信をサポートするライブラリです。

概要
Wire.begin(address)
Wire.requestFrom(address, count)
Wire.beginTransmission(address)
Wire.endTransmission()
Wire.write(value)
Wire.available()
Wire.read()
Wire.onReceive(handler)
Wire.onRequest(handler)

SPI

Serial Peripheral Interface (SPI)バスに接続されたデバイスとの通信に使用します。

概要
SPI.begin()
SPI.end()
SPI.setBitOrder(order)
SPI.setClockDivider(divider)
SPI.setDataMode(mode)
SPI.transfer(value)

Servo

サーボモータをコントロールします。

概要
attach(pin)
write(angle)
writeMicroseconds(uS)
read()
attached()
detach()

Firmata

ホストコンピュータ上のソフトウェアとの通信に用いるシリアルプロトコルです。

メソッド
コールバック関数
サンプルコード

LiquidCrystal

このライブラリを使うことで、Hitachi HD44780とその互換チップセットをベースにしたLCDを制御できます。4ビットと8ビット両方のモードをサポートしています。

LiquidCrystal()
begin(cols, rows)
clear()
home()
setCursor(col, row)
write(data)
print(data)
cursor()
noCursor()
blink()
noBlink()
display()
noDisplay()
scrollDisplayLeft()
scrollDisplayRight()
autoscroll()
noAutoscroll()
leftToRight()
rightToLeft()
createChar(num, data)

Ethernetライブラリ

Arduino Ethernet Shieldを使ってArduinoボードをインターネットに接続するときに使うライブラリです。サーバ(外部からの接続)、クライアント(外へ向かう接続)の両方に対応できます。

Ethernetクラス
begin(mac, ip)
localIP()
maintain()

Serverクラス
EthernetServer(port)
begin()
available()
write(data)
print(data)
println(data)

Clientクラス
EthernetClient()
connected()
connect(server, port)
write(data)
print(data)
println(data)
available()
read()
flush()
stop()

SD Library

SDカードの読み書きを可能にします。

概要

SD class
SD.begin()
SD.exists()
SD.mkdir()
SD.open()
SD.remove()
SD.rmdir()

File class
available()
close()
flush()
peek()
position()
print()
println()
seek()
size()
read()
write()
isDirectory()
openNextFile()
rewindDirectory()

寄稿されたライブラリ

Arduinoコミュニティのメンバーから寄稿されたライブラリが数多く存在し、ユーザーは自分のスケッチでそれらを利用できます。ここではそのうちのごく一部を紹介します。

MsTimer2(ミリ秒単位で指定するタイマ)
ServoTimer1(サーボモータのドライブ)
CapSense (静電容量センサ)
TLC5940 (16ch/12bit PWMコントローラ)
古い文字列処理ライブラリ

Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [Arduino wiki]