AVR-IoT WA開発ボードのLight sensor「TEMT6000 」、 Temperature sensor「MCP9808」からセンサー情報を入力します。プログラムは、「Microchip AVR-IoT WAのArduino化」で構築した開発環境を用いて開発します。
Temperature sensor「MCP9808」ライブラリのインストール
メニューから「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を開き、次のように「Adafruit_MCP9808」 をインストールします。
オンボードプログラムの作成
オンボード上のLight sensor「TEMT6000 」と Temperature sensor「MCP9808」のプログラム「AVR-IOOnboard.ino」を次のように作成します。
AVR-IOOnboard.ino
#include "Adafruit_MCP9808.h"
#define LIGHTSENSORPIN (PIN_PD5)
#define MCP9808_ADDR (0x18)
Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
void setup() {
Serial2.begin(9600);
Serial2.println("AVR-IOT WA test");
// Make sure the sensor is found, you can also pass in a different i2c
// address with tempsensor.begin(0x19) for example, also can be left in blank for default address use
// Also there is a table with all addres possible for this sensor, you can connect multiple sensors
// to the same i2c bus, just configure each sensor with a different address and define multiple objects for that
// A2 A1 A0 address
// 0 0 0 0x18 this is the default address
// 0 0 1 0x19
// 0 1 0 0x1A
// 0 1 1 0x1B
// 1 0 0 0x1C
// 1 0 1 0x1D
// 1 1 0 0x1E
// 1 1 1 0x1F
if (!tempsensor.begin(0x18)) {
Serial.println("Couldn't find MCP9808! Check your connections and verify the address is correct.");
while (1);
}
Serial.println("Found MCP9808!");
tempsensor.setResolution(3); // sets the resolution mode of reading, the modes are defined in the table bellow:
// Mode Resolution SampleTime
// 0 0.5°C 30 ms
// 1 0.25°C 65 ms
// 2 0.125°C 130 ms
// 3 0.0625°C 250 ms
}
void loop() {
int data;
float light_value;
data = analogRead(LIGHTSENSORPIN);
light_value = data / 1023.0 * 100;
Serial2.println("Light intensity: ");
Serial2.println( light_value);
Serial2.println("wake up MCP9808.... "); // wake up MCP9808 - power consumption ~200 mikro Ampere
tempsensor.wake(); // wake up, ready to read!
// Read and print out the temperature, also shows the resolution mode used for reading.
Serial2.print("Resolution in mode: ");
Serial2.println (tempsensor.getResolution());
float c = tempsensor.readTempC();
float f = tempsensor.readTempF();
Serial2.print("Temp: ");
Serial2.print(c, 4); Serial2.print("*C\t and ");
Serial2.print(f, 4); Serial2.println("*F.");
delay(2000);
Serial2.println("Shutdown MCP9808.... ");
tempsensor.shutdown_wake(1); // shutdown MSP9808 - power consumption ~0.1 mikro Ampere, stops temperature sampling
Serial2.println("");
delay(200);
}
オンボードプログラムの実行
作成したオンボード上のLight sensor「TEMT6000 」と Temperature sensor「MCP9808」のプログラム「AVR-IOOnboard.ino」を実行します。つぎのメッセージがシリアルモニタに表示されます。

