M2_TP1



Percobaan 1 kondisi 3
Led, Buzzer, & LDR


1. Prosedur[Kembali]

    1. Buat rangkaian di wokwi sesuai dengan kondisi percobaan.
    2. Buat program di wokwi.
    4. Jalankan simulasinya 
    5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

Hardware :

  • Raspberry pi pico
  • Push button
  • Buzzer


  • LED
  • Resistor

  • light dependent resistor (LDR)




3. Rangkaian Simulasi[Kembali]

  • Rangkaian sebelum di running


  • Rangkaian setelah di running


  • Prinsip Kerja 
Rangkaian ini dibuat mengikuti gambar pada Percobaan 1, dengan menggunakan sebuah sensor LDR (Light Dependent Resistor) sebagai input, serta LED merah dan buzzer sebagai output, yang semuanya dikendalikan oleh Raspberry Pi Pico. LDR dihubungkan ke salah satu pin ADC pada Raspberry Pi Pico untuk membaca intensitas cahaya di lingkungan sekitar. Sistem ini dirancang untuk mendeteksi apabila intensitas cahaya yang terbaca lebih terang sebesar 200 lux dibandingkan kondisi normal. Ketika intensitas cahaya melebihi ambang batas tersebut, Raspberry Pi Pico akan mengaktifkan LED merah untuk menyala berkedip selama 4 detik. Selain itu, buzzer juga akan diaktifkan dengan menggunakan sinyal PWM dan duty cycle sebesar 45%. Apabila cahaya yang terbaca tidak melebihi ambang batas yang ditentukan, maka LED dan buzzer akan tetap dalam keadaan mati. Penggunaan mode ADC pada Raspberry Pi Pico memungkinkan pembacaan data LDR secara akurat, sedangkan PWM digunakan untuk mengatur tingkat duty cycle pada buzzer sesuai dengan kebutuhan.

4. 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_akhir = adc_to_lux(analog_value)
    lux= 1000-lux_akhir

   

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

    if lux >  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

5. 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%

6. Video Simulasi[Kembali]

     





7. Download File[Kembali]

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









 

Komentar

Postingan populer dari blog ini

Modul 1 Input Output

Modul 3

Tugas Besar