From 4e86a2ee9f5578cbaae6cc7dd52616e3e3751764 Mon Sep 17 00:00:00 2001 From: Abdellah El Morabit Date: Tue, 26 Nov 2024 23:49:24 +0100 Subject: rearangef the file managment --- bin/source/hardware_driver.py | 71 ------------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 bin/source/hardware_driver.py (limited to 'bin/source/hardware_driver.py') diff --git a/bin/source/hardware_driver.py b/bin/source/hardware_driver.py deleted file mode 100644 index 7d48e69..0000000 --- a/bin/source/hardware_driver.py +++ /dev/null @@ -1,71 +0,0 @@ -from smbus import SMBus -from time import sleep - -ALIGN_FUNC = { - 'left': 'ljust', - 'right': 'rjust', - 'center': 'center'} -CLEAR_DISPLAY = 0x01 -ENABLE_BIT = 0b00000100 -LINES = { - 1: 0x80, - 2: 0xC0, - 3: 0x94, - 4: 0xD4} - -LCD_BACKLIGHT = 0x08 -LCD_NOBACKLIGHT = 0x00 - -class LCD(object): - - def __init__(self, address=0x27, bus=1, width=20, rows=4, backlight=True): - self.address = address - self.bus = SMBus(bus) - self.delay = 0.0005 - self.rows = rows - self.width = width - self.backlight_status = backlight - - self.write(0x33) - self.write(0x32) - self.write(0x06) - self.write(0x0C) - self.write(0x28) - self.write(CLEAR_DISPLAY) - sleep(self.delay) - - def _write_byte(self, byte): - self.bus.write_byte(self.address, byte) - self.bus.write_byte(self.address, (byte | ENABLE_BIT)) - sleep(self.delay) - self.bus.write_byte(self.address,(byte & ~ENABLE_BIT)) - sleep(self.delay) - - def write(self, byte, mode=0): - backlight_mode = LCD_BACKLIGHT if self.backlight_status else LCD_NOBACKLIGHT - self._write_byte(mode | (byte & 0xF0) | backlight_mode) - self._write_byte(mode | ((byte << 4) & 0xF0) | backlight_mode) - - def text(self, text, line, align='left'): - self.write(LINES.get(line, LINES[1])) - text, other_lines = self.get_text_line(text) - text = getattr(text, ALIGN_FUNC.get(align, 'ljust'))(self.width) - for char in text: - self.write(ord(char), mode=1) - if other_lines and line <= self.rows - 1: - self.text(other_lines, line + 1, align=align) - - def backlight(self, turn_on=True): - self.backlight_status = turn_on - self.write(0) - - def get_text_line(self, text): - line_break = self.width - if len(text) > self.width: - line_break = text[:self.width + 1].rfind(' ') - if line_break < 0: - line_break = self.width - return text[:line_break], text[line_break:].strip() - - def clear(self): - self.write(CLEAR_DISPLAY) -- cgit v1.2.3-70-g09d2