今から始める電子工作 ⑯ I2Cバス その1-3 温湿度センサSHT45 + OLEDグラフィック・ボード

 前前回、AdafruitのSHT45ボード、SparkFanのOLEDグラフィック・ボードをArduino UNO R4 WiFi マイコン・ボードにつなぎました。どちらのデバイスも、そのメーカのライブラリを利用しました。

  • AdafruitのSHT45ボード AdafruitのAdafruit SHT4x Library
  • SparkFanのOLEDグラフィック・ボード SparkFanのSparkFun Qwiic OLED Adruino Library 

 前回は、グラフィック・ボードのライブラリを変更しました。

  • AdafruitのSHT45ボード AdafruitのAdafruit SHT4x Library
  • SparkFanのOLEDグラフィック・ボード AdafruitのOLEDライブラリ、グラフィック・ライブラリ類

 今回は、SHT45用にSensirionの純正ライブラリを利用します。ボードとライブラリの関係は次のようになります。

  • AdafruitのSHT45ボード Sensirion I2C SHT4xライブラリ
  • SparkFanのOLEDグラフィック・ボード AdafruitのOLEDライブラリ、グラフィック・ライブラリ類

環境

  • Arduino IDE;2.3.4
  • Windows11;23H2
  • Arduino UNO R4 WiFi 

接続

 前回、前々回と同じです。

温湿度センサSHT45用ライブラリ

 ArduinoIDEのライブラリの検索欄に「Sensirion SHT4x」と入れて出てきたSensirion I2C SHT4xライブラリをインストールします。

 途中、追加のライブラリをというパネルが出るので、全てをインストールを選びます。

サンプルのスケッチ

  スケッチ例 -> Sensirion I2C SHT4x -> exampleUsageを選びます。

 QWIICコネクタを使うので、60と61行の2か所修正します。

    Wire1.begin();
    sensor.begin(Wire1, SHT40_I2C_ADDR_44);

 実行します。

測定値をOLEDグラフィック・ディスプレイに表示

 前回の、AdafruitのOLEDライブラリ、グラフィック・ライブラリ類の記述を追加します。

/*
 * Generator:     sensirion-driver-generator 0.40.0
 * Product:       sht4x
 * Model-Version: 2.1.1
 * Copyright (c) 2024, Sensirion AG
 */

#include <Arduino.h>
#include <SensirionI2cSht4x.h>
#include <Wire.h>
#include <Adafruit_SH110X.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h> // macro definitions // make sure that we use the proper definition of NO_ERROR #ifdef NO_ERROR #undef NO_ERROR #endif #define NO_ERROR 0 SensirionI2cSht4x sensor; Adafruit_SSD1306 display(128, 64, &Wire1); static char errorMessage[64]; static int16_t error; void setup() { Serial.begin(115200); delay(1000); Wire1.begin(); sensor.begin(Wire1, SHT40_I2C_ADDR_44); sensor.softReset(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } Serial.println("OLED begun"); display.display(); delay(1000); // Clear the buffer. display.clearDisplay(); display.display(); display.setRotation(0); display.setFont(&FreeSans9pt7b); display.setTextColor(SH110X_WHITE); } void loop() { float aTemperature = 0.0; float aHumidity = 0.0; delay(20); error = sensor.measureLowestPrecision(aTemperature, aHumidity); if (error != NO_ERROR) { Serial.print("Error trying to execute measureLowestPrecision(): "); errorToString(error, errorMessage, sizeof errorMessage); Serial.println(errorMessage); return; } Serial.print("aTemperature: "); Serial.print(aTemperature); Serial.print("\t"); Serial.print("aHumidity: "); Serial.print(aHumidity); Serial.println(); display.clearDisplay(); display.setCursor(0, 20); display.println("SHT45 Sensor"); display.setCursor(0, 40); display.print("Temp: "); display.print(aTemperature,1); display.println(" 'C"); display.print("Hum: "); display.print(aHumidity,1); display.println(" %"); display.display(); yield(); delay(1000); }

 実行します。

前へ

今から始める電子工作 ⑮ I2Cバス その1-2 温湿度センサSHT45 + OLEDグラフィック・ボード

次へ

今から始める電子工作 ⑰ I2Cバス その2-1 温湿度センサSHT45、Wireライブラリ