PERCOBAAN 1





1. Prosedur [kembali]
- siapkan komponen yang dibutuhkan seperti resistor,raspberry pi pico,LED, LDR sensor dan buzzer
- buatlah rangkaian seperti pada modul 
- masukkan listing program yang sesuai
- simulasikan rangkaian

2. Rangkaian Simulasi dan Prinsip Kerja [kembali]





Pada rangkaian terdapat raspberry pi pico sebagai mikroprosesor, kemudian ada sensor LDR , ada   resistor ,ada LED merah  dan buzzer
Sensor LDR terhubung ke pin GPIO 28 pada raspberry pi pico sebagai input yaitu untuk mendeteksi adanya perubahan intensitas cahaya atau LUX. kemudian, LED merah terhubung pada resistor dan pin GPIO 28 yang akan menyala jika terdeteksi intensitas cahaya lebih gelap dari normal dan berkedip setiap 3 detik.


3. 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 (tidak digunakan)
led = Pin(6, Pin.OUT)      # LED di GP6
buzzer = PWM(Pin(15))      # Buzzer di GP15 dengan PWM

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

# Fungsi untuk mengonversi nilai ADC ke lux
def adc_to_lux(adc_value):
    return (adc_value / 65535) * 900 + 10  # Rentang 10 - 1000 lux

# Variabel untuk menyimpan kondisi normal awal
lux_normal = 0

# Variabel untuk kontrol LED berkedip
last_blink_time = utime.ticks_ms()
led_state = False
led_should_blink = False
blink_start_time = 0

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

    if lux_normal == 0:
        lux_normal = lux
        print(f"Lux Normal: {lux_normal:.2f} lux")

    print(f"LDR Value: {analog_value} | Lux: {lux:.2f}")

    # Kondisi: Jika lebih gelap dari normal sebesar 100 lux
    if lux < lux_normal - 100  :
        if not led_should_blink:
            blink_start_time = utime.ticks_ms()
            led_should_blink = True

        buzzer.duty_u16(22936)  # Duty cycle 35%

    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, blink_start_time) < 3000:  # 3 detik berkedip
            if utime.ticks_diff(current_time, last_blink_time) >= 500:  # Kedip setiap 0.5 detik
                led_state = not led_state
                led.value(led_state)
                last_blink_time = current_time
        else:
            led_should_blink = False
            led.off()
            buzzer.duty_u16(0)

    utime.sleep(0.05)  # Sedikit delay supaya pembacaan stabil





4. Kondisi [kembali]

Percobaan 1 Kondisi 2
Buatlah rangkaian seperti gambar pada percobaan 1, buatlah ketika LDR membaca Lebih Gelap dari normal sebesar 100 LUX Led merah hidup berkedip selama 3 detik dan Duty Cycle Buzzer 35%


5. Video Simulasi [kembali]




6. Download file [kembali]
- Rangkaian [disini]
-video [disini]
-datasheet raspberry pi pico [disini]
-datasheet resistor [disini]
-datasheet LED [disini]
-datasheet LDR sensor [disini]
-datasheet Buzzer [disini]

Komentar

Postingan populer dari blog ini