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.

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.

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.


Die gespeicherten Namen sind i2c_lcd.py und lcd_api.py

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.

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.