我试图从。net流重现物联网示例,但由于我的温度传感器是一个模块并具有数据引脚,我试图这样做,我如何找到类似构建的示例。
我想知道的是,类DHTxx。Dht11没有读方法。所以我不知道如何积极地读取数据,或者如果它继续阅读,如果连接正确的方式,我只需要从属性中获取最新值。
这里是我的代码:
int _pinSensor = 4;
using GpioController gpio = new();
using Dht11 sensor = new(_pinSensor, gpioController: gpio);
var temperature = sensor.Temperature.DegreesCelsius;
var humidity = sensor.Humidity.Percent;
var lines = new[]
{
"",
"DEVICE STAUTS",
"-------------",
$"LED: {(_ledOn ? "ON" : "OFF")}",
$"Temperature: {temperature:0.#}°C",
$"Humidity: {humidity:#.##}%",
"",
"Enter command (status/led/exit)"
};
Console.WriteLine(string.Join(Environment.NewLine, lines));
我将电压连接到+,接地连接到-,数据引脚连接到Gpio4引脚。
如果有人知道如何正确使用这个类,我将非常感激。
干杯garcipat
您需要使用Dht11类的TryReadHumidity
和TryReadTemperature
方法。此方法返回一个bool值,您可以在其中验证传感器的成功读取。但是,您还将收到RelativeHumidity
结构体和Temperature
结构体作为方法的输出参数。
的例子:
Dht11 dht11 = new Dht11(26);
if (!dht11.TryReadHumidity(out RelativeHumidity humidity))
{
_logger.LogError("Can't read humidity");
return Task.CompletedTask;
}
if (!dht11.TryReadTemperature(out Temperature temperature))
{
_logger.LogError("Can't read temperature");
return Task.CompletedTask;
}
_logger.LogInformation("Humidity: {Humidity}%", humidity.Percent);
_logger.LogInformation("Temperature: {Temperature}C", temperature.DegreesCelsius);