Esempio n. 1
0
        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));
        }
Esempio n. 2
0
		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));
				}
			}
		}