0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#でIoTプログラミング on ESP32 #3

Posted at

今回のプログラムはLEDの明るさを徐々に変化させるプログラムを紹介します。
LEDの明るさをコントロールするためにPWM(Pulse Width Modulation:パルス幅変調)を使います。

ハードウェア

・Freenove ESP32-S3-WROOM Board or Espressif ESP32-S3-DevKitC

導入するパッケージ

・nanoFramework.System.Device.Pwm
・nanoFramework.Hardware.Esp32

プログラミング

・新規プロジェクトを作成します。プロジェクト名は「ESP32S3_Blink_PWM」としました。

・コードを入力する前にパッケージをインストールしてください。

・コードは次のようになります。

Program.cs
using nanoFramework.Hardware.Esp32;
using System.Device.Pwm;
using System.Threading;

namespace ESP32S3_Blink_PWM
{
    public class Program
    {
        //LEDを接続しているGPIO
        const int ledPin = 2;
        
        public static void Main()
        {
            //LEDピンにPWMを設定
            Configuration.SetPinFunction(ledPin, DeviceFunction.PWM1);

            //周波数40KHzとしてPWMを設定
            PwmChannel pwmChannel = PwmChannel.CreateFromPin(ledPin, 40000, 0);

            //PWMをスタート
            pwmChannel.Start();

            while (true)
            {
                //20ms毎に1%づつデューティ比を増やす。
                for(int i = 0; i <100;i++)
                {
                    //PWMのデューティ比は0.0~1.0で設定する。
                    pwmChannel.DutyCycle = (double)i / 100.0;       
                    Thread.Sleep(20);
                }
                //20ms毎に1%づつデューティ比を減らす。
                for (int i = 100; i > 0; i--)
                {
                    pwmChannel.DutyCycle = (double)i / 100.0;
                    Thread.Sleep(20);
                }
            }
        }
    }
}

・実行してみるとオンボードLEDが徐々に明るくなり、また徐々に暗くなることを繰り返します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?