| # Turns on each pin of an mcp23017 on address 0x20 ( quick2wire IO expander ) |
| import wiringpi |
| |
| PIN_BACKLIGHT = 67 # LED |
| PIN_SCLK = 68 # Clock SCLK |
| PIN_SDIN = 69 # DN(MOSI) |
| PIN_DC = 70 # D/C |
| PIN_RESET = 71 # RST Reset |
| PIN_SCE = 72 # SCE |
| |
| #PIN_BACKLIGHT = 5 |
| #PIN_SCLK = 4 |
| #PIN_SDIN = 3 |
| #PIN_DC = 2 |
| #PIN_RESET = 1 |
| #PIN_SCE = 0 |
| |
| OUTPUT = 1 |
| INPUT = 0 |
| HIGH = 1 |
| LOW = 0 |
| |
| LCD_C = 0 |
| LCD_D = 1 |
| |
| LCD_X = 84 |
| LCD_Y = 48 |
| LCD_SEGS = 504 |
| |
| MSBFIRST = 1 |
| LSBFIRST = 0 |
| |
| SLOW_DOWN = 400 |
| |
| pin_base = 65 |
| i2c_addr = 0x21 |
| |
| wiringpi.wiringPiSetup() |
| wiringpi.mcp23017Setup(pin_base,i2c_addr) |
| |
| def slow_shift_out(data_pin, clock_pin, data): |
| for bit in bin(data).replace('0b','').rjust(8,'0'): |
| wiringpi.digitalWrite(clock_pin,LOW) |
| wiringpi.delay(SLOW_DOWN) |
| wiringpi.digitalWrite(data_pin,int(bit)) |
| wiringpi.delay(SLOW_DOWN) |
| wiringpi.digitalWrite(clock_pin,HIGH) |
| wiringpi.delay(SLOW_DOWN) |
| |
| def lcd_write(dc, data): |
| wiringpi.digitalWrite(PIN_DC, dc) |
| wiringpi.digitalWrite(PIN_SCE, LOW) |
| wiringpi.delay(SLOW_DOWN) |
| #wiringpi.shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data) |
| slow_shift_out(PIN_SDIN, PIN_SCLK, data) |
| wiringpi.digitalWrite(PIN_SCE, HIGH) |
| wiringpi.delay(SLOW_DOWN) |
| #wiringpi.delay(2) |
| |
| def lcd_initialise(): |
| wiringpi.pinMode(PIN_BACKLIGHT,OUTPUT) |
| wiringpi.digitalWrite(PIN_BACKLIGHT, HIGH) |
| wiringpi.pinMode(PIN_SCE, OUTPUT) |
| wiringpi.pinMode(PIN_RESET, OUTPUT) |
| wiringpi.pinMode(PIN_DC, OUTPUT) |
| wiringpi.pinMode(PIN_SDIN, OUTPUT) |
| wiringpi.pinMode(PIN_SCLK, OUTPUT) |
| wiringpi.digitalWrite(PIN_RESET, LOW) |
| wiringpi.delay(SLOW_DOWN) |
| wiringpi.digitalWrite(PIN_RESET, HIGH) |
| wiringpi.delay(SLOW_DOWN) |
| lcd_write(LCD_C, 0x21 ) # LCD Extended Commands. |
| lcd_write(LCD_C, 0xCC ) # Set LCD Vop (Contrast). |
| lcd_write(LCD_C, 0x04 ) # Set Temp coefficent. //0x04 |
| lcd_write(LCD_C, 0x14 ) # LCD bias mode 1:48. //0x13 |
| lcd_write(LCD_C, 0x0C ) # LCD in normal mode. |
| lcd_write(LCD_C, 0x20 ) |
| lcd_write(LCD_C, 0x0C ) |
| |
| def lcd_clear(): |
| for time in range(0, LCD_SEGS): |
| lcd_write(LCD_D, 0x00) |
| |
| def lcd_fill(): |
| for time in range(0, LCD_SEGS): |
| lcd_write(LCD_D, 0xFF) |
| |
| |
| lcd_initialise() |
| |
| for time in range(0,4): |
| lcd_clear() |
| wiringpi.delay(1000) |
| lcd_fill() |
| wiringpi.delay(1000) |