User Tools

Site Tools


the_python_code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
the_python_code [2016/12/21 15:53] walkeradminthe_python_code [2016/12/21 16:21] – [Complete Code Set] walkeradmin
Line 18: Line 18:
 \\  \\ 
 <color red>(This is from the Master Pi)</color> <color red>(This is from the Master Pi)</color>
 +
 +----
 +
 ==== The File Header ==== ==== The File Header ====
 This is to identify to the Linux system what this file type is, and to allow the author to add some information (anything following a hash # is just a comment) This is to identify to the Linux system what this file type is, and to allow the author to add some information (anything following a hash # is just a comment)
Line 30: Line 33:
 #-------------------------------------- #--------------------------------------
 </file> </file>
 +
 +----
 +==== A reminder of the pin outs ====
 +The following section is just comments, but it is a nice reminder of which GPIO pins on the Raspberry Pi that this Python code is going to try to address.
 +\\ 
 <file> <file>
 # The wiring for the LCD is as follows: # The wiring for the LCD is as follows:
Line 38: Line 46:
 # 5 : R/W (Read Write)          -   GROUND THIS PIN # 5 : R/W (Read Write)          -   GROUND THIS PIN
 # 6 : Enable or Strobe          -   GPIO pin 19 - Physical pin 35 # 6 : Enable or Strobe          -   GPIO pin 19 - Physical pin 35
-# 7 : Data Bit 0             - NOT USED +# 7 : Data Bit 0                  NOT USED 
-# 8 : Data Bit 1             - NOT USED +# 8 : Data Bit 1                  NOT USED 
-# 9 : Data Bit 2             - NOT USED +# 9 : Data Bit 2                  NOT USED 
-# 10: Data Bit 3             - NOT USED+# 10: Data Bit 3                  NOT USED
 # 11: Data Bit 4                -   GPIO pin 13 - Physical pin 33 # 11: Data Bit 4                -   GPIO pin 13 - Physical pin 33
 # 12: Data Bit 5                -   GPIO pin 06 - Physical pin 31 # 12: Data Bit 5                -   GPIO pin 06 - Physical pin 31
Line 48: Line 56:
 # 15: LCD Backlight               +5V** # 15: LCD Backlight               +5V**
 # 16: LCD Backlight               GND # 16: LCD Backlight               GND
 +</file>
  
 +----
 +==== Import Python Libraries ====
 +Python uses standard libraries to provide standard functions, so you don't have to code everyday tasks such as printing etc. Here we are importing some standard libraries for our project.
 +\\ 
 +<file>
 #import #import
 import RPi.GPIO as GPIO import RPi.GPIO as GPIO
Line 55: Line 69:
 import fcntl import fcntl
 import struct import struct
 +</file>
  
 +----
 +==== Define some Constants ====
 +Rather than referring to GPIO pin numbers in the code, we are declaring some variables that we can use to reference the GPIO pin numbers to actual functions. (So the LCD Reset that uses GPIO pin 26 can be called by using just LCD_RS for example). 
 +\\ 
 +\\ 
 +The advantage of using this method is, if a pin number changes, we can change it here, and not have to hunt through the code for every occurrence of that pin number.
 +\\ 
 +<file>
 # Define GPIO to LCD mapping # Define GPIO to LCD mapping
 LCD_RS = 26 LCD_RS = 26
Line 63: Line 86:
 LCD_D6 = 5 LCD_D6 = 5
 LCD_D7 = 11 LCD_D7 = 11
 +</file>
  
 +---- 
 +==== Import Python Libraries ==== 
 +Below we are defining some more constants, these are to do with the LCD lines and chars, as well as the timing. 
 +\\  
 +<file>
 # Define some device constants # Define some device constants
 LCD_WIDTH = 40    # Maximum characters per line LCD_WIDTH = 40    # Maximum characters per line
Line 70: Line 98:
 LCD_CMD = False LCD_CMD = False
  
-Do I need to change line 2 address for 40 char display?+Address for 40 char display
 LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
 LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line
Line 77: Line 105:
 E_PULSE = 0.0005 E_PULSE = 0.0005
 E_DELAY = 0.0005 E_DELAY = 0.0005
 +</file>
  
 +----
 +==== Code Start ====
 +This is where the main code starts, as this program runs in a loop, anything above the line <color red>def main():</color> is only run once at program start. Anything below is run once per loop.
 +\\ 
 +\\ 
 +<color red>GPIO.setmode(GPIO.BCM)</color> tells the Pi we are using the GPIO board numbers, not the Pin numbers.
 +\\ 
 +<file>
 def main(): def main():
   # Main program block   # Main program block
Line 89: Line 126:
   GPIO.setup(LCD_D6, GPIO.OUT) # DB6   GPIO.setup(LCD_D6, GPIO.OUT) # DB6
   GPIO.setup(LCD_D7, GPIO.OUT) # DB7   GPIO.setup(LCD_D7, GPIO.OUT) # DB7
 +</file>
  
 +----
 +==== Program Start ====
 +This is the main body of the code that runs the LCD, to save splitting this up I will comment in this section.
 +\\ 
 +<file>
 ########################################## ##########################################
 #             PROGRAM  START             # #             PROGRAM  START             #
Line 98: Line 141:
   lcd_init()   lcd_init()
  
 +  # If using DHCP this is required, or code runs before network is ready.
   lcd_string(" Waiting 5 Seconds for Network Start",LCD_LINE_1) # wait 5 seconds for DHCP process to finish   lcd_string(" Waiting 5 Seconds for Network Start",LCD_LINE_1) # wait 5 seconds for DHCP process to finish
   time.sleep(5)   time.sleep(5)
 +</file>
  
 +---- 
 +==== Read File ==== 
 +Here we are opening the file <color red>'/home/pi/Python/my_data.txt</color> for edit (so we can read and write to it). This file contains the 8 lines of text for our LCDs. 
 +\\ 
 +<file>
   while True:   while True:
     ## Open the file with read only permit     ## Open the file with read only permit
Line 123: Line 172:
     ## close the file after reading the lines.     ## close the file after reading the lines.
     f.close()     f.close()
 +</file>
  
-#    Display the current IP Address information +---- 
-#    lcd_string( lo" + " " + get_ip_address('lo'),LCD_LINE_1) +==== Set which line to write to the LCD ==== 
-#    lcd_string("  UMD 04",LCD_LINE_1) +The code below sets what lines from the 8 lines are used (so Master Pi displays lines 1&2the fourth Pi displays Lines 7&8. 
-#    lcd_string(" eth0" + " " + get_ip_address('eth0'),LCD_LINE_2) +\\  
- +\\  
-#    time.sleep(2) # x second delay +line<color red>1</color>,LCD_LINE_<color blue>1</color> 
 +\\  
 +\\  
 +This above example tells the Pi to use Line <color red>1</color> from our text file, and put is on line <color blue>1</color> of our LCD 
 +\\  
 +<file>
     # write line 1 and 2 to the LCD (Line7 and Line8 because this is UMD4)     # write line 1 and 2 to the LCD (Line7 and Line8 because this is UMD4)
     lcd_string(" " + line1,LCD_LINE_1)     lcd_string(" " + line1,LCD_LINE_1)
Line 136: Line 190:
  
     time.sleep(1) # x second delay     time.sleep(1) # x second delay
 +</file>
  
 +---- 
 +==== LCD Write Code ==== 
 +The code below takes our text and writes it to the LCD, do not make any changes to this section. 
 +\\  
 +<file>
 ########################################## ##########################################
 #     CHANGE NO CODE BELOW THIS LINE     # #     CHANGE NO CODE BELOW THIS LINE     #
Line 234: Line 293:
 </file> </file>
 \\  \\ 
 +
 +----
 +
 \\  \\ 
 \\  \\ 
 +===== Complete Code Set =====
 \\  \\ 
-\\  +Below is the complete file without any breaks, you can cut and paste this to create your own UMD LCD.
-\\  +
-\\  +
-\\  +
-\\  +
-\\  +
-\\  +
-\\ +
 \\  \\ 
 \\  \\ 
Line 348: Line 404:
     ## close the file after reading the lines.     ## close the file after reading the lines.
     f.close()     f.close()
- 
-#    Display the current IP Address information 
-#    lcd_string("  lo" + " " + get_ip_address('lo'),LCD_LINE_1) 
-#    lcd_string("  UMD 04",LCD_LINE_1) 
-#    lcd_string(" eth0" + " " + get_ip_address('eth0'),LCD_LINE_2) 
- 
-#    time.sleep(2) # x second delay 
  
     # write line 1 and 2 to the LCD (Line7 and Line8 because this is UMD4)     # write line 1 and 2 to the LCD (Line7 and Line8 because this is UMD4)
the_python_code.txt · Last modified: 2023/03/09 22:35 by 127.0.0.1