Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.30 KB | None | 0 0
  1. import time
  2. from RPi import GPIO
  3.  
  4.  
  5. class LCD_Display:
  6.  
  7.     def __init__(self, pins,isVierBits=False):
  8.         self.isVierBits = isVierBits
  9.         self.E = pins[0]
  10.         self.RS = pins[1]
  11.  
  12.         self.databits = [pins[2], pins[3], pins[4], pins[5], pins[6],
  13.                          pins[7], pins[8], pins[9]]  # D0,D1,D2,D3, D4, D5, D6, D7
  14.  
  15.         GPIO.setmode(GPIO.BCM)
  16.         GPIO.setup(pins, GPIO.OUT)
  17.  
  18.         GPIO.output(self.E, 0)
  19.         GPIO.output(self.RS, 0)
  20.         for i in range(2, 10):
  21.             GPIO.output(pins[i], 0)
  22.  
  23.     def __initList(self, databits_list):
  24.         self.databits = []
  25.         for bit in databits_list:
  26.             self.databits.append(bit)
  27.  
  28.         return self.databits
  29.  
  30.     def __repr__(self):
  31.         for bit in self.databits:
  32.             print(bit)
  33.  
  34.     def send_character(self, char):
  35.         GPIO.output(self.RS, 0)
  36.         GPIO.output(self.E, 1)  # hoog naar
  37.  
  38.         self.set_data_bits(char)
  39.  
  40.         GPIO.output(self.E, 0)  # laag
  41.  
  42.         time.sleep(0.01)
  43.  
  44.     def set_data_bits(self, byte):
  45.         mask = 0x80
  46.         for i in range(0, 8):
  47.             # byte is de waarde die je doorkrijgt
  48.             if (byte & mask) > 0:
  49.                 GPIO.output(self.databits[i], 1)
  50.                 # zet GPIO pin i op 1  # code zelf aanpassen
  51.             else:
  52.                 GPIO.output(self.databits[i], 0)
  53.                 # zet GPIO pin i op 0  # code zelf aanpassen
  54.             mask >>= 1
  55.  
  56.     def send_instruction(self, byte):
  57.         GPIO.output(self.RS, 0)
  58.         GPIO.output(self.E, 1)  # hoog naar
  59.  
  60.         self.set_data_bits(byte)
  61.  
  62.         GPIO.output(self.E, 0)  # laag
  63.  
  64.         time.sleep(0.01)
  65.  
  66.     def function_set(self):
  67.         # 00111000
  68.         self.send_instruction(56)
  69.  
  70.     def write_message(self, message):
  71.        
  72.         characters = list(message)
  73.         for char in characters:
  74.             char_ascii = ord(char)
  75.            
  76.             self.send_character(char_ascii)
  77.             print(f"Char {char} verzonden als {char_ascii}")
  78.  
  79.     def display_on(self):
  80.         # self.send_instruction([1, 1, 1, 1, 0, 0, 0, 0])
  81.         self.send_instruction(15)
  82.  
  83.     def clear_LCD(self):
  84.         # self.send_instruction([1, 0, 0, 0, 0, 0, 0, 0])
  85.         self.send_instruction(128)
  86.  
  87.     def cursor_home(self):
  88.         # self.send_instruction([1, 1, 0, 0, 0, 0, 0, 0])
  89.         self.send_instruction(192)
  90.  
  91.     def init_LCD(self):
  92.         self.function_set()
  93.         self.display_on()
  94.         self.clear_LCD()
  95.         self.cursor_home()
  96.  
  97.     def second_row(self):
  98.         pass
  99.  
  100.     def writeA(self):
  101.         pass
  102.  
  103.     def short_delay(self):
  104.         time.sleep(0.01)
  105.  
  106.     def long_delay(self):
  107.         time.sleep(1)
  108.  
  109.  
  110. pins = [21, 20, 16, 12, 25, 24, 23, 26, 19, 13]
  111.  
  112.  
  113. try:
  114.     display = LCD_Display(pins,False)
  115.     display.init_LCD()
  116.     while True:
  117.        
  118.         message = input("Wat wil je tonen? > ")
  119.  
  120.         if len(message) > 0:
  121.             display.write_message(message)
  122.             display.long_delay()
  123.             if len(message) > 30:
  124.                 display.short_delay()
  125.         else:
  126.             print("** Je moet een bericht ingeven **")
  127.  
  128. except KeyboardInterrupt:
  129.     print("Ok, Bye!")
  130. except Exception as ex:
  131.     print("Error: {0}".format(ex))
  132. finally:
  133.     GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement