Base code to handle screen, not tested

This commit is contained in:
Phyks 2013-09-19 23:15:32 +02:00
parent a04549836e
commit bac9604f6a

View File

@ -16,6 +16,165 @@ import urllib3
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import datetime import datetime
import math import math
import wiringpi2
# ===========
# Pins du LCD
# ===========
PIN_SCE = 3
PIN_RESET = 4
PIN_DC = 5
PIN_SDIN = 6
PIN_SCLK = 7
LCD_C = HIGH
LCD_D = LOW
LCD_X = 84
LCD_Y = 48
ASCII = [
[0x00, 0x00, 0x00, 0x00, 0x00], # 20 " "
[0x00, 0x00, 0x5f, 0x00, 0x00], # 21 !
[0x00, 0x07, 0x00, 0x07, 0x00], # 22 "
[0x14, 0x7f, 0x14, 0x7f, 0x14], # 23 #
[0x24, 0x2a, 0x7f, 0x2a, 0x12], # 24 $
[0x23, 0x13, 0x08, 0x64, 0x62], # 25 %
[0x36, 0x49, 0x55, 0x22, 0x50], # 26 &
[0x00, 0x05, 0x03, 0x00, 0x00], # 27 '
[0x00, 0x1c, 0x22, 0x41, 0x00], # 28 (
[0x00, 0x41, 0x22, 0x1c, 0x00], # 29 )
[0x14, 0x08, 0x3e, 0x08, 0x14], # 2a *
[0x08, 0x08, 0x3e, 0x08, 0x08], # 2b +
[0x00, 0x50, 0x30, 0x00, 0x00], # 2c ,
[0x08, 0x08, 0x08, 0x08, 0x08], # 2d -
[0x00, 0x60, 0x60, 0x00, 0x00], # 2e .
[0x20, 0x10, 0x08, 0x04, 0x02], # 2f /
[0x3e, 0x51, 0x49, 0x45, 0x3e], # 30 0
[0x00, 0x42, 0x7f, 0x40, 0x00], # 31 1
[0x42, 0x61, 0x51, 0x49, 0x46], # 32 2
[0x21, 0x41, 0x45, 0x4b, 0x31], # 33 3
[0x18, 0x14, 0x12, 0x7f, 0x10], # 34 4
[0x27, 0x45, 0x45, 0x45, 0x39], # 35 5
[0x3c, 0x4a, 0x49, 0x49, 0x30], # 36 6
[0x01, 0x71, 0x09, 0x05, 0x03], # 37 7
[0x36, 0x49, 0x49, 0x49, 0x36], # 38 8
[0x06, 0x49, 0x49, 0x29, 0x1e], # 39 9
[0x00, 0x36, 0x36, 0x00, 0x00], # 3a :
[0x00, 0x56, 0x36, 0x00, 0x00], # 3b ;
[0x08, 0x14, 0x22, 0x41, 0x00], # 3c <
[0x14, 0x14, 0x14, 0x14, 0x14], # 3d =
[0x00, 0x41, 0x22, 0x14, 0x08], # 3e >
[0x02, 0x01, 0x51, 0x09, 0x06], # 3f ?
[0x32, 0x49, 0x79, 0x41, 0x3e], # 40 @
[0x7e, 0x11, 0x11, 0x11, 0x7e], # 41 A
[0x7f, 0x49, 0x49, 0x49, 0x36], # 42 B
[0x3e, 0x41, 0x41, 0x41, 0x22], # 43 C
[0x7f, 0x41, 0x41, 0x22, 0x1c], # 44 D
[0x7f, 0x49, 0x49, 0x49, 0x41], # 45 E
[0x7f, 0x09, 0x09, 0x09, 0x01], # 46 F
[0x3e, 0x41, 0x49, 0x49, 0x7a], # 47 G
[0x7f, 0x08, 0x08, 0x08, 0x7f], # 48 H
[0x00, 0x41, 0x7f, 0x41, 0x00], # 49 I
[0x20, 0x40, 0x41, 0x3f, 0x01], # 4a J
[0x7f, 0x08, 0x14, 0x22, 0x41], # 4b K
[0x7f, 0x40, 0x40, 0x40, 0x40], # 4c L
[0x7f, 0x02, 0x0c, 0x02, 0x7f], # 4d M
[0x7f, 0x04, 0x08, 0x10, 0x7f], # 4e N
[0x3e, 0x41, 0x41, 0x41, 0x3e], # 4f O
[0x7f, 0x09, 0x09, 0x09, 0x06], # 50 P
[0x3e, 0x41, 0x51, 0x21, 0x5e], # 51 Q
[0x7f, 0x09, 0x19, 0x29, 0x46], # 52 R
[0x46, 0x49, 0x49, 0x49, 0x31], # 53 S
[0x01, 0x01, 0x7f, 0x01, 0x01], # 54 T
[0x3f, 0x40, 0x40, 0x40, 0x3f], # 55 U
[0x1f, 0x20, 0x40, 0x20, 0x1f], # 56 V
[0x3f, 0x40, 0x38, 0x40, 0x3f], # 57 W
[0x63, 0x14, 0x08, 0x14, 0x63], # 58 X
[0x07, 0x08, 0x70, 0x08, 0x07], # 59 Y
[0x61, 0x51, 0x49, 0x45, 0x43], # 5a Z
[0x00, 0x7f, 0x41, 0x41, 0x00], # 5b [
[0x02, 0x04, 0x08, 0x10, 0x20], # 5c ¥
[0x00, 0x41, 0x41, 0x7f, 0x00], # 5d ]
[0x04, 0x02, 0x01, 0x02, 0x04], # 5e ^
[0x40, 0x40, 0x40, 0x40, 0x40], # 5f _
[0x00, 0x01, 0x02, 0x04, 0x00], # 60 `
[0x20, 0x54, 0x54, 0x54, 0x78], # 61 a
[0x7f, 0x48, 0x44, 0x44, 0x38], # 62 b
[0x38, 0x44, 0x44, 0x44, 0x20], # 63 c
[0x38, 0x44, 0x44, 0x48, 0x7f], # 64 d
[0x38, 0x54, 0x54, 0x54, 0x18], # 65 e
[0x08, 0x7e, 0x09, 0x01, 0x02], # 66 f
[0x0c, 0x52, 0x52, 0x52, 0x3e], # 67 g
[0x7f, 0x08, 0x04, 0x04, 0x78], # 68 h
[0x00, 0x44, 0x7d, 0x40, 0x00], # 69 i
[0x20, 0x40, 0x44, 0x3d, 0x00], # 6a j
[0x7f, 0x10, 0x28, 0x44, 0x00], # 6b k
[0x00, 0x41, 0x7f, 0x40, 0x00], # 6c l
[0x7c, 0x04, 0x18, 0x04, 0x78], # 6d m
[0x7c, 0x08, 0x04, 0x04, 0x78], # 6e n
[0x38, 0x44, 0x44, 0x44, 0x38], # 6f o
[0x7c, 0x14, 0x14, 0x14, 0x08], # 70 p
[0x08, 0x14, 0x14, 0x18, 0x7c], # 71 q
[0x7c, 0x08, 0x04, 0x04, 0x08], # 72 r
[0x48, 0x54, 0x54, 0x54, 0x20], # 73 s
[0x04, 0x3f, 0x44, 0x40, 0x20], # 74 t
[0x3c, 0x40, 0x40, 0x20, 0x7c], # 75 u
[0x1c, 0x20, 0x40, 0x20, 0x1c], # 76 v
[0x3c, 0x40, 0x30, 0x40, 0x3c], # 77 w
[0x44, 0x28, 0x10, 0x28, 0x44], # 78 x
[0x0c, 0x50, 0x50, 0x50, 0x3c], # 79 y
[0x44, 0x64, 0x54, 0x4c, 0x44], # 7a z
[0x00, 0x08, 0x36, 0x41, 0x00], # 7b {
[0x00, 0x00, 0x7f, 0x00, 0x00], # 7c |
[0x00, 0x41, 0x36, 0x08, 0x00], # 7d ]
[0x10, 0x08, 0x08, 0x10, 0x08], # 7e ?
[0x78, 0x46, 0x41, 0x46, 0x78], # 7f ?
]
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)
def characterLCD(character):
writeLCD(LCD_D, 0x00)
for i in range(0, 5):
writeLCD(ASCII[character - 0x20][i])
writeLCD(LCD_D, 0x00)
def stringLCD(string):
for character in string:
characterLCD(character)
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)
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)
def clearLCD():
for i in range(0, LCD_X*LCD_Y/8):
writeLCD(LCD_D, 0x00)
characterLCD(' ')
# ========== # ==========
# Paramètres # Paramètres
@ -30,18 +189,6 @@ for station in sys.argv[1:]:
base_url = ('http://www.velib.paris.fr/service/stationdetails/paris/') base_url = ('http://www.velib.paris.fr/service/stationdetails/paris/')
PIN_SCE = 3
PIN_RESET = 4
PIN_DC = 5
PIN_SDIN = 6
PIN_SCLK = 7
LCD_C = "LOW"
LCD_D = "HIGH"
LCD_X = 84
LCD_Y = 48
# ============================= # =============================
# Initialisation des librairies # Initialisation des librairies
# ============================= # =============================
@ -120,3 +267,8 @@ if r.status == 200:
# ============================ # ============================
# Afficher les infos à l'écran # Afficher les infos à l'écran
# ============================ # ============================
wiringpi2.wiringPiSetup
initLCD()
clearLCD()