TP 1 M2 MIKRO



1. Kondisi[Kembali]

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

2. Gambar Rangkaian Simulasi[Kembali]










3. Video Simulasi[Kembali]







4. Prinsip Kerja[Kembali]

  • Tombol terhubung ke salah satu pin digital Arduino (misalnya pin 2), dengan resistor pull-down atau pull-up agar membaca HIGH/LOW dengan stabil.

  • LED terhubung ke pin digital lain (misalnya pin 13), melalui resistor pembatas arus (biasanya 220Ω–330Ω) supaya tidak rusak.

  • Ketika tombol ditekan, sinyal logika pada pin input berubah (dari LOW ke HIGH atau sebaliknya, tergantung skema).

  • Saat tombol ditekan, arus kecil mengalir dari Vcc (atau GND, tergantung wiring) menuju pin input Arduino.

  • Arduino mengenali perubahan tegangan ini sebagai perubahan status logika (0 → 1 atau 1 → 0).

  • Output pin Arduino kemudian mengalirkan arus kecil ke basis LED, cukup untuk menyalakan cahaya (dengan resistor pembatas agar arus tidak berlebih).

5. 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
led = Pin(6, Pin.OUT)  # LED merah ke GP6
buzzer = PWM(Pin(15))  # Buzzer ke GP15 (PWM)

# Konfigurasi buzzer
buzzer.freq(1000)
buzzer.duty_u16(0)  # Mulai dalam keadaan mati

# Fungsi konversi ADC ke lux
def adc_to_lux(adc_value):
    return (adc_value / 65535) * 900 + 10  # Estimasi 10-1000 lux

# Baca nilai normal awal sebagai baseline pencahayaan
print("Mengukur pencahayaan normal...")
utime.sleep(2)  # Waktu stabilisasi
lux_normal = adc_to_lux(ldr.read_u16())
print("Nilai lux normal:", lux_normal)

while True:
    analog_value = ldr.read_u16()
    lux = adc_to_lux(analog_value)
    print("Lux sekarang:", lux)

    if lux > lux_normal + 250:
        print("Terdeteksi cahaya terang! Menyalakan LED & buzzer.")
        start_time = utime.ticks_ms()
       
        buzzer.duty_u16(int(65535 * 0.45))  # Duty cycle 45%
       
        while utime.ticks_diff(utime.ticks_ms(), start_time) < 4000:
            led.toggle()
            utime.sleep(0.5)  # LED berkedip tiap 0.5 detik
       
        # Matikan LED dan buzzer setelah 4 detik
        led.value(0)
        buzzer.duty_u16(0)

    utime.sleep(0.2)


6. Download [Kembali]

Rangkaian Simulasi [Download]

Video Simulasi [Download]

Komentar

Postingan populer dari blog ini

Modul 3

Modul 2 Praktikum Sistem Digital

Modul 4