TP M2 P1K7

 

PERCOBAAN 1 KONDISI 7



1. Prosedur [kembali]

Led, Buzzer & LDR

  1. Siapkan alat alat yang diperlukan pada wokwi simulation
  2. Hubungkan LDR pada pin GPIO 28 dan sumber 3.3 V serta hubungkan juga groundnya
  3. Hubungkan bagian anoda LED ke pin GPIO 6 dan bagian Katoda ke ground
  4. Hubungan Buzzer ke pin GPIO 15 dan GND
  5. Inputkan Listing Program
  6. Running
2. Hardware dan Diagram Blok [kembali]
  • Rasberry Pi Pico

  • LED

  • LDR

  • Buzzer


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


Prinsip kerja:

  • Rangkaian ini memanfaatkan sensor LDR untuk memantau intensitas cahaya dan memberikan respon melalui LED serta buzzer. Sensor LDR terhubung ke pin GP28 (sebagai input analog), sedangkan LED merah dihubungkan ke GP6 (sebagai output digital), dan buzzer dikendalikan melalui GP15 dengan sinyal PWM 1000 Hz.

  • Program ini menggunakan library Pin, PWM, ADC, dan utime. Nilai ADC dari LDR dikonversi menjadi satuan Lux menggunakan fungsi adc_to_lux(), dengan rentang konversi antara 10 hingga 910 Lux. Ambang batas normal ditentukan pada 300 Lux.
  • Dalam loop utama, sistem terus membaca nilai Lux dari sensor. Bila terdeteksi cahaya ≥ 500 Lux (yakni 200 Lux di atas nilai normal), maka buzzer akan menyala dengan duty cycle 25%, dan LED merah akan berkedip setiap 300 milidetik. Buzzer berbunyi selama 2 detik, yang diatur dengan bantuan variabel seperti alert_triggered, led_blink_active, serta fungsi penghitungan waktu berbasis utime.ticks_ms() agar proses pemantauan tetap responsif.
  • Setiap iterasi loop utama diberi jeda 0,1 detik untuk menjaga efisiensi dan menghindari beban berlebih pada mikrokontroler.


4. Flowchart dan Listing Program [kembali]


Listing Program:
from machine import Pin, PWM, ADC import utime # Inisialisasi sensor dan aktuator ldr = ADC(28) # Pin ADC LDR led = Pin(6, Pin.OUT) # LED Merah buzzer = PWM(Pin(15)) # Buzzer buzzer.freq(1000) buzzer.duty_u16(0) # Fungsi konversi ADC ke Lux def adc_to_lux(adc_value): return (adc_value / 65535) * 900 + 10 # Kalibrasi Lux Normal selama 2 detik print("Kalibrasi Lux Normal...") sampel = [] start = utime.ticks_ms() while utime.ticks_diff(utime.ticks_ms(), start) < 2000: sampel.append(adc_to_lux(ldr.read_u16())) utime.sleep(0.05) lux_normal = sum(sampel) / len(sampel) print(f"Lux Normal = {lux_normal:.2f} Lux") # Variabel status led_blinking = False blink_start = 0 last_toggle = 0 led_state = False alarm_triggered = False # Loop utama while True: nilai_adc = ldr.read_u16() lux = adc_to_lux(nilai_adc) print(f"Lux Sekarang: {lux:.2f} Lux") # Cek apakah lebih terang dari normal + 300 LUX if not alarm_triggered and (lux - lux_normal) >= 300: buzzer.duty_u16(int(0.25 * 65535)) # Buzzer duty cycle 25% led_blinking = True blink_start = utime.ticks_ms() last_toggle = blink_start alarm_triggered = True print(">>> Alarm Aktif <<<") # Proses kedip LED selama 2 detik if led_blinking: now = utime.ticks_ms() # Toggle LED setiap 300ms if utime.ticks_diff(now, last_toggle) >= 300: led_state = not led_state led.value(led_state) last_toggle = now # Hentikan blinking setelah 2 detik if utime.ticks_diff(now, blink_start) >= 2000: led_blinking = False led.value(0) buzzer.duty_u16(0) # Matikan buzzer setelah 2 detik print(">>> Alarm Selesai <<<") utime.sleep(0.1)


5. Video Demo [kembali]

6. Kondisi [kembali]

P1 K7
Buatlah rangkaian seperti gambar pada percobaan 1, buatlah ketika LDR membaca Lebih terang dari normal sebesar 300 LUX  Led merah hidup berkedip selama 2 detik dan Duty Cycle Buzzer 25%

7. Video Simulasi [kembali]



8. Download file [kembali]

Komentar

Postingan populer dari blog ini