PWM Signal Module 8 body { font-family: sans-serif; line-height: 1.6; max-width: 800px; margin: 40px auto; padding: 0 20px; color:
#0078d7; color: white; padding: 20px; margin: 20px 0; border-radius: 5px; } PWM Signal Module 8
Script 1
from machine import Pin, PWM
from time import sleep
frequency = 5000
led = PWM(Pin(18), frequency)
while True:
for duty in range(0,1023):
led.duty(duty)
sleep(0.005)
Script 2
from machine import Pin, ADC, PWM
import time
led_pin = Pin(2, Pin.OUT)
t_pot_pin = Pin(13)
pot_pin = ADC(t_pot_pin)
pwm = PWM(led_pin)
while True:
pot_value = pot_pin.read()
brightness = pot_value / 4095.0
pwm.duty(int(brightness * 1023))
time.sleep(0.1)
PENJELASAN 1
Script tersebut adalah sebuah program dalam bahasa MicroPython yang mengatur intensitas cahaya pada sebuah LED dengan menggunakan modul PWM (Pulse Width Modulation). Berikut adalah penjelasan mengenai setiap baris kode:
-
from machine import Pin, PWM: Baris ini mengimpor modul Pin dan PWM dari modul machine. Modul machine digunakan untuk mengakses perangkat keras mikrokontroler.
-
from time import sleep: Baris ini mengimpor fungsi sleep dari modul time. Fungsi sleep digunakan untuk memberikan jeda waktu dalam program.
-
frequency = 5000: Baris ini mendefinisikan variabel frequency dengan nilai 5000. Variabel ini menentukan frekuensi PWM yang akan digunakan.
-
led = PWM(Pin(18), frequency): Baris ini membuat objek PWM yang terhubung ke pin GPIO 18. Objek PWM digunakan untuk mengendalikan sinyal PWM pada pin tersebut dengan frekuensi yang ditentukan oleh variabel frequency.
-
while True:: Baris ini memulai sebuah loop tak terbatas.
-
for duty in range(0,1023):: Baris ini mengiterasi variabel duty dalam rentang 0 hingga 1022 (inclusive). Variabel duty akan digunakan untuk mengatur duty cycle dari sinyal PWM.
-
led.duty(duty): Baris ini mengatur duty cycle pada objek led sesuai dengan nilai duty pada setiap iterasi. Nilai duty berkisar antara 0 hingga 1022, di mana 0 adalah duty cycle terendah (LED mati) dan 1022 adalah duty cycle tertinggi (LED menyala penuh).
-
sleep(0.005): Baris ini memberikan jeda waktu selama 0.005 detik sebelum melanjutkan iterasi berikutnya dalam loop. Ini mengontrol kecepatan perubahan intensitas cahaya pada LED.
Dengan cara ini, program akan secara terus-menerus mengubah intensitas cahaya LED dari kegelapan hingga kecerahan penuh dan kemudian kembali lagi dalam pola yang berulang.
PENJELASAN 2
Script tersebut adalah program dalam bahasa MicroPython yang mengontrol intensitas cahaya pada sebuah LED menggunakan potensiometer (potensiometer) sebagai input. Berikut adalah penjelasan untuk setiap baris kode:
-
from machine import Pin, ADC, PWM: Baris ini mengimpor modul Pin, ADC, dan PWM dari modul machine. Modul machine digunakan untuk mengakses perangkat keras mikrokontroler.
-
import time: Baris ini mengimpor modul time. Modul time digunakan untuk mengakses fungsi sleep yang digunakan untuk memberikan jeda waktu dalam program.
-
led_pin = Pin(2, Pin.OUT): Baris ini menginisialisasi objek led_pin sebagai pin GPIO nomor 2 dengan mode keluaran (output). Pin ini akan digunakan untuk mengendalikan LED.
-
t_pot_pin = Pin(13): Baris ini menginisialisasi objek t_pot_pin sebagai pin GPIO nomor 13. Pin ini akan digunakan untuk membaca nilai dari potensiometer.
-
pot_pin = ADC(t_pot_pin): Baris ini menginisialisasi objek pot_pin sebagai objek ADC (Analog to Digital Converter) yang terhubung ke pin t_pot_pin. ADC digunakan untuk mengubah sinyal analog dari potensiometer menjadi nilai digital yang dapat dibaca oleh mikrokontroler.
-
pwm = PWM(led_pin): Baris ini menginisialisasi objek pwm sebagai objek PWM (Pulse Width Modulation) yang terhubung ke pin led_pin. Objek pwm akan digunakan untuk mengendalikan intensitas cahaya pada LED dengan modulasi lebar pulsa.
-
while True:: Baris ini memulai sebuah loop tak terbatas.
-
pot_value = pot_pin.read(): Baris ini membaca nilai dari potensiometer menggunakan objek pot_pin dan menyimpannya dalam variabel pot_value. Nilai yang dibaca berkisar antara 0 hingga 4095.
-
brightness = pot_value / 4095.0: Baris ini menghitung tingkat kecerahan berdasarkan nilai yang dibaca dari potensiometer. Nilai pot_value dibagi dengan 4095.0 (rentang maksimum nilai ADC) untuk mendapatkan nilai antara 0 hingga 1 yang mewakili tingkat kecerahan relatif.
-
pwm.duty(int(brightness * 1023)): Baris ini mengatur duty cycle pada objek pwm dengan nilai yang dihasilkan dari perhitungan brightness. Nilai brightness dikalikan dengan 1023 dan diubah menjadi integer untuk mendapatkan nilai duty cycle antara 0 hingga 1023.
-
time.sleep(0.1): Baris ini memberikan jeda waktu selama 0.1 detik sebelum melanjutkan iterasi berikutnya dalam loop. Ini mengontrol kecepatan perubahan intensitas cahaya pada LED berdasarkan perubahan pada potensiometer.
Dengan cara ini, program akan secara terus-menerus membaca nilai dari potensiometer, menghitung tingkat kecerahan yang sesuai, dan mengatur intensitas cahaya LED sesuai dengan nilai tersebut. Perubahan pada potensiometer akan seger
Discussion (0)