def display_room_climate_data(LCD, temp, hum): LCD.printString('Temp: ' + str(round(temp,1)) + ' øC',4) LCD.printString('Hum: ' + str(round(hum,1)) + ' %',5)
def main(): # create objects myLCD = LCD(CS1=17, CS2=7, E=15, RS=14, D0=27, D1=23, D2=24, D3=25, D4=8, D5=11, D6=9, D7=22, PWM=1) #PWM pin number is wiringPi numbering! myAM2302 = AM2302(pin=4) myCalendar = GoogleCalendar() # set the initial backlight flag if isNight(): backlightNightFlag = 1 myLCD.setBacklightPWM(BACKLIGHT_NIGHT_VALUE) else: backlightNightFlag = 0 myLCD.setBacklightPWM(BACKLIGHT_DAY_VALUE) last_update = datetime.datetime.now() - datetime.timedelta(seconds=UPDATE_FREQUENCY_BUS) while(True): # dim backlight if its night if isNight(): if backlightNightFlag == 0: backlightNightFlag = 1 myLCD.setBacklightPWM(BACKLIGHT_NIGHT_VALUE) elif backlightNightFlag == 1: backlightNightFlag = 0 myLCD.setBacklightPWM(BACKLIGHT_DAY_VALUE) # update bus/temp only every n secs if (datetime.datetime.now() - last_update).seconds >= UPDATE_FREQUENCY_BUS: # get bus next_bus_dict = get_next_bus() # update calendar data events = myCalendar.get_events() if len(events) > 1: # only display next 2 events running_string = events[0] + ' - ' + events[1] elif len(events) == 0: running_string = 'No events scheduled' else: # only 1 event running_string = events[0] running_string_2 = running_string + ' - ' + running_string # double string to make it easier for running it over the screen running_index = 0 display_next_buses(myLCD, next_bus_dict) temp, hum = myAM2302.get_data() display_room_climate_data(myLCD, temp, hum) log_room_climate_data('/home/pi/Infoscreen/room_climate.log', temp, hum) last_update = datetime.datetime.now() # print the running text for the calendar currently_displayed_string = running_string_2[running_index:running_index+16] myLCD.printString(currently_displayed_string,7) if running_index == len(running_string) + 2: #2=3-1, 3= number of characters in separator (' - ') running_index = 0 else: running_index += 1 sleep(0.3)
def display_next_buses(LCD, bus_dict): for i in range(len(bus_dict['busNr'])): line_to_display = bus_dict['busNr'][i] + ': ' + bus_dict['timeToNextBus'][i] + ' min (' + bus_dict['delay'][i] + ')' LCD.printString(line_to_display, i)