Raspberry Pi Pico PWM İle LED Parlaklığını Kontrol Etme

Güncelleme tarihi: 9 Şub

PWM Nedir?

PWM, değiştirilebilen bir cihaza verilen güç miktarını kullanan dijital bir teknolojidir. Dijital bir kaynak kullanarak analog sinyaller üretir. Bir PWM sinyali temel olarak açık ve kapalı durum arasında geçiş yapan bir kare dalgadır. Bir PWM sinyalinin görev döngüsü ve frekansı, davranışını belirler.


PWM sinyalinin yüksek (zamanında) kaldığı sürenin yüzdesine görev döngüsü denir. Sinyal her zaman açık ise %100 görev döngüsündedir ve her zaman kapalıysa %0 görev döngüsündedir.

Görev döngüsünü hesaplamak için ;

açma zamanı/(açma zamanı + kapatma zamanı) ile hesaplanır.


Uygulamamıza gelecek olursak PWM ile kontrol ederek LED’lerin yanıp sönmesini gözlemleyeceğiz.

Bu uygulamada kullanacağımız malzemelerimiz;

  • Raspberry Pi Pico

  • 4 adet 5mm LED

  • 4 adet 220R veya 330R Direnç

  • Jumper Kablolar

  • Breadboard

Öncelikle devremizi kuruyoruz. Devre şeması aşağıda verilmiştir.



LED’lerin bağlı olduğu pinleri tanımlıyoruz. Her LED’i farklı frekanslarda tanımlayarak frekans değerlerini bu uygulamamızda da gözlemliyoruz.


led1 = PWM(Pin(0,Pin.OUT))
led2 = PWM(Pin(4,Pin.OUT))
led3 = PWM(Pin(8,Pin.OUT))
led4 = PWM(Pin(12,Pin.OUT))

led1.freq(100)
led2.freq(150)
led3.freq(200)
led4.freq(250)

LED’ler için ayrı “for” döngüleri oluşturarak devam ediyoruz. For döngülerinin içinde belirtilen duty_u16 görev döngüsünün işlemesi için yazılır.


led1.duty_u16(i)

Kodun tamamı aşağıda verilmiştir.


from machine import Pin, PWM
import time

led1 = PWM(Pin(0,Pin.OUT))
led2 = PWM(Pin(4,Pin.OUT))
led3 = PWM(Pin(8,Pin.OUT))
led4 = PWM(Pin(12,Pin.OUT))

led1.freq(100)
led2.freq(150)
led3.freq(200)
led4.freq(250)

  while True:
        for i in range(0,2500,200):
        	led1.duty_u16(i)
        	print(i)
		time.sleep(0.1)
        for i in range(0,2500,200):
           	led2.duty_u16(i)
		print(i)
		time.sleep(0.01)
        for i in range(0,2500,200):
		led3.duty_u16(i)
            	print(i)
           	time.sleep(0.01)
        for i in range(0,2500,200):
            	led4.duty_u16(i)
		print(i)
		time.sleep(0.01)

Dosyayı IDE içerisinde “Run” butonu ile çalıştırıyoruz.

Son Paylaşımlar