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を実装します