diff --git a/pivelib.py b/pivelib.py index 2f23e7c..e702fbe 100755 --- a/pivelib.py +++ b/pivelib.py @@ -1,4 +1,5 @@ #! /usr/bin/env python3.3 +#-*- coding: utf-8 -*- # Auteur : Phyks (phyks@phyks.me) # Site web : http://phyks.me @@ -15,7 +16,10 @@ import sys import urllib3 import xml.etree.ElementTree as ET import datetime -import wiringpi2 +import wiringpi2 as wp2 +import time as time_lib + +wp2.wiringPiSetup() # =========== # Pins du LCD @@ -27,8 +31,8 @@ PIN_DC = 5 PIN_SDIN = 6 PIN_SCLK = 7 -LCD_C = HIGH -LCD_D = LOW +LCD_C = 0 +LCD_D = 1 LCD_X = 84 LCD_Y = 48 @@ -134,16 +138,16 @@ ASCII = [ def writeLCD(dc, data): - wiringpi2.digitalWrite(PIN_DC, dc) - wiringpi2.digitalWrite(PIN_SCE, LOW) - wiringpi2.shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data) - wiringpi2.digitalWrite(PIN_SCE, HIGH) + wp2.digitalWrite(PIN_DC, dc) + wp2.digitalWrite(PIN_SCE, 0) + wp2.shiftOut(PIN_SDIN, PIN_SCLK, 1, data) + wp2.digitalWrite(PIN_SCE, 1) def characterLCD(character): writeLCD(LCD_D, 0x00) for i in range(0, 5): - writeLCD(ASCII[character - 0x20][i]) + writeLCD(LCD_D, ASCII[ord(character) - 0x20][i]) writeLCD(LCD_D, 0x00) @@ -151,27 +155,32 @@ def stringLCD(string): for character in string: characterLCD(character) +# X ranges from 0 to 84 +# Y ranges from 0 to 5 +def gotoXYLCD(x, y): + writeLCD(0, 0x80 | x) + writeLCD(0, 0x40 | y) def initLCD(): - wiringpi2.pinMode(PIN_SCE, OUTPUT) - wiringpi2.pinMode(PIN_RESET, OUTPUT) - wiringpi2.pinMode(PIN_DC, OUTPUT) - wiringpi2.pinMode(PIN_SDIN, OUTPUT) - wiringpi2.pinMode(PIN_SCLK, OUTPUT) - wiringpi2.digitalWrite(PIN_RESET, LOW) - wiringpi2.digitalWrite(PIN_RESET, HIGH) + wp2.pinMode(PIN_SCE, 1) + wp2.pinMode(PIN_RESET, 1) + wp2.pinMode(PIN_DC, 1) + wp2.pinMode(PIN_SDIN, 1) + wp2.pinMode(PIN_SCLK, 1) + wp2.digitalWrite(PIN_RESET, 0) + wp2.digitalWrite(PIN_RESET, 1) - wiringpi2.writeLCD(LCD_C, 0x21) # LCD Extended commands - wiringpi2.writeLCD(LCD_C, 0x98) # Set LCD Vop (contrast) - wiringpi2.writeLCD(LCD_C, 0x04) # Set Temp coefficient - wiringpi2.writeLCD(LCD_C, 0x13) # LCD bias mode (1:48) - wiringpi2.writeLCD(LCD_C, 0x0C) # LCD in normal mode - wiringpi2.writeLCD(LCD_C, 0x20) - wiringpi2.writeLCD(LCD_C, 0x0C) + writeLCD(LCD_C, 0x21) # LCD Extended commands + writeLCD(LCD_C, 0x98) # Set LCD Vop (contrast) + writeLCD(LCD_C, 0x04) # Set Temp coefficient + writeLCD(LCD_C, 0x13) # LCD bias mode (1:48) + writeLCD(LCD_C, 0x0C) # LCD in normal mode + writeLCD(LCD_C, 0x20) + writeLCD(LCD_C, 0x0C) def clearLCD(): - for i in range(0, LCD_X*LCD_Y/8): + for i in range(0, int(LCD_X*LCD_Y/8)): writeLCD(LCD_D, 0x00) characterLCD(' ') @@ -192,6 +201,10 @@ base_url = ('http://www.velib.paris.fr/service/stationdetails/paris/') # Initialisation des librairies # ============================= http = urllib3.PoolManager() +initLCD() +clearLCD() +gotoXYLCD(0,0) +stringLCD("Loading...") # ==== # Date @@ -269,8 +282,62 @@ if r.status == 200: # ============================ # Afficher les infos à l'écran # ============================ +running = True +while running: + for station in stations: + clearLCD() + gotoXYLCD(0, 0) + stringLCD("Station:") + gotoXYLCD(0, 1) + stringLCD(str(station)) + gotoXYLCD(0, 3) + stringLCD("Avail.: "+str(available[station])) + gotoXYLCD(0, 5) + stringLCD("Free: "+str(free[station])) + time_lib.sleep(2) + + clearLCD() + gotoXYLCD(0, 0) + stringLCD("[Weather]") + gotoXYLCD(0, 1) + stringLCD("Now:") + gotoXYLCD(0, 2) + stringLCD(weather_now.capitalize()) + gotoXYLCD(0, 4) + stringLCD(str(temp_now)+"C") + time_lib.sleep(2) + + clearLCD() + gotoXYLCD(0, 0) + stringLCD("[Weather]") + gotoXYLCD(0, 1) + stringLCD("In 3h:") + gotoXYLCD(0, 2) + stringLCD(weather_3h.capitalize()) + gotoXYLCD(0, 4) + stringLCD(str(temp_3h)+"C") + time_lib.sleep(2) + + clearLCD() + gotoXYLCD(0, 0) + stringLCD("[Weather]") + gotoXYLCD(0, 1) + stringLCD("In 6h:") + gotoXYLCD(0, 2) + stringLCD(weather_6h.capitalize()) + gotoXYLCD(0, 4) + stringLCD(str(temp_6h)+"C") + time_lib.sleep(2) + + clearLCD() + gotoXYLCD(0, 0) + stringLCD("[Weather]") + gotoXYLCD(0, 1) + stringLCD("In 9h:") + gotoXYLCD(0, 2) + stringLCD(weather_9h.capitalize()) + gotoXYLCD(0, 4) + stringLCD(str(temp_9h)+"C") + time_lib.sleep(2) -wiringpi2.wiringPiSetup - -initLCD() clearLCD()