Arduino言語Arduino言語はC/C++をベースにしており、C言語のすべての構造と、いくつかのC++の機能をサポートしています。また、AVR Libcにリンクされていて、その関数を利用できます。setup() loop() 制御文ifif else switch case for while do while break continue return goto 基本的な文法; (セミコロン){} (波カッコ) コメント #define #include 算術演算子+ - * /% (剰余) = (代入) 比較演算子== != < > <= >=ブール演算子&& (論理積)|| (論理和) ! (否定) ビット演算子ビット演算子は変数をビットのレベルで計算するためのものです。ビット演算子によって、広範囲なプログラミング上の問題を解決することができます。& (AND) | (OR) ^ (XOR) ~ (NOT) << (左シフト) >> (右シフト) ポート操作 複合演算子++ (加算) -- (減算)+= -= *= /= &= (AND) |= (OR) データ型booleanchar unsigned char byte int (整数型) unsigned int (符号なし整数型) word long (long整数型) unsigned long (符号なしlong整数型) float (浮動小数点型) double (倍精度浮動小数点型) 文字列 配列 void 定数定数はプログラムのなかで値が変化しない変数と考えるといいでしょう。Arduino言語であらかじめ定義されている定数と、ユーザーが自分で定義して使う定数があります。おもにプログラムのメンテナンス性を高めるために使われます。true/false (論理レベルを定義する定数) HIGH/LOW (ピンのレベルを定義する定数) INPUT/OUTPUT (デジタルピンを定義する定数) 整数の定数 浮動小数点数の定数 変数の応用Staticvolatile const PROGMEM Cast sizeof デジタル入出力関数pinMode(pin, mode)digitalWrite(pin, value) digitalRead(pin) アナログ入出力関数analogRead(pin)analogWrite(pin, value) analogReference(type) その他の入出力関数shiftOut(dataPin, clockPin, bitOrder, value)pulseIn(pin, value, timeout) tone() noTone() 時間に関する関数millis()micros() delay(ms) delayMicroseconds(us) 数学的な関数この章の「関数」の多くは、マクロとして定義されています。定義の詳細を知りたい場合は、ソースファイル"Wiring.h"を参照してください。min(x, y) max(x, y) abs(x) constrain(x, a, b) map(value, fromLow, fromHigh, toLow, toHigh) pow(base, exponent) sq(x) 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が使用可能です。begin(int speed) end() available() read() write() flush() print(data, format) println(data, format) | 公式ライブラリArduinoのライブラリは、公式ライブラリと、コミュニティーのメンバーから寄稿されたライブラリの2種類があります。公式ライブラリはあらかじめArduino IDEにインストールされています。寄稿されたものはユーザーが個々にダウンロードしてインストールする必要があります。ライブラリの使い方 EEPROMArduinoボードのマイクロコントローラは512バイトのEEPROMを搭載しています。EEPROMは(まるで小さなハードディスクのように)電源を切っても消えないメモリです。このライブラリはEEPROMに対する書き込みと読み込みを可能にします。EEPROM.read(address) EEPROM.write(address, value) SoftwareSerialソフトウェアシリアルライブラリはArduinoボードの0〜1番以外のピンを使ってシリアル通信を行うために開発されました。本来ハードウェアで実現されている機能をソフトウェアによって複製したので、SoftwareSerialと名付けられました。ソフトウェア・シリアルのサンプルコード SoftwareSerial(rxPin, txPin) SoftwareSerial:begin(speed) SoftwareSerial:read() SoftwareSerial: print(data) SoftwareSerial: println(data) Stepperユニポーラおよびバイポーラのステッパモータをコントロールするためのライブラリです。このライブラリを利用するには、ステッパモータと制御のための適切なハードウェアが必要です。Stepperライブラリのサンプルコード Stepper(steps, pin1, pin2, pin3, pin4) Stepper: setSpeed(rpms) Stepper: step(steps) WireこのライブラリはI2C/TWIデバイスとの通信を可能にします。ArduinoボードのSDA(データライン)はアナログ入力ピン4、SCL(クロックライン)はアナログ入力ピン5です。I2Cアドレスには7ビットと8ビットのバージョンがあります。7ビットでデバイスを特定し、8番目のビットで書き込みか読み出しかを指定します。Wireライブラリは常に7ビットのアドレスを使用します。8ビットのアドレスを使うサンプルコードやデータシートがあったら、最下位のビットを(1ビットの右シフトで)落とし、0から127の範囲へ変更することになるでしょう。 Wire.begin(address) Wire.requestFrom(address, quantity) Wire.beginTransmission(address) Wire.endTransmission() Wire.send(value) Wire.available() Wire.receive() Wire.onReceive(handler) Wire.onRequest(handler) SPISPIデバイスとの通信を可能にするライブラリです。Arduinoはマスタデバイスとして動作します。概要 begin() end() setBitOrder() setClockDivider() setDataMode() transfer() Servoこのライブラリはサーボモータをコントロールに用います。標準的なサーボでは0から180度の範囲でシャフトの位置(角度)を指定します。連続回転(continuous rotation)タイプの場合は、回転スピードを設定します。Arduino-0017から、ServoライブラリはほとんどのArduinoボードで最大12個のサーボをサポートします。Arduino Megaにおいては最大48個です。Mega以外のボードでは、ピン9と10のPWM機能が無効になります。Megaでは、12個までならPWM機能に影響せず、それ以上のサーボを使う場合はピン11と12のPWMが無効になります。 attach() write() attached() detach() メソッド コールバック関数 サンプルコード LiquidCrystalこのライブラリを使うことで、Hitachi HD44780とその互換チップセットをベースにしたLCDを制御できます。4ビットと8ビット両方のモードをサポートしています。rs、rw、enable_controlのほかに、4本または8本のデータラインが使われます。LiquidCrystal() begin() clear() home() setCursor() write() print() cursor() noCursor() blink() noBlink() display() noDisplay() scrollDisplayLeft() scrollDisplayRight() autoscroll() noAutoscroll() leftToRight() rightToLeft() createChar() Ethernet libraryArduino Ethernet Shieldを使ってArduinoボードをインターネットに接続するときに使うライブラリです。サーバ(外部からの接続)、クライアント(外へ向かう接続)の両方に対応できます。Ethernet class Ethernetクラスはライブラリとネットワークの設定を初期化します。 begin() Server class Serverクラスはサーバを生成し、接続されたクライアントとデータを送受信します。クライアントとは他のコンピュータやデバイスで走っているプログラムのことです。 Server() begin() available() write() print() println() Client class clientクラスはサーバに接続してデータの送受信を行うクライアントを生成します。 Client() connected() connect() write() print() println() available() read() flush() stop() 寄稿されたライブラリArduinoコミュニティのメンバーから寄稿されたライブラリが数多く存在し、ユーザーは自分のスケッチでそれらを利用できます。ここではそのうちのごく一部を紹介します。TextString(注:後継のStringライブラリを使用してください) String(文字列の処理) MsTimer2(ミリ秒単位で指定するタイマ) ServoTimer1(サーボモータのドライブ) CapSense (静電容量センサ) TLC5940 (16ch/12bit PWMコントローラ) |
Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [Arduino wiki]