LA Modul 3 - Percobaan 4
Percobaan 4
- Persiapan Alat dan Bahan
- Pemahaman Skematik/Wiring Diagram
- Pengawatan (Wiring)
- Pemrograman STM32
- Pengujian dan Pengamatan
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Prinsip kerja percobaan 4 (I2C - STM32 LCD I2C) adalah memanfaatkan protokol I2C untuk komunikasi antara mikrokontroler STM32 dan modul LCD. Protokol I2C menggunakan dua jalur, yaitu SDA (Serial Data) untuk transfer data dan SCL (Serial Clock) untuk sinkronisasi. STM32 bertindak sebagai master yang mengontrol komunikasi, sementara LCD I2C menjadi slave yang menerima perintah dan data.
Proses komunikasi dimulai dengan master mengirimkan alamat slave (LCD I2C) bersama dengan perintah atau data yang akan ditampilkan. LCD I2C kemudian menerima informasi ini dan menampilkannya pada layar. Dengan menggunakan I2C, komunikasi antara STM32 dan LCD menjadi lebih efisien dalam hal penggunaan pin mikrokontroler.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
Listing Program :
TX:
# Pengirim: Mengirim data potensiometer via UART
from machine import Pin, ADC, UART
import time
pot = ADC(26) # GPIO 26 (ADC0)
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
while True:
pot_value = pot.read_u16() # Baca nilai (0-65535)
data = f"POT:{pot_value}\n" # Format: "POT:<nilai>\n"
uart.write(data)
print("Sent:", data.strip()) # Debug: Cek di Thonny
time.sleep(0.5)
RX:
# Penerima: Menampilkan data UART di LCD I2C
from machine import UART, I2C, Pin
from i2c_lcd import I2cLcd
from time import sleep
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
i2c = I2C(0, sda=Pin(4), scl=Pin(5))
lcd = I2cLcd(i2c, 0x27, 2, 16) # Ganti 0x27 jika perlu
while True:
if uart.any():
raw_data = uart.readline()
try:
decoded_data = raw_data.decode('utf-8').strip()
print("Received RAW:", repr(raw_data))
print("Decoded:", decoded_data)
if decoded_data.startswith("POT:"):
pot_value = int(decoded_data.split(':')[1])
lcd.clear()
lcd.putstr(f"Value: {pot_value}")
else:
raise ValueError("Format salah")
except Exception as e:
lcd.clear()
lcd.putstr("ERROR")
lcd.move_to(0, 1)
lcd.putstr(str(e)[:16]) # Tampilkan pesan error
print("Error:", e, "| Data:", raw_data)
sleep(0.1)
5. Video Demo
[Kembali]
6. Analisa
[Kembali]
7. Download File
[Kembali]
Download Video Demo [Download]
Komentar
Posting Komentar