Tugas Pendahuluan 1


Percobaan 1 Kondisi 3
Led & Switch

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di website wokwi
  • Jalankan program dan cobakan sesuai kondisi

Hardware :

  • Raspberry pi pico



  • Sensor LDR 


  • LED



  • Resistor


  • Buzzer


Diagram Blok


  • Rangkaian
  • Prinsip Kerja

Prinsip kerja rangkaian ini dimulai dari inisialisasi semua komponen pada Raspberry Pi Pico, yaitu dengan mengatur pin GP26 sebagai input analog untuk membaca sensor LDR, pin GP0 untuk mengendalikan LED sebagai output, dan pin GP2 untuk mengendalikan buzzer menggunakan sinyal PWM. Ketika program dijalankan, sistem pertama-tama melakukan pembacaan nilai awal dari sensor LDR, yang kemudian dikonversi menjadi nilai lux menggunakan fungsi konversi adc_to_lux(). Nilai lux yang pertama kali terbaca ini disimpan sebagai lux normal, yaitu nilai patokan kondisi cahaya standar pada saat awal sistem menyala. Setelah kalibrasi awal selesai, sistem masuk ke mode monitoring yang berjalan terus-menerus. Dalam mode ini, Raspberry Pi Pico membaca nilai sensor LDR setiap 0,1 detik, mengubah nilai ADC menjadi lux, lalu membandingkannya dengan lux normal. Jika ditemukan bahwa intensitas cahaya meningkat signifikan, yaitu selisih nilai lux lebih besar dari 200 dibanding lux normal, maka sistem memberikan respons berupa aktivasi LED dan buzzer. LED mulai menyala dengan mode berkedip, di mana LED menyala dan mati bergantian setiap 0,5 detik selama total waktu 4 detik. Pada saat yang sama, buzzer diaktifkan menggunakan PWM dengan duty cycle sebesar 45% dan frekuensinya berubah-ubah dari 500 Hz hingga 1000 Hz, berganti setiap 0,1 detik untuk menghasilkan efek suara yang dinamis sebagai sinyal peringatan. Setelah durasi 4 detik berakhir, LED dan buzzer kembali dimatikan, dan sistem secara otomatis kembali ke mode monitoring untuk terus mendeteksi perubahan intensitas cahaya berikutnya.

  • Flowchart
  • Listing Program
from machine import Pin, PWM, ADC
import utime

# Pin Setup
ldr = ADC(26)               # Pin AO dari LDR ke GP26
led = Pin(0, Pin.OUT)        # LED di GP0
buzzer = PWM(Pin(2))         # Buzzer di GP2 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):
    return (adc_value / 65535) * 900 + 10  # Rentang 10 - 1000 lux

# Variabel untuk menyimpan kondisi normal awal
lux_normal = 0

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

# 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}")

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

    if lux > lux_normal + 200:
        print("Cahaya lebih terang 200 lux! Aktifkan LED dan Buzzer selama 4 detik.")
        led_should_blink = True  # Nyalakan mode kedip
        buzzer.duty_u16(int(0.45 * 65535))    # Duty Cycle 45%

        blink_start_time = utime.ticks_ms()  # Waktu mulai kedip

        # Kedip LED selama 4 detik
        while utime.ticks_diff(utime.ticks_ms(), blink_start_time) <= 4000:  # Kedip selama 4 detik
            # Ubah frekuensi buzzer secara berkala selama 4 detik
            for i in range(500, 1000, 100):  # Variasi frekuensi buzzer
                buzzer.freq(i)
                utime.sleep(0.1)  # Memberi waktu untuk setiap frekuensi, sementara LED tetap berkedip

            # Kedip LED setiap 500ms
            current_time = utime.ticks_ms()
            if utime.ticks_diff(current_time, last_blink_time) >= 500:  # Kedip setiap 500ms
                led_state = not led_state
                led.value(led_state)
                last_blink_time = current_time

        # Setelah 4 detik, matikan LED dan buzzer
        led_should_blink = False
        led.off()
        buzzer.duty_u16(0)

    else:
        led_should_blink = False
        led.off()
        buzzer.duty_u16(0)

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

5. Video Demo [Kembali]


6. Kondisi [Kembali]

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%

HTML [Download]
Rangkaian [Download
Video Simulasi [Download 
Listring Program [Download 


Tidak ada komentar:

Posting Komentar

   BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA 2023 Nama : Hadi Andhika Jafta NIM : 2210951009 Dosen Pengampu : Dr. Darwison, MT...