public async Task <double> GetPressure() { using (var sensor = new Bme280(_bmp280)) { sensor.SetPowerMode(PowerMode.Forced); double pressure = await sensor.ReadPressureAsync(); var temp = await sensor.ReadTemperatureAsync(); var alt = await sensor.ReadAltitudeAsync(pressure); double humid = await sensor.ReadHumidityAsync(); _logger.LogDebug( $"Pressure value: {pressure}; PowerMode: {sensor.ReadPowerMode()}; Temperature: {temp.Celsius}; Altitude: {alt}; Humidity: {humid}"); return(pressure); } }
public ISensorReading ReadSensor() { var result = new HumidityTemperatureAltitudePressureReading(); using (_sensor) { _sensor.SetPowerMode(Bmx280PowerMode.Forced); //set samplings _sensor.SetTemperatureSampling(Sampling.UltraLowPower); _sensor.SetPressureSampling(Sampling.UltraLowPower); _sensor.SetHumiditySampling(Sampling.UltraLowPower); result.Humidity = _sensor.ReadHumidityAsync().Result; result.Temperature = _sensor.ReadTemperatureAsync().Result; result.Altitude = _sensor.ReadAltitudeAsync(defaultSeaLevelPressure).Result; result.Pressure = _sensor.ReadPressureAsync().Result; } return(result); }
static async Task Main(string[] args) { Console.WriteLine("Hello Bme280!"); //bus id on the raspberry pi 3 const int busId = 1; //set this to the current sea level pressure in the area for correct altitude readings const double defaultSeaLevelPressure = 1033.00; var i2cSettings = new I2cConnectionSettings(busId, Bme280.DefaultI2cAddress); var i2cDevice = new UnixI2cDevice(i2cSettings); var i2CBmpe80 = new Bme280(i2cDevice); using (i2CBmpe80) { while (true) { ////set mode forced so device sleeps after read i2CBmpe80.SetPowerMode(PowerMode.Forced); //set samplings i2CBmpe80.SetTemperatureSampling(Sampling.UltraLowPower); i2CBmpe80.SetPressureSampling(Sampling.UltraLowPower); //read values Temperature tempValue = await i2CBmpe80.ReadTemperatureAsync(); Console.WriteLine($"Temperature {tempValue.Celsius}"); double preValue = await i2CBmpe80.ReadPressureAsync(); Console.WriteLine($"Pressure {preValue}"); double altValue = await i2CBmpe80.ReadAltitudeAsync(defaultSeaLevelPressure); Console.WriteLine($"Altitude: {altValue}"); Thread.Sleep(1000); //set higher sampling i2CBmpe80.SetTemperatureSampling(Sampling.LowPower); Console.WriteLine(i2CBmpe80.ReadTemperatureSampling()); i2CBmpe80.SetPressureSampling(Sampling.UltraHighResolution); Console.WriteLine(i2CBmpe80.ReadPressureSampling()); //set mode forced and read again i2CBmpe80.SetPowerMode(PowerMode.Forced); //read values tempValue = await i2CBmpe80.ReadTemperatureAsync(); Console.WriteLine($"Temperature {tempValue}"); preValue = await i2CBmpe80.ReadPressureAsync(); Console.WriteLine($"Pressure {preValue}"); altValue = await i2CBmpe80.ReadAltitudeAsync(defaultSeaLevelPressure); Console.WriteLine($"Altitude: {altValue}"); Thread.Sleep(5000); //set sampling to higher i2CBmpe80.SetTemperatureSampling(Sampling.UltraHighResolution); Console.WriteLine(i2CBmpe80.ReadTemperatureSampling()); i2CBmpe80.SetPressureSampling(Sampling.UltraLowPower); Console.WriteLine(i2CBmpe80.ReadPressureSampling()); } } }