User manual
7) PYTHON SCRIPT for PI LCD, PART 3:
#
########################################################################
#
# LCD2: Learning how to control an LCD module from Pi
#
#
#
# This code assumes 20x4 display, but will run on 16x2 display.
# See w8bh.net for more information.
#
########################################################################
import time #for timing delays
import RPi.GPIO as GPIO
import random
#OUTPUTS: map GPIO to LCD lines
LCD_RS = 7 #GPIO7 = Pi pin 26
LCD_E = 8 #GPIO8 = Pi pin 24
LCD_D4 = 17 #GPIO17 = Pi pin 11
LCD_D5 = 18 #GPIO18 = Pi pin 12
LCD_D6 = 27 #GPIO21 = Pi pin 13
LCD_D7 = 22 #GPIO22 = Pi pin 15
OUTPUTS = [LCD_RS,LCD_E,LCD_D4,LCD_D5,LCD_D6,LCD_D7]
#INPUTS: map GPIO to Switches
SW1 = 4 #GPIO4 = Pi pin 7
SW2 = 23 #GPIO16 = Pi pin 16
SW3 = 10 #GPIO10 = Pi pin 19
SW4 = 9 #GPIO9 = Pi pin 21
INPUTS = [SW1,SW2,SW3,SW4]
#HD44780 Controller Commands
CLEARDISPLAY = 0x01
RETURNHOME = 0x02
RIGHTTOLEFT = 0x04
LEFTTORIGHT = 0x06
DISPLAYOFF = 0x08
CURSOROFF = 0x0C
CURSORON = 0x0E
CURSORBLINK = 0x0F
CURSORLEFT = 0x10
CURSORRIGHT = 0x14
LOADSYMBOL = 0x40
SETCURSOR = 0x80
#Line Addresses.
LINE = [0x00,0x40,0x14,0x54] #for 20x4 display
#custom character-generator symbols
battery = [
[ 0x0E, 0x1B, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1F ], #0% (no charge)
[ 0x0E, 0x1B, 0x11, 0x11, 0x11, 0x11, 0x1F, 0x1F ], #17%
[ 0x0E, 0x1B, 0x11, 0x11, 0x11, 0x1F, 0x1F, 0x1F ], #34%
[ 0x0E, 0x1B, 0x11, 0x11, 0x1F, 0x1F, 0x1F, 0x1F ], #50% (half-full)
[ 0x0E, 0x1B, 0x11, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F ], #67%
[ 0x0E, 0x1B, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F ], #84%
[ 0x0E, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F ], #100% (full charge)