アルドゥイーノ:ESP32 LEDC(PWM)での使用(3)

PWM方式を出力するanalogWriteでESP32ない一般アルドゥイーノ(ピン、値)のためのArduinoのコアは、LEDを制御するように設計され、代わりにESP32 LEDCがあります。
LEDCのESP32 16個のチャネル(0〜15)の合計は、80MHzのクロックによって駆動される2つの高-低、高速チャネル(0〜7)に分割され、1MHzのクロックで駆動される低速チャネル(8〜15)。

目的

LEDCは、呼吸光を使用して実装しました

はじめのサポート

オーサリングツール:vscode + platformIOのインストールのチュートリアル

ハードウェア:bpibit

主な機能

  • double ledcSetup(uint8_t channel, double freq, uint8_t resolution_bits)
    周波数を設定し、チャネルLEDCに対応するビット(分解能デューティ比)の数をカウント、
    方法は、最終的な周波数を返します

最終のチャネル周波数=クロック/(分周ファクタ*(1つの<<桁数));(最大1024までの分周係数)

パラメータ 機能
channel 0から15までの範囲、チャンネル番号です
freq 所望の周波数を設定します
resolution_bits 0から20の範囲、ビット数をカウントする(この値は、この値は、1023(1 << resolution_bits書き込まれる最大デューティ・サイクル)を書き込むために、例えば10をデューティサイクル後ledcWrite書き込みプロセス値を決定-1)
  • void ledcWrite(uint8_t channel, uint32_t duty)
    特定の指定されたデューティ・サイクル波形チャンネル出力

  • double ledcWriteTone(uint8_t channel, double freq)
    トーン、外部の受動ブザー音を発することができる時と同様のArduino(周波数が変化するに応じて)

  • double ledcWriteNote(uint8_t channel, note_t note, uint8_t octave)
    方法はさらに、上記プロセスにカプセル化され、信号を出力直接指定モーダルスケールと音であってもよいです

パラメータ 機能
注意 チューニング、やるのと同等には、再、MI、FA ......これらの値はNOTE_C、NOTE_Cs、NOTE_D、NOTE_Eb、NOTE_E、NOTE_F、NOTE_Fs、NOTE_G、NOTE_Gs、NOTE_A、NOTE_Bb、NOTE_Bです

0から7までのオクターブスケール、;
関連コンテンツは、以下の記事を参照してもよい音楽理論:
http://www.360doc.com/content/17/1231/01/47685146_717797647.shtml
https://www.musicbody.net/sns/ index.phpを?S = /ニュース/インデックス /詳細/ ID / 406.html

  • uint32_t ledcRead(uint8_t channel)
    指定されたチャネルのデューティ比を返します。

  • double ledcReadFreq(uint8_t channel)
    現在の周波数チャネルを(現在のデューティ比が0である場合、メソッドは0を返す)を返し

  • void ledcAttachPin(uint8_t pin, uint8_t channel)
    LEDCが出力ポートIOを達成するために、チャネルにバインドされています

  • void ledcDetachPin(uint8_t pin)
    LEDCは、IOポート機能をリリース

使用例

#include <Arduino.h>

int freq = 2000;    // 频率
int channel = 0;    // 通道
int resolution = 8;   // 分辨率

const int led = 18;
void setup()
{

  ledcSetup(channel, freq, resolution); // 设置通道
  ledcAttachPin(led, channel);  // 将通道与对应的引脚连接
}

void loop()
{
  // 逐渐变亮
  for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 5)
  {
    ledcWrite(channel, dutyCycle);  // 输出PWM
    delay(20);
  }

  // 逐渐变暗
  for (int dutyCycle = 255; dutyCycle >= 0; dutyCycle = dutyCycle - 5)
  {
    ledcWrite(channel, dutyCycle);  // 输出PWM
    delay(20);
  }
}

概要

これはESP32のためのPWM analogWrite(ピン、値)メソッドArduinoのコアを出力するためのArduinoを好きではなかったが、むしろLEDC(LED制御)機能を用いてPWMを実装します

おすすめ

転載: blog.csdn.net/weixin_43474408/article/details/90743082