diff --git a/Adafruit_CharLCDPlate/LCD_Examples_4Line_Display.py b/Adafruit_CharLCDPlate/LCD_Examples_4Line_Display.py new file mode 100644 index 00000000..4db921ff --- /dev/null +++ b/Adafruit_CharLCDPlate/LCD_Examples_4Line_Display.py @@ -0,0 +1,157 @@ +#!/usr/bin/python + +#---------------------------------------------------------------- +# Author: Chris Crumpacker +# Date: May 2013 +# +# A demo of some of the built in helper functions of +# the Adafruit_CharLCDPlate.py This is 20x4 display specific for now. +# I'll add conditions to get it to run on 16x2, etc. +# +# Using Adafruit_CharLCD code with the I2C and MCP230xx code aswell +#---------------------------------------------------------------- + +numcolumns = 20 +numrows = 4 + +from time import sleep +from Adafruit_CharLCDPlate1 import Adafruit_CharLCDPlate + +lcd = Adafruit_CharLCDPlate() + +lcd.begin(numcolumns, numrows) + +lcd.backlight(lcd.ON) +lcd.message("LCD 20x4\nDemonstration") +sleep(2) + +while True: + #Text on each line alone. + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Line 1") + sleep(1) + + lcd.clear() + lcd.setCursor(0,1) + lcd.message("Line 2") + sleep(1) + + lcd.clear() + lcd.setCursor(0,2) + lcd.message("Line 3") + sleep(1) + + lcd.clear() + lcd.setCursor(0,3) + lcd.message("Line 4") + sleep(1) + + # Using the "\n" new line marker + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Line 1") + sleep(1) + + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Line 1\nLine 2") + sleep(1) + + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Line 1\nLine 2\nLine 3") + sleep(1) + + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Line 1\nLine 2\nLine 3\nLine 4") + sleep(1) + + # Auto line limiting by length as to not overflow the display + # This is line by line and does not to any caraige returns + lcd.clear() + lcd.setCursor(0,0) + lcd.message("This String is 33 Characters long",1) + sleep(2) + + lcd.clear() + lcd.setCursor(0,0) + lcd.message("This String has elpise",2) + sleep(2) + + #Scroll text to the right + messageToPrint = "Scrolling Right" + i=0 + while i<20: + lcd.clear() + lcd.setCursor(0,0) + suffix = " " * i + lcd.message(suffix + messageToPrint,1) + sleep(.25) + i += 1 + + # Scroll test in from the Left + messageToPrint = "Scrolling Left" + i=20 + while i>=0: + lcd.clear() + lcd.setCursor(0,0) + suffix = " " * i + lcd.message(suffix + messageToPrint,1) + sleep(.25) + i -= 1 + sleep(2) + + # Printing text backwards, NOT right justified + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Right to left:") + lcd.setCursor(10,1) + lcd.rightToLeft() + lcd.message("Testing") + sleep(2) + + # Printing normally from the middle of the line + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Left to Right:") + lcd.setCursor(10,1) + lcd.message("Testing") + sleep(2) + + # Enabling the cursor and having it blink + lcd.clear() + lcd.setCursor(0,0) + lcd.cursor() + lcd.blink() + lcd.message("Cursor is blinking") + lcd.setCursor(0,1) + sleep(3) + lcd.noCursor() + lcd.noBlink() + + # Turning the backlight off and showing a simple count down + lcd.clear() + lcd.setCursor(0,0) + lcd.message("Backlight off in") + lcd.setCursor(0,3) + lcd.message("Back on in 3sec") + lcd.setCursor(17,0) #Reseting the cursor here keeps us from having to clear the screen, this over writes the previous character + lcd.message("3") + sleep(1) + + lcd.setCursor(17,0) + lcd.message("2") + sleep(1) + + lcd.setCursor(17,0) + lcd.message("1") + sleep(1) + + lcd.backlight(lcd.OFF) + lcd.clear() + lcd.setCursor(0,0) + sleep(3) + lcd.backlight(lcd.ON) + lcd.message("Backlight on")