static void Main(string[] args) { Console.WriteLine("You are modified"); using Lcd2004 lcdDisplay = new Lcd2004(22, 17, new int[] { 25, 24, 23, 18 }); using Bmp280 tempSensor = new Bmp280(I2cDevice.Create(new I2cConnectionSettings(1, 0x77))); tempSensor.SetTemperatureSampling(Sampling.UltraHighResolution); tempSensor.SetPowerMode(Bmx280PowerMode.Normal); using CancellationTokenSource cts = new CancellationTokenSource(); Task workTask = Task.Run(() => DoWorkAsync(lcdDisplay, tempSensor, cts.Token), cts.Token); Console.WriteLine("Press Enter to stop the program..."); // Run until user adds input Console.ReadLine(); cts.Cancel(); workTask.Wait(5000); lcdDisplay.Clear(); }
static async Task Main(string[] args) { Console.WriteLine("Hello Bmp280!"); //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, Bmp280.DefaultI2cAddress); var i2cDevice = new UnixI2cDevice(i2cSettings); var i2CBmp280 = new Bmp280(i2cDevice); using (i2CBmp280) { while (true) { ////set mode forced so device sleeps after read i2CBmp280.SetPowerMode(PowerMode.Forced); //set samplings i2CBmp280.SetTemperatureSampling(Sampling.UltraLowPower); i2CBmp280.SetPressureSampling(Sampling.UltraLowPower); //read values Temperature tempValue = await i2CBmp280.ReadTemperatureAsync(); Console.WriteLine($"Temperature {tempValue.Celsius}"); double preValue = await i2CBmp280.ReadPressureAsync(); Console.WriteLine($"Pressure {preValue}"); double altValue = await i2CBmp280.ReadAltitudeAsync(defaultSeaLevelPressure); Console.WriteLine($"Altitude: {altValue}"); Thread.Sleep(1000); //set higher sampling i2CBmp280.SetTemperatureSampling(Sampling.LowPower); Console.WriteLine(i2CBmp280.ReadTemperatureSampling()); i2CBmp280.SetPressureSampling(Sampling.UltraHighResolution); Console.WriteLine(i2CBmp280.ReadPressureSampling()); //set mode forced and read again i2CBmp280.SetPowerMode(PowerMode.Forced); //read values tempValue = await i2CBmp280.ReadTemperatureAsync(); Console.WriteLine($"Temperature {tempValue.Celsius}"); preValue = await i2CBmp280.ReadPressureAsync(); Console.WriteLine($"Pressure {preValue}"); altValue = await i2CBmp280.ReadAltitudeAsync(defaultSeaLevelPressure); Console.WriteLine($"Altitude: {altValue}"); Thread.Sleep(5000); //set sampling to higher i2CBmp280.SetTemperatureSampling(Sampling.UltraHighResolution); Console.WriteLine(i2CBmp280.ReadTemperatureSampling()); i2CBmp280.SetPressureSampling(Sampling.UltraLowPower); Console.WriteLine(i2CBmp280.ReadPressureSampling()); } } }