Projekt 8: LCD1602-Display

Description

Wie wir alle wissen, ist ein Bildschirm eine der besten Möglichkeiten für Menschen, mit elektronischen Geräten zu interagieren.

Component Knowledge

1602 ist ein Modul, das 16 Zeichen pro Zeile darstellen kann. Es verfügt über zwei Zeilen und verwendet das IIC-Kommunikationsprotokoll.

Bild34

Control Pins

SDA

SDA

SCL

SCL

Projekt 8.1: Anzeige von Zeichen auf dem LCD1602

Description

Wir verwenden die Bibliotheksdateien i2c_lcd.py und lcd_api.py, die im ESP32-Speicher gespeichert werden sollten.

Bild35

Vorgehensweise

Öffnen Sie „Thonny“, klicken Sie auf „Dieser Computer“ → „D:“ → „2. Python Projects“ → „pj8_1_lcd1602“. Wählen Sie „i2c_lcd.py“ aus, klicken Sie mit der rechten Maustaste und wählen Sie „\ Hochladen nach /\ “, warten Sie, bis „i2c_lcd.py“ auf ESP32 hochgeladen wurde; dann wählen Sie „lcd_api.py“ aus, klicken Sie mit der rechten Maustaste und wählen Sie „\ Hochladen nach /\ “, warten Sie, bis „lcd_api.py“ auf ESP32 hochgeladen wurde.

Bild

Bild36

Die gespeicherten Namen sind i2c_lcd.py und lcd_api.py

Bild37

Test Code

from time import sleep_ms, ticks_ms
from machine import I2C, Pin
from i2c_lcd import I2cLcd

DEFAULT_I2C_ADDR = 0x27

i2c = I2C(scl=Pin(22), sda=Pin(21), freq=400000)
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)

lcd.move_to(1, 0)
lcd.putstr('Hello')
lcd.move_to(1, 1)
lcd.putstr('keyestudio')

# The following line of code should be tested
# using the REPL:

# 1. To print a string to the LCD:
#    lcd.putstr('Hello world')
# 2. To clear the display:
#lcd.clear()
# 3. To control the cursor position:
# lcd.move_to(2, 1)
# 4. To show the cursor:
# lcd.show_cursor()
# 5. To hide the cursor:
#lcd.hide_cursor()
# 6. To set the cursor to blink:
#lcd.blink_cursor_on()
# 7. To stop the cursor on blinking:
#lcd.blink_cursor_off()
# 8. To hide the currently displayed character:
#lcd.display_off()
# 9. To show the currently hidden character:
#lcd.display_on()
# 10. To turn off the backlight:
#lcd.backlight_off()
# 11. To turn ON the backlight:
#lcd.backlight_on()
# 12. To print a single character:
#lcd.putchar('x')
# 13. To print a custom character:
#happy_face = bytearray([0x00, 0x0A, 0x00, 0x04, 0x00, 0x11, 0x0E, 0x00])
#lcd.custom_char(0, happy_face)
#lcd.putchar(chr(0))

Test Result

Die erste Zeile des LCD1602 zeigt ‘Hello’ und die zweite Zeile zeigt ‘keyestudio’.

Projekt 8.2 Alarm bei gefährlichen Gasen

Description

Wenn ein Gassensor eine hohe Konzentration gefährlicher Gase erkennt, ertönt der Summer als Alarm und die Anzeige zeigt dangerous an.

Component Knowledge

MQ2 Smoke Sensor:

Es ist ein Gerät zur Überwachung von Gaslecks für Haushalte und Fabriken, geeignet zur Erkennung von Flüssiggas, Benzin, Alkyl, Alkohol, Wasserstoff sowie Rauch. Unser Sensor hat einen digitalen Anschluss D und einen analogen Ausgang A; in diesem Projekt wird er als digitaler Sensor an D angeschlossen.

Bild38

Control Pin

Gassensor

23

\

Test Code

from time import sleep_ms, ticks_ms
from machine import SoftI2C, Pin
from i2c_lcd import I2cLcd

DEFAULT_I2C_ADDR = 0x27

scl_pin = Pin(22, Pin.OUT, pull=Pin.PULL_UP)  # GPIO22 with internal pull-up enabled
sda_pin = Pin(21, Pin.OUT, pull=Pin.PULL_UP)  # GPIO21 with internal pull-up enabled

i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=100000)
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)

from machine import Pin
import time
gas = Pin(23, Pin.IN, Pin.PULL_UP)

while True:
    gasVal = gas.value()  # Reads the value of button 1
    print("gas =",gasVal)  #Print it out in the shell
    lcd.move_to(1, 1)
    lcd.putstr('val: {}'.format(gasVal))
    if(gasVal == 1):
        #lcd.clear()
        lcd.move_to(1, 0)
        lcd.putstr('Safety       ')
    else:
        lcd.move_to(1, 0)
        lcd.putstr('dangerous')
    time.sleep(0.1) #delay 0.1s

Test Result

Im Normalzustand zeigt der Bildschirm ‘safety’ an. Wenn der Gassensor jedoch gefährliche Gase wie Kohlenmonoxid in einer bestimmten Konzentration erkennt, ertönt der Summer als Alarm und der Bildschirm zeigt ‘dangerous’ an.