Laporan Akhri 1 - Percobaan 1

 [KEMBALI KE MENU SEBELUMNYA]




PERCOBAAN 1
LED, BUZZER DAN LDR


1. Prosedur
 [Kembali]

  1. Rangkai semua komponen pada breadboard yang terhubung ke Raspberry Pi Pico.
  2. Hubungkan Raspberry Pi Pico dengan aplikasi Thonny IDE menggunakan kabel  USB 
  3. Build program yang telah dibuat, lalu inputkan program ke dalam mikrokontroler melalui stlink.
  4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
  5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

1. Raspberry Pi Pico







    2. Buzzer





    3. LDR




    4. Breadboard




    5. LED RGB






   
     Diagram Blok




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
    
    Kode yang diberikan berfungsi untuk membaca nilai dari sensor LDR (Light Dependent Resistor) dan mengontrol LED serta buzzer berdasarkan tingkat cahaya yang terdeteksi. Pertama, kode mengimpor pustaka yang diperlukan, seperti Pin, PWM, ADC, dan utime, untuk mengontrol pin GPIO, menghasilkan sinyal PWM, membaca nilai analog, dan mengelola fungsi terkait waktu. Selanjutnya, pin untuk LDR, LED, dan buzzer diinisialisasi, dengan buzzer dikonfigurasi untuk beroperasi pada frekuensi awal 1 kHz dan dimatikan pada awalnya. Fungsi adc_to_lux digunakan untuk mengonversi nilai ADC yang dibaca dari LDR menjadi nilai lux dalam rentang 10 hingga 1000 lux.

Dalam loop utama, kode terus-menerus membaca nilai dari LDR dan mengonversinya menjadi lux. Jika nilai lux normal belum ditentukan, nilai saat ini disimpan sebagai nilai normal. Kode kemudian mencetak nilai LDR dan lux ke konsol. Jika nilai lux melebihi nilai normal ditambah 50, LED akan berkedip dan buzzer akan aktif dengan duty cycle tertentu, serta frekuensi buzzer akan bervariasi antara 500 Hz hingga 1000 Hz. Sebaliknya, jika nilai lux tidak melebihi ambang batas, LED dimatikan dan buzzer juga dimatikan. Selain itu, jika LED harus berkedip, kode akan mengatur waktu kedipan LED setiap detik. Akhirnya, terdapat delay singkat untuk menghindari pembacaan LDR yang terlalu cepat.


4. FlowChart dan Listing Program [Kembali]

a. 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 kondisi 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 + 50: led_should_blink = True # nyalakan mode kedip 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 utime.sleep(0.1) # sedikit delay supaya tidak terlalu cepat baca LDR


b. Flowchart





6. Video Simulasi [Kembali]








7. Download File [Kembali]

Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Datasheet STM32 Klik disini
Download Datasheet  Button Klik disini
Download Datasheet LED Klik disini


Komentar

Postingan populer dari blog ini

MODUL I - GENERAL INPUT DAN OUTPUT

Sub Chapter 7.5

MODUL III - Counter