Facebook RSS Feed
 
.NET Micro Framework: Netduino: PWM ile LED Parlaklığı
Tarih: 11.10.2013, Platform: .NET MF 4.2, IDE: Visual Studio 2012, Level: 100

Önceki uygulamalarımızda Output Port ile bir LED'i yakıp söndürmenin üzerinde durduk. Peki, LED'in parlaklığını ayarlamak istersek ne yapmalıyız? Gözümüzün saniyenin belli bir kısmından küçük değişiklikleri algılamadığını biliyoruz. Öyleyse, LED'i gözümüzün algılayamayacağı kadar hızlı yakıp söndürürsek, parlaklığını da ayarlamış oluruz.

Örneğin, %30 parlaklık için 3 birim aç, 7 birim kapat işlemini saniyede 10.000 kez tekrarlayarak gözümüzü kandırabiliriz. Elbette saniyede 10.000'lerce işlem yapmak uygulama performansını düşürecektir. Tam bu noktada PWM yardımımıza yetişir ve tüm bu işlemleri donanımsal olarak gerçekleştirir.

Hedef

PWM, bir pinin istenilen frekansta kare dalga üretmesini sağlar. LED parlaklığı, DC motor hız kontrolü gibi işlemler PWM kullanılarak gerçekleşir. Çalışmamızda PWM parametrelerini değiştirerek, nefes alan LED uygulaması geliştireceğiz.

Gerekenler

Netduino Plus 2

Uygulama Kodları

Visual Studio'dan NetduinoPWMLED adında Micro Framework Console Application oluşturun. Proje özelliklerinden SDK versiyonunu Netduino'nuza yüklü versiyon ile aynı olacak şekilde ayarlayın. (4.2) Proje referanslarına Microsoft.SPOT.Hardware.dll, SecretLabs.NETMF.Hardware.dll, SecretLabs.NETMF.Hardware.PWM.dll ve SecretLabs.NETMF.Hardware.NetduinoPlus.dll dosyalarını ekleyin.

[C#] Program.cs

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace NetduinoPWMLED
{
    public class Program
    {
        // Onboard LED'in pinine bağlı PWM oluştur
        static PWM led = new PWM(Pins.ONBOARD_LED);

        public static void Main()
        {
            // Sonsuz döngüde
            while (true)
            {
                // Parlaklığı arttır
                for (uint i = 0; i < 100; i++)
                {
                    led.SetDutyCycle(i);
                    Thread.Sleep(20);
                }

                // Parlaklığı azalt
                for (uint i = 100; i > 0; i--)
                {
                    led.SetDutyCycle(i);
                    Thread.Sleep(20);
                }
            }
        }
    }
}

F5 ile uygulamayı çalıştırdığınızda, Netduino üzerindeki LED parlaklığının sürekli artıp azaldığını göreceksiniz. SetDutyCycle metodu, LED'in o an yüzde kaç parlaklıkta yanacağını belirtiyor. Aldığı değere göre de donanımsal olarak kare dalga üretiyor.


Ek Dosya: Belirtilmemiş.
Okunma Sayısı: 2258

comments powered by Disqus
 
Hoşgeldiniz!
Son güncelleme: 25.12.2016
-
Yeni Teknik Yazılar
Latte Panda İncelemesi
Turta IoT HAT İncelemesi
USB Gamepad Kullanımı
GPIO Kullanımı
VEML6075 UV Sensör Kullan...
-
İlgili Gruplar
.NET MF ve Gadgeteer FB Grubu
İst. IoT & Wearables Meet-up
-
 

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Copyright © 1999 - 2017, Umut Erkal. Bu materyal, "Creative Commons Public Licence" ile sunulmuştur.
Kaynak göstererek ve ücretsiz olarak, aynı şartlar altında paylaşabilir ve kullanabilirsiniz. | Kullanım Sözleşmesi