Контрол на LCD 2004 с Python през сериен интерфейс

Контрол на LCD 2004 с Python през сериен интерфейс

Въведение

Проектите с LCD 2004 дисплеи често изискват удобен метод за управление на изписването на текст. В тази статия ще представим библиотека, написана на Python, която осигурява лесен начин за изпращане на данни към LCD 2004 чрез сериен интерфейс. Проектът е идеален за използване с Raspberry Pi, Orange Pi но може да работи и с компютър или лаптоп чрез USB-TTL адаптер.

Тази библиотека е разработена за проекта ни: Arduino контрол на LCD 2004 чрез сериен интерфейс. В тоз ипроект ще отгриете начина на свързване на дисплея с Atmega328p, и код който е за Arduino.

Тази библиотека ви позволява лесно да визуализирате информация на дисплея — като например системни съобщения, температурни данни или персонализирани съобщения. Освен това ще разгледаме пример за използването ѝ, който илюстрира основните ѝ възможности.


Идея и Приложения

Библиотеката е полезна в проекти, които изискват информационни дисплеи, като:

  • Мониторинг на данни от IoT устройства.
  • Визуализация на системна информация на Raspberry Pi, Orange Pi.
  • Интерактивни проекти за Arduino и Raspberry Pi.
  • Информационни панели за персонални компютри.

Може да използвате USB-TTL донгъл за интеграция към стандартен компютър или Raspberry Pi, което осигурява широки възможности за управление през Python скриптове.


Схематично Решение

Дисплеят се свързва към Arduino, което приема серийни команди от Raspberry Pi или компютър. Raspberry Pi използва GPIO пиновете си или USB-TTL адаптер за комуникация чрез сериен интерфейс.


Код на Библиотеката за контрол на LCD 2004 с Python през сериен интерфейс

Библиотеката се грижи за управлението на серийната връзка и предаването на команди към дисплея.

Библиотека за Управление на LCD

import serial
import time

class SerialLCD:
    def __init__(self, port, baudrate=9600, timeout=1):
        self.serial = serial.Serial(port, baudrate, timeout=timeout)
        time.sleep(2)  # Изчакване за инициализация
    
    def send_text(self, line, text):
        space = " "
        
        if not 1 <= line <= 4:
            raise ValueError("Невалиден ред! Въведете число от 1 до 4.")
        command = f"{space}{line},{text}\n"
        print(command)
        self.serial.write(command.encode())
        time.sleep(0.1)  # Изчакване за обработка на командата

    def clear(self):
        space = " "
        text = "0.0"
        command = f"{space}{text},\n"
        print(command)
        self.serial.write(command.encode())
        time.sleep(0.1)

    def clear_line(self, line):
        space = " "
        if not 1 <= line <= 4:
            raise ValueError("Невалиден ред! Въведете число от 1 до 4.")
        command = f"{space}0.{line},\n"
        print(command)
        self.serial.write(command.encode())
        time.sleep(0.1)

    def close(self):
        self.serial.close()

Обяснение на Кода

1. Инициализация на Серийната Връзка

def __init__(self, port, baudrate=9600, timeout=1):

Методът инициализира серийната връзка с порта на Arduino. Параметрите включват:

  • port: Сериен порт на устройството (напр. /dev/ttyUSB0).
  • baudrate: Скорост на предаване.
  • timeout: Максимално време за изчакване.

2. Изпращане на Текст към Ред

def send_text(self, line, text):

Функцията изпраща текст към определен ред на дисплея. Редовете се номерират от 1 до 4. Добавянето на интервал преди командата е задължително.

3. Изчистване на Дисплея

def clear(self):

Изчиства цялото съдържание на дисплея, изпращайки командата " 0.0".

4. Изчистване на Конкретен Ред

def clear_line(self, line):

Изчиства само един ред чрез командата " 0.X", където X е номерът на реда.

5. Затваряне на Връзката

def close(self):

Затваря серийната връзка, освобождавайки ресурси.


Примерен Код за използване на библиотеката за контрол на LCD 2004 с Python

from serial_lcd import SerialLCD
import time

# Създаване на обект за комуникация с дисплея
lcd = SerialLCD(port="/dev/ttyUSB0", baudrate=9600)

try:
    # Изпращане на текст към определен ред
    lcd.send_text(1, "www.ardudevelop.eu")
    lcd.send_text(2, "Python to LCD")
    lcd.send_text(3, "Line 3 example")
    lcd.send_text(4, "Last line here!")

    # Изчакване за визуализация
    time.sleep(1)
    
    # Изчистване само на ред 2
    lcd.clear_line(2)
    
    # Пример за друга визуализация
    lcd.send_text(2, "Another example!")

    # Изчистване на цялото съдържание
    lcd.clear()
    
finally:
    # Затваряне на връзката
    lcd.close()

Обяснение на Примера

  1. Импортиране на Библиотеки
from serial_lcd import SerialLCD
import time

Импортира се библиотеката serial_lcd и time за изчакване между командите.

  1. Инициализация на Обект
lcd = SerialLCD(port="/dev/ttyUSB0", baudrate=9600)

Създава се обект за връзка с дисплея чрез определен сериен порт и скорост на предаване.

  1. Изпращане на Данни
lcd.send_text(1, "www.ardudevelop.eu")

Изпраща текст към първия ред на дисплея. Подобно се процедира за останалите редове.

  1. Изчистване на Ред
lcd.clear_line(2)

Изчиства само втория ред на дисплея.

  1. Затваряне на Връзката
lcd.close()

Затваря серийната връзка след приключване.


Обобщение

Тази Python библиотека предоставя удобен начин за управление на LCD 2004 дисплей чрез сериен интерфейс. С нея можете да изграждате информационни панели за Raspberry Pi, както и системи за мониторинг или визуализация на данни от компютър.

Предстоящи проекти могат да включват интеграция с други протоколи или приложения за IoT устройства.


Заключение

С помощта на тази библиотека, управлението на LCD 2004 дисплеи става лесно и ефективно. Независимо дали работите на Raspberry Pi, Orange Pi или PC компютър, възможностите за визуализация на данни са неограничени.

Источници: Python Serial

Translate »