a) Prosedur[Kembali]

  1. Membuka website wokwi.com
  2. Pilih Raspberry Pi Pico
  3. Pilih Micropython
  4. Susun rangkaian sesuai kondisi dan modul
  5. Memasukkan codingan rangkaian berdasarkan algoritma kondisi
  6. Jalankan rangkaian
  7. Selesai

b) Hardware dan Diagram Blok[Kembali]

  • Raspberry Pi Pico
Gambar 1. Raspberry Pi Pico.

  • LDR dan Photodioda
  • Buzzer
  • LED
  • Resistor

c) Rangkaian Simulasi dan Prinsip Kerja[Kembali]


Gambar 2. Rangkaian simulasi.


d) Flowchart dan Listing Program[Kembali]

  • Flowchart

  • Listing Program

from machine import Pin, PWM, ADC
import utime

# Pin Setup
ldr = ADC(28)          # Pin AO dari LDR ke GP28
ldr_digital = Pin(0, Pin.IN)  # Pin DO dari LDR ke GP0 (kalau mau dipakai nanti)
led = Pin(6, Pin.OUT)  # LED di GP6
buzzer = PWM(Pin(15))  # Buzzer di GP15 dengan PWM

# Konfigurasi PWM Buzzer
buzzer.freq(1000)       # Frekuensi awal buzzer (1kHz)
buzzer.duty_u16(0)      # Mulai dengan buzzer mati

# Fungsi untuk mengonversi nilai ADC ke lux
def adc_to_lux(adc_value):
    normalized_adc = (adc_value - 512) / (65007 - 512)  # Normalisasi ADC
    lux = normalized_adc * 990 + 10  # Rentang 10 - 1000 lux
    return lux

# Variabel untuk menyimpan kondisi normal awal


# Variabel untuk kedip LED
last_blink_time = utime.ticks_ms()
led_state = False
led_should_blink = False  # hanya True saat kondisi mendeteksi perubahan cahaya signifikan

# Loop utama
while True:
    analog_value = ldr.read_u16()
    lux = adc_to_lux(analog_value)
    lux_akhir= 1000-lux

    print(f"LDR Value: {analog_value} | Lux: {lux_akhir}")

    if lux_akhir >  200:
        led_should_blink = True  # nyalakan mode kedip
        buzzer.duty_u16(int(0.45 * 65535))   # nyalakan buzzer
        for i in range(500, 1000, 100):  # variasi frekuensi buzzer
            buzzer.freq(i)
            utime.sleep(0.1)
    else:
        led_should_blink = False
        led.off()
        buzzer.duty_u16(0)

    # Kedip LED jika perlu
    if led_should_blink:
        current_time = utime.ticks_ms()
        if utime.ticks_diff(current_time, last_blink_time) >= 4000:
            led_state = not led_state
            led.value(led_state)
            last_blink_time = current_time
    else:
        led.off()

    utime.sleep(0.1)  # sedikit delay supaya tidak terlalu cepat baca LDR

e) Kondisi[Kembali]

Percobaan 1 Kondisi 3

Buatlah rangkaian seperti gambar pada percobaan 1, buatlah ketika LDR membaca Lebih terang dari normal sebesar 200 LUX Led merah hidup berkedip selama 4 detik dan Duty Cycle Buzzer 45%

f) Video Simulasi[Kembali]


Video Simulasi.


g) Download File[Kembali]

Link rangkaian [klik]

Download video simulasi [klik]