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:
Dalam percobaan ini, mula-mula input dimasukkan dari potensiometer ke Raspberry Pi Pico melalui komunikasi UART. Selanjutnya, dua Raspberry Pi Pico saling terhubung menggunakan komunikasi SPI, di mana Raspberry Pi Pico pertama berperan sebagai master (pengirim), sedangkan Raspberry Pi Pico kedua sebagai slave (penerima). Kemudian, data dari Raspberry Pi Pico kedua dikirim ke LCD melalui 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]