I2C接続のデジタル温湿度センサーのサンプルを紹介します。
ハードウェア
・Freenove ESP32-S3-WROOM Board or Espressif ESP32-S3-DevKitC
・Adafruit SHT40
配線
導入パッケージ
・nanoFramework.Hardware.Esp32
・nanoFramework.System.Device.I2c
プログラミング
Program.cs
using nanoFramework.Hardware.Esp32;
using System;
using System.Device.I2c;
using System.Threading;
namespace ESP32S3_SHT40
{
public class Program
{
public static void Main()
{
Configuration.SetPinFunction(8, DeviceFunction.I2C1_DATA);
Configuration.SetPinFunction(9, DeviceFunction.I2C1_CLOCK);
var device = I2cDevice.Create(new I2cConnectionSettings(
1,
0x44,
I2cBusSpeed.FastMode));
while (true)
{
device.WriteByte(0xfd);
Thread.Sleep(10);
byte[] data = new byte[6];
device.Read(data);
ushort rawTemp = (ushort)(data[0] << 8 | data[1]);
double temp = -45 + 175 * (rawTemp / 65535.0);
ushort rawHum = (ushort)(data[3] << 8 | data[4]);
double hum = -6 + 125 * (rawHum / 65535.0);
Console.WriteLine($"Temp: {temp:F2}℃, Hum: {hum:F2}%");
Thread.Sleep(1000);
}
}
}
}