Laporan Akhir M3
PERCOBAAN 4
1. Prosedur[Kembali]
- Rangkai semua komponen sesuai dengan percobaan 4 pada modul
- Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian dan kondisi yang dipakai
- Upload program ke Raspberry Pi Pico
2. Hardware dan Diagram Blok[Kembali]
1. Raspberry PI PICO
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian:
Pada percobaan kali ini pertama tama inputan dimasukan dari potensio ke rasberry pi pico yang dimana kedua hubungan ini menggunkan komunikasi uart, selanjutnya dari rasberry pi pico pertama dan kedua itu menggunakan komunikasi spi yang dimana rasberry pi pico pertama bertindak sebagai master (transmitter) dan rasberry pi pico kedua bertindak sebagai slave (receiver), dan selanjutnya dari rasberry pi pico kedua ke LCD itu menggunkan komunikasi i2c .
Listing Program:
TX
from machine import Pin, ADC, UART
import time
# Inisialisasi ADC di GPIO26
pot = ADC(26) # ADC0
# Inisialisasi UART0 dengan TX=Pin0 dan RX=Pin1
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
while True:
pot_value = pot.read_u16() # Baca nilai ADC (0 - 65535)
data = f"POT:{pot_value}\n" # Format data yang dikirim
uart.write(data) # Kirim data lewat UART
print("Sent:", data.strip()) # Tampilkan data yang dikirim
time.sleep(0.5) # Tunggu 0.5 detik
RX
from machine import UART, I2C, Pin
from i2c_lcd import I2cLcd
from time import sleep
# Inisialisasi UART0
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
# Inisialisasi I2C untuk LCD (ubah alamat I2C jika perlu)
i2c = I2C(0, sda=Pin(4), scl=Pin(5))
lcd = I2cLcd(i2c, 0x27, 2, 16) # 2 baris, 16 karakter
while True:
if uart.any():
raw_data = uart.readline() # Baca data dari UART
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]) # Batasi pesan error agar muat di LCD
print("Error:", e, "| Data:", raw_data)
sleep(0.1)
5. Analisa[Kembali]
Komentar
Posting Komentar