Wow. I have to say I never thought I was going to end up writing Python programs for fun and (no) profit. That is until I got a Raspberry Pi Sense Hat, at least.
The specific project I’m working on is a remote temperature monitor for an unoccupied site that I’m responsible for, to allow us to react if the furnace goes out there before the pipes burst.
Given the Python library for the Sense Hat, it was basically trivial to build a program that would watch for the temperature to go outside a given range, and send email to me if it did. It took a couple of hours longer than I expected it would to write, but my excuse is that it really was my first Python program. 🙂 (Also, it seems there are quirks around getting accurate temperature readings from the SH, so I’m still tweaking the program, but it’s basically working.)
Given the 8×8 display on the Hat, I even managed to provide a continuous temperature display. 8×8 is not enough pixels to make something look good, so you end up with something like this (as drawn by the Sense Hat Emulator developer tool):
Ugly but readable. For the inquisitive, here’s the “McQ’s First Python Program” version of a function to display the digits:
########################################################### # Display two digits on the sense hat. # Digit patterns digits0_9 = [   [2, 9, 11, 17, 19, 25, 27, 33, 35, 42], # 0   [2, 9, 10, 18, 26, 34, 41, 42, 43],   # 1   [2, 9, 11, 19, 26, 33, 41, 42, 43],   # 2   [1, 2, 11, 18, 27, 35, 41, 42],     # 3   [3, 10, 11, 17, 19, 25, 26, 27, 35, 43], # 4   [1, 2, 3, 9, 17, 18, 27, 35, 41, 42],  # 5   [2, 3, 9, 17, 18, 25, 27, 33, 35, 42],  # 6   [1, 2, 3, 9, 11, 19, 26, 34, 42],    # 7   [2, 9, 11, 18, 25, 27, 33, 35, 42],   # 8   [2, 9, 11, 17, 19, 26, 27, 35, 43]    # 9 ]    def display_two_digits (a_number, color):   global digits0_9   black = (0, 0, 0)      if a_number < 0:     negative = True     a_number = abs(a_number)   else:     negative = False        first_digit = int(int(a_number / 10) % 10)   second_digit = int(a_number % 10)  # set pixels for the two digits  pixels = [black for i in range(64)]  digit_glyph = digits0_9[first_digit]  for i in range(0, len(digit_glyph)):    pixels[digit_glyph[i]] = color  digit_glyph = digits0_9[second_digit]  for i in range(0, len(digit_glyph)):    pixels[digit_glyph[i]+4] = color     # set pixels for a minus sign for negatives  if negative:    pixels[56] = color    pixels[57] = color    pixels[58] = color     # set bottom right pixel if number is more than 2 digits  if a_number > 99:    pixels[63] = color     # display the result  sense.set_pixels(pixels)
Of course, you pass in a color for the digits to show, so when the temperature is outside the range, you can show it in red. 😉
Anyway, feel free to point out all the noob Python programming mistakes. I’m always happy to improve.