Progetto 8: Display LCD1602
Descrizione
Come sappiamo, lo schermo è uno dei modi migliori per interagire con i dispositivi elettronici.
Informazioni sul componente
1602 è una serie che può visualizzare 16 caratteri. Ci sono due righe, che usano il protocollo di comunicazione IIC.

Pin di controllo
SDA |
SDA |
|---|---|
SCL |
SCL |
Progetto 8.1: Caratteri del display LCD1602
Descrizione
Useremo i file di libreria i2c_lcd.py e lcd_api.py, che devono essere salvati nella memoria dell’ESP32.

Operazioni
Aprire “Thonny”, fare clic su “This computer”→“D:”→“2. Python Projects”→“pj8_1_lcd1602”. Selezionare “i2c_lcd.py”, fare clic con il tasto destro del mouse per selezionare “\ Upload to /\ ”, attendere che “i2c_lcd.py” venga caricato sull’ESP32; poi selezionare “lcd_api.py”, fare clic con il tasto destro del mouse per selezionare “\ Upload to /\ ”, attendere che “lcd_api.py” venga caricato sull’ESP32.


I nomi salvati sono i2c_lcd.py e lcd_api.py

Codice di prova
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))
Risultato del test
La prima riga del LCD1602 mostra ‘Hello’ e la seconda riga mostra ‘keyestudio’.
Progetto 8.2 Allarme gas pericoloso
Descrizione
Quando un sensore di gas rileva un’alta concentrazione di gas pericoloso, il buzzer emetterà un allarme e il display mostrerà ‘dangerous’.
Informazioni sul componente
Sensore di fumo MQ2:
È un dispositivo di monitoraggio delle perdite di gas per abitazioni e fabbriche, adatto al rilevamento di gas liquefatti, benzene, alcani, alcoli, idrogeno e fumo. Il nostro sensore ha un’uscita digitale D e un’uscita analogica A; in questo progetto è collegato a D come sensore digitale.

Pin di controllo
Sensore di gas |
23 |
|---|---|
\ |
Codice di prova
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
Risultato del test
Lo schermo visualizza ‘safety’ nello stato normale. Tuttavia, quando il sensore di gas rileva gas pericolosi, come monossido di carbonio, a una certa concentrazione, il buzzer emetterà un allarme e lo schermo mostrerà ‘dangerous’.