Laporan Akhir 1 M2
PERCOBAAN 1
1. Prosedur[Kembali]
- Rangkai semua komponen sesuai dengan percobaan 1 pada modul
- Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian dan kondisi yang dipakai
- Masukkan Program ke Thony (micropython)
- Upload program ke Raspberry Pi Pico
2. Hardware dan Diagram Blok[Kembali]
1. Raspberry PI PICO
4. Sensor LDR
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian:
Dari sensor LDR akan memberikan inputan yang dimana saat yang dimana jika sensornya ke trigger maka LED akan aktif dan buzzer akan berbunyi, yang dimana untuk aktifnya led dan buzzer ini memiliki selang waktu tertentu untuk menyala dan berbunyi .
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
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):
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 # set awal nilai normal saat pertama kali
print(f"Lux Normal: {lux_normal}")
print(f"LDR Value: {analog_value} | Lux: {lux:.2f}")
if lux > lux_normal + 50:
led_should_blink = True
buzzer.duty_u16(30000) # 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) >= 1000:
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. Analisa[Kembali]
Komentar
Posting Komentar