GR-KURUMIでI2C温度センサ(STTS751)を読んでみた
GR-KURUMI はI2CのSlaveになれる筈なのだが、今のところ成功していない。とりあえず、Masterで確認してみる事にした。以前RPiで読んだ事がある温度センサーSTTS751を接続してみる事にした。RPiの記事は以下の通り。
Raspberry Pi で温度センサ(STTS751)を読んでみた - 完全に個人的な備忘録
一度、やった事があるので、GR-KURUMI でも特に問題なく読めた。
ソースは以下の通り。因みに、LEDのHIGHとLOWが逆である。動作に影響はないけど。
/*GR-KURUMI Sketch Template Version: V1.04*/ #include <RLduino78.h> #include <Wire.h> // Addr - tied to GND. #define STTS751_ADDR 0x39 // Pin 22,23,24 are assigned to RGB LEDs. int led_red = 22; // LOW active int led_green = 23; // LOW active int led_blue = 24; // LOW active // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. Serial.begin(115200); pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); pinMode(led_blue, OUTPUT); // turn the LEDs on, glow white. digitalWrite(led_red, LOW); digitalWrite(led_green, LOW); digitalWrite(led_blue, LOW); } int readByte(int addr) { Wire.beginTransmission(STTS751_ADDR); Wire.write((uint8_t) addr); Wire.endTransmission(); Wire.requestFrom(STTS751_ADDR, 1); if (Wire.available()) { digitalWrite(led_green, HIGH); return Wire.read(); } else { digitalWrite(led_red, HIGH); return -1; } } // the loop routine runs over and over again forever: void loop() { int hi, lo; char szBuf[128]; digitalWrite(led_red, LOW); digitalWrite(led_green, LOW); digitalWrite(led_blue, LOW); delay(500); Wire.begin(); hi = readByte(0); lo = readByte(2); if (128 <= hi) { hi -= 256; } sprintf(szBuf, "%f", hi + (lo >> 4) * 0.0625); Serial.println(szBuf); delay(500); }