public async Task initSenseHat() { // Create sensehat object senseHat = await SenseHatFactory.Singleton.Create(); // Init font tinyFont = new TinyFont(); // Init display display = senseHat.Display; // Get a copy of the rainbow colors. senseHat.Display.Reset(); // Recreate the font from the serialized bytes. BwFont font = BwFont.Deserialize(FontBytes); // Get the characters to scroll. IEnumerable<BwCharacter> characters = font.GetChars("Error"); // Create the character renderer. BwCharacterRenderer characterRenderer = new BwCharacterRenderer(GetCharacterColor); // Create the text scroller. textScroller = new TextScroller<BwCharacter>(senseHat.Display, characterRenderer, characters); // Update forecast for first time getWeather(currentCity); // Check joystick every 100 ms joystickPollTimer = ThreadPoolTimer.CreatePeriodicTimer(pollJoystick, TimeSpan.FromMilliseconds(50)); // Check sensor every 2 s updateSensorsTimer = ThreadPoolTimer.CreatePeriodicTimer(updateSensors, TimeSpan.FromSeconds(2)); // Get updated weather every 1 minute forecastUpdateTimer = ThreadPoolTimer.CreatePeriodicTimer(updateForecast, TimeSpan.FromMinutes(1)); }
public override void Run() { var tinyFont = new TinyFont(); ISenseHatDisplay display = SenseHat.Display; while (true) { SenseHat.Sensors.HumiditySensor.Update(); if (SenseHat.Sensors.Temperature.HasValue) { int temperature = (int)Math.Round(SenseHat.Sensors.Temperature.Value); string text = temperature.ToString(); if (text.Length > 2) { // Too long to fit the display! text = "**"; } display.Clear(); tinyFont.Write(display, text, Colors.White); display.Update(); // Sleep quite some time; the temperature usually change quite slowly... Sleep(TimeSpan.FromSeconds(5)); } else { // Rapid update until there is a temperature reading. Sleep(TimeSpan.FromSeconds(0.5)); } } }