from machine import Pin, ADC, I2C, PWM
import utime
from ssd1306 import SSD1306_I2C  

# Inisialisasi Hardware
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=400000)
oled = SSD1306_I2C(128, 64, i2c)
pot = ADC(26)
led = PWM(Pin(0))
led.freq(1000) #Frekuensi PWM 1KHz (1000Hz)

# Pendefinisian fungsi untuk membaca voltase pada board
def read_voltage():
    return (3.3 / 65535) * pot.read_u16() 
    #65535 = nilai maksimal 16 bit ADC dan PWM

#Pendefinisian fungsi untuk mengatur kecerahan LED dengan PWM berdasarkan voltasenya
def control_led(voltage):
    led.duty_u16(int((voltage / 3.3) * 65535))  # Konversi ke PWM

# Menampilkan Voltase di Oled
def display_on_oled(voltage):
    oled.fill(0)
    oled.text("Voltase:", 0, 20)
    oled.text(f"{voltage:.2f}V", 0, 40)
    oled.show()

while True:
    voltage = read_voltage() # Pemanggilan fungsi untuk membaca voltase pada board
    control_led(voltage) # Pemanggilan fungsi untuk mengatur kecerahan LED via PWM
    display_on_oled(voltage) # Pemanggilan fungsi untuk menampilkan pesan di OLED
    utime.sleep(0.1)
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT
pico:GP0
pico:GP1
pico:GND.1
pico:GP2
pico:GP3
pico:GP4
pico:GP5
pico:GND.2
pico:GP6
pico:GP7
pico:GP8
pico:GP9
pico:GND.3
pico:GP10
pico:GP11
pico:GP12
pico:GP13
pico:GND.4
pico:GP14
pico:GP15
pico:GP16
pico:GP17
pico:GND.5
pico:GP18
pico:GP19
pico:GP20
pico:GP21
pico:GND.6
pico:GP22
pico:RUN
pico:GP26
pico:GP27
pico:GND.7
pico:GP28
pico:ADC_VREF
pico:3V3
pico:3V3_EN
pico:GND.8
pico:VSYS
pico:VBUS
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA
pot1:GND
pot1:SIG
pot1:VCC
led1:A
led1:C
r1:1
r1:2