概要
3軸加速度、気圧、地磁気、近接照度、カラー、磁気、温度、紫外線の8種類のセンサーがお試しできるロームセンサー評価キットを動かします。ここではWebコンパイラを使った例を紹介します。
準備
GR-PEACH、USBケーブル(マイクロBタイプ)の他、主役となるロームセンサー評価キットを準備します。
ライブラリの適用
ダウンロード
以下のファイルはロームセンサー評価キットのページから入手したファイルをzip化したものです。3軸加速度、気圧、近接照度、カラー、温度、紫外線センサー用のライブラリが含まれています。
※なぜか地磁気と磁気センサーのサンプルはダウンロードできませんでしたので(2016年8月現在)、別途ロームさんのページから入手してください。
以下のリンクをクリックするとダウンロードが始まります。
- Rohm Sensor Libraries (ZIP)
Webコンパイラへのアップロード
WebコンパイラでGR-PEACHのプロジェクトを作成し、プロジェクトルートにzipのままアップロードします。Webコンパイラを初めて使う方は「Webコンパイラでスケッチ」を参照してください。
以下のようにプロジェクトにrohm-libフォルダができ、ライブラリファイルが追加されます。これでWebコンパイラでのライブラリ適用は完了です。
ハードウェアの接続
ロームセンサー評価キットに以下の5種類のセンサーを接続し、J15のジャンパー設定を3Vにします。つまり3V系で駆動できるものをセンサーを接続しています。 ※紫外線センサーも3Vで駆動できますが、温度センサーと同時に使用した場合、温度センサーの値が異常になってしまったため、今回は乗せていません。(analogReadライブラリの問題かもしれません)
GR-PEACHにキットを接続して、PCに接続します。これでハードウェアの接続は完了です。
サンプル
5つのセンサーから読んだ値をTera Termなどのシリアルモニターに出力するサンプルです。Webコンパイラのgr_sketch.cppにコピーしてビルドし、GR-PEACHに書き込んでください。
#include <Arduino.h>
#include <Wire.h>
#include <KX022.h>
#include <BM1383GLV.h>
#include <RPR-0521RS.h>
#include <BH1745NUC.h>
#include <BD1020.h>
#include <ML8511A.h>
KX022 kx022(KX022_DEVICE_ADDRESS_1E); //Accelerometer
BM1383GLV bm1383; //Pressure Sensor
RPR0521RS rpr0521rs; //PS/ALS Sensor
BH1745NUC bh1745nuc(BH1745NUC_DEVICE_ADDRESS_39); //Color Sensor
BD1020 bd1020; //Temperature Sensor
ML8511A ml8511a; //UV Sensor
int tempout_pin = 14; // A0
int uvout_pin = 16; // A2
void setup() {
Serial.begin(9600);
Wire.begin();
kx022.init();
bm1383.init();
rpr0521rs.init();
bh1745nuc.init();
bd1020.init(tempout_pin);
ml8511a.init(uvout_pin);
}
void loop() {
byte rc;
float acc[3], press, als_val, temp, uv;
unsigned short ps_val, rgbc[4];
byte near_far;
//Accelerometer
rc = kx022.get_val(acc);
if (rc == 0) {
Serial.print(" x= ");
Serial.print(acc[0]);
Serial.print(" y= ");
Serial.print(acc[1]);
Serial.print(" z= ");
Serial.print(acc[2]);
}
//Pressure Sensor
rc = bm1383.get_val(&press);
if (rc == 0) {
Serial.print(" ");
Serial.print(press);
Serial.print("[hPa]");
}
//PS/ALS Sensor
rc = rpr0521rs.get_psalsval(&ps_val, &als_val);
if (rc == 0) {
Serial.print(" ");
Serial.print(ps_val);
Serial.print("[cnt]");
near_far = rpr0521rs.check_near_far(ps_val);
Serial.print("->");
if (near_far == RPR0521RS_NEAR_VAL) {
Serial.print(F(" Near"));
} else {
Serial.print(F(" Far"));
}
if (als_val != RPR0521RS_ERROR) {
Serial.print(" ");
Serial.print(als_val);
Serial.print(F("[lx]"));
}
}
//Color Sensor
rc = bh1745nuc.get_val(rgbc);
if (rc == 0) {
Serial.print(" R:");
Serial.print(rgbc[0]);
Serial.print(" G:");
Serial.print(rgbc[1]);
Serial.print(" G:");
Serial.print(rgbc[2]);
Serial.print(" C:");
Serial.print(rgbc[3]);
}
//Temperature Sensor
bd1020.get_val(&temp);
Serial.print(" ");
Serial.print(temp);
Serial.print("[C]");
Serial.println();
delay(100);
}
正常に動作すると以下のようにシリアルモニターにセンサー値が表示されます。