#160Pemula

LED Fade PWM Raspberry Pi Pico (Efek Bernapas)

LED tidak lagi sekadar berkedip, ia bernapas! Dengan PWM (Pulse Width Modulation) Pico, kecerahan LED naik lalu turun perlahan, seperti lampu MacBook yang tidur. Pelajari kelas machine.PWM, duty_u16() (kecerahan 16-bit 0–65535), frekuensi PWM (freq(1000): 1000 siklus per detik, tanpa kedipan terlihat), loop range() bertahap, dan output mirip analog dari pin digital. PWM juga dipakai untuk warna RGB, motor, servo, dan buzzer.

0.0(0)
4 selesai
LED Fade PWM Raspberry Pi Pico (Efek Bernapas)
LED yang bernapas dengan tenang, seperti lampu di perangkat yang sedang standby. Raspberry Pi Pico perlahan menaikkan kecerahan LED, lalu perlahan menurunkannya lagi, dalam loop yang tidak pernah berakhir. Kamu akan melihat dengan matamu sendiri bahwa sebuah pin bisa melakukan lebih dari sekadar nyala atau mati: ia bisa berpendar di setiap tingkat kecerahan di antaranya.

Video

Skema rangkaian

LED Fade PWM Raspberry Pi Pico (Efek Bernapas) - Circuit

Kode sumber

MicroPython
1# ─────────────────────────────────────────
2#   BlueGrays · bluegrays.com
3#   LED Fade PWM Raspberry Pi Pico (Efek Bernapas)
4# ─────────────────────────────────────────
5# Dengan PWM, kecerahan LED naik dan turun dengan halus (efek bernapas).
6# STEP mengatur perubahan kecerahan per langkah dan STEP_DELAY_MS jeda
7# antar langkah; satu napas butuh sekitar 1.3 s.
8#
9# Pin:
10#   GP14 -> LED hijau (resistor 220 ohm, katoda ke GND)
11
12from machine import Pin, PWM
13from time import sleep_ms
14
15# ============ SETUP PWM ============
16led = PWM(Pin(14))
17led.freq(1000)          # tanpa kedipan yang terlihat
18
19STEP          = 512     # Langkah kecerahan (0-65535)
20STEP_DELAY_MS = 5       # Delay per langkah (ms)
21
22# ============ LOOP UTAMA ============
23while True:
24    # Fade in (0 -> 65535)
25    for duty in range(0, 65536, STEP):
26        led.duty_u16(duty)
27        sleep_ms(STEP_DELAY_MS)
28
29    # Fade out (65535 -> 0)
30    for duty in range(65535, -1, -STEP):
31        led.duty_u16(duty)
32        sleep_ms(STEP_DELAY_MS)
33

FAQ

Nilai apa yang diterima duty_u16()?

Fungsi ini menerima nilai 16-bit dari 0 sampai 65535: 0 berarti mati total, 65535 kecerahan penuh, dan 32768 sekitar setengah kecerahan.

Kenapa frekuensi PWM-nya 1000 Hz?

LED yang menyala-mati 1000 kali per detik terlihat sebagai cahaya tetap oleh mata, tanpa kedipan. Pada frekuensi yang sangat rendah (mis. 50 Hz), kedipannya bisa terlihat.

Bagaimana agar efek bernapas terlihat lebih alami?

Menaikkan kecerahan secara kuadratik atau eksponensial, bukan linear, sesuai dengan cara mata menangkap cahaya. Menambahkan jeda singkat di titik paling redup juga terasa lebih seperti ritme napas sungguhan.

Bisakah setiap pin Pico mengeluarkan PWM?

Ya, semua pin GPIO di Pico bisa menghasilkan PWM. Pico punya 8 slice PWM (16 kanal); dua pin yang berbagi slice yang sama harus memakai frekuensi yang sama.