LA M3




Laporan Akhir  Modul 3
(Percobaan 6)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di raspberry pi pico sesuai dengan kondisi percobaan.
2. Buat program dengan bahasa python.
3. Jalankan simulasi rangkaian.
4. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Raspberry PI PICO

 

 







3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :








Prinsip Kerja : 

Proses komunikasi I2C antara Raspberry Pi Pico dengan LCD (misalnya LCD 16x2 yang menggunakan modul I2C backpack) berlangsung sebagai berikut:

Raspberry Pi Pico bertindak sebagai master, sementara LCD sebagai slave. Pico akan menginisialisasi komunikasi dengan mengatur jalur SDA (data) dan SCL (clock) menggunakan pustaka seperti machine pada MicroPython atau Wire jika menggunakan C/C++.

Setelah itu, Pico mengirimkan alamat I2C dari LCD yang umumnya adalah 0x27 atau 0x3F, tergantung pada jenis backpack I2C yang digunakan. Alamat ini dikirim melalui jalur SDA, dan sinyal sinkronisasi dikendalikan oleh SCL.

Jika LCD mengenali alamat tersebut sebagai miliknya, maka ia akan memberikan sinyal ACK (acknowledge), yang berarti ia siap menerima data.

Selanjutnya Pico mengirimkan perintah (command) untuk mengatur mode LCD, seperti mengaktifkan tampilan, mengatur jumlah baris dan kolom, serta menentukan apakah data yang dikirim adalah karakter atau instruksi.

Setiap karakter yang ingin ditampilkan dikirim dalam bentuk data byte. LCD akan menerima byte ini, memprosesnya, dan menampilkan karakter pada posisi yang ditentukan di layar.

Komunikasi terus berlangsung dalam mode master-slave hingga semua karakter atau perintah dikirim. Setelah selesai, Pico mengirimkan sinyal stop untuk mengakhiri komunikasi.

Keseluruhan proses berlangsung secara sinkron dengan kecepatan standar I2C (biasanya 100 kHz) dan dapat dikonfigurasi sesuai kebutuhan.


Analisa :



4. Flowchart dan Listing Program [Kembali]

Flowchart :

   









Listing Program :

Listing Program:
from machine import Pin, ADC, PWM, I2C
from pico_i2c_lcd import I2cLcd
import utime

# 1. Setup Potensiometer (GP26 = ADC0)
pot = ADC(Pin(26))

# 2. Setup Servo (GP15)
servo = PWM(Pin(15))
servo.freq(50)  # Frekuensi PWM standar servo

# 3. Setup LCD I2C 16x2
I2C_ADDR = 0x27  # Alamat I2C LCD, bisa 0x3F tergantung modul
I2C_NUM_ROWS = 2
I2C_NUM_COLS = 16
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)  # GP0 = SDA, GP1 = SCL
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)

# Fungsi untuk mapping nilai
def map_value(x, in_min, in_max, out_min, out_max):
    return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min

# Kalibrasi servo
SERVO_MIN_DUTY = 1500  # Duty cycle untuk 0°
SERVO_MAX_DUTY = 7500  # Duty cycle untuk 180°

while True:
    # Baca nilai potensiometer
    pot_value = pot.read_u16()

    # Konversi ke sudut 0-180°
    angle = map_value(pot_value, 0, 65535, 0, 180)

    # Konversi sudut ke duty cycle
    duty = map_value(angle, 0, 180, SERVO_MIN_DUTY, SERVO_MAX_DUTY)
    servo.duty_u16(duty)

    # Tampilkan di LCD
    lcd.clear()
    lcd.putstr("Sudut Servo:")
    lcd.move_to(0, 1)
    lcd.putstr(f"{angle} derajat")

        utime.sleep_ms(200)  # Delay untuk mengurangi flicker


5. Kondisi [Kembali]
percobaan 6
6. Video Simulasi [Kembali]











7. Download File [Kembali]

Download File Rangkaian [Download]
Link Wokwi [Link]













Komentar

Postingan populer dari blog ini