{"id":1308,"date":"2026-01-22T09:24:55","date_gmt":"2026-01-22T01:24:55","guid":{"rendered":"https:\/\/www.640629.xyz\/?p=1308"},"modified":"2026-01-22T11:06:29","modified_gmt":"2026-01-22T03:06:29","slug":"%e8%9c%82%e9%b3%b4%e5%99%a8%e3%80%81tone%e7%b7%b4%e7%bf%92","status":"publish","type":"post","link":"https:\/\/www.640629.xyz\/?p=1308","title":{"rendered":"\u8702\u9cf4\u5668\u3001ledcWriteTone()\u57fa\u672c\u7df4\u7fd2"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/img.640629.xyz\/i\/67b681bee5888.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u672c\u55ae\u5143\u5229\u7528ESP32\u7684PWM (\u8108\u885d\u5bec\u5ea6\u8abf\u8b8a) \u6280\u8853\u63a7\u5236\u8702\u9cf4\u5668\u4f86\u64ad\u653e\u97f3\u6a02\uff0c\u8aaa\u660e\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>1\u3001\u5b9a\u7fa9\u97f3\u7b26\u983b\u7387\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/ \u97f3\u7b26\u7bc4\u570d\uff1aC3~C7\uff08\u6db5\u84cb\u4f4e\u97f3\u5230\u9ad8\u97f3\uff09\uff0c\u5305\u542b\u6240\u6709\u5347\u964d\u97f3\uff08\u266f\u3001\u266d\uff09\n\/\/ \u55ae\u4f4d\uff1a\u8d6b\u8332\uff08Hz\uff09\n\n\/\/ \u4f4e\u97f3\u5340\uff08C3 ~ B3\uff09\n#define C3  131\n#define Cs3 139  \/\/ C#3 \/ Db3\n#define D3  147\n#define Ds3 156  \/\/ D#3 \/ Eb3\n#define E3  165\n#define F3  175\n#define Fs3 185  \/\/ F#3 \/ Gb3\n#define G3  196\n#define Gs3 208  \/\/ G#3 \/ Ab3\n#define A3  220\n#define As3 233  \/\/ A#3 \/ Bb3\n#define B3  247\n\n\/\/ \u4e2d\u97f3\u5340\uff08C4 ~ B4\uff0c\u5305\u542b\u6a19\u6e96 C4\uff09\n#define C4  262\n#define Cs4 277  \/\/ C#4 \/ Db4\n#define D4  294\n#define Ds4 311  \/\/ D#4 \/ Eb4\n#define E4  330\n#define F4  349\n#define Fs4 370  \/\/ F#4 \/ Gb4\n#define G4  392\n#define Gs4 415  \/\/ G#4 \/ Ab4\n#define A4  440\n#define As4 466  \/\/ A#4 \/ Bb4\n#define B4  494\n\n\/\/ \u9ad8\u97f3\u5340\uff08C5 ~ B5\uff09\n#define C5  523\n#define Cs5 554  \/\/ C#5 \/ Db5\n#define D5  587\n#define Ds5 622  \/\/ D#5 \/ Eb5\n#define E5  659\n#define F5  698\n#define Fs5 740  \/\/ F#5 \/ Gb5\n#define G5  784\n#define Gs5 831  \/\/ G#5 \/ Ab5\n#define A5  880\n#define As5 932  \/\/ A#5 \/ Bb5\n#define B5  988\n\n\/\/ \u8d85\u9ad8\u97f3\u5340\uff08C6 ~ B6\uff09\n#define C6  1047\n#define Cs6 1109  \/\/ C#6 \/ Db6\n#define D6  1175\n#define Ds6 1245  \/\/ D#6 \/ Eb6\n#define E6  1319\n#define F6  1397\n#define Fs6 1480  \/\/ F#6 \/ Gb6\n#define G6  1568\n#define Gs6 1661  \/\/ G#6 \/ Ab6\n#define A6  1760\n#define As6 1865  \/\/ A#6 \/ Bb6\n#define B6  1976\n\n\/\/ \u8d85\u9ad8\u97f3\u5340\uff08C7\uff09\n#define C7  2093\n#define Cs7 2217  \/\/ C#7 \/ Db7\n#define D7  2349\n#define Ds7 2489  \/\/ D#7 \/ Eb7\n#define E7  2637\n#define F7  2794\n#define Fs7 2960  \/\/ F#7 \/ Gb7\n#define G7  3136\n#define Gs7 3322  \/\/ G#7 \/ Ab7\n#define A7  3520\n#define As7 3729  \/\/ A#7 \/ Bb7\n#define B7  3951\n\n\/\/ \u4f11\u6b62\u7b26\n#define REST 0  \/\/ \u7121\u8072\u97f3<\/code><\/pre>\n\n\n\n<p>2\u3001\u8a2d\u5b9aPWM\u63a5\u8173\u8207\u521d\u59cb\u5316<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">ledcAttach(pin, 2000, 10);  \/\/ \u8a2d\u5b9apin\u8173\u4f4d\u4f7f\u7528LEDC(PWM \u63a7\u5236\u5668),\u521d\u59cb\u983b\u73872000Hz\uff0c\u89e3\u6790\u5ea610\u4f4d\u5143<\/code><\/pre>\n\n\n\n<p>3\u3001ledcWriteTone()\u6307\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">ledcWriteTone(pin, \u767c\u97f3\u983b\u7387);    \/\/ \u767c\u51fa\u8072\u97f3<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">ledcWriteTone(pin, 0);    \/\/ \u767c\u97f3\u983b\u73870\uff0c\u4ee3\u8868\u975c\u97f3<\/code><\/pre>\n\n\n\n<p>\u57fa\u672c\u64ad\u653e\u7bc4\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/ ---------------------------------------------------------------------\n\/\/ \u5b9a\u7fa9\u97f3\u7b26\u983b\u7387 (Hz)\n#define C4  262           \/\/ Do\n#define D4  294           \/\/ Re\n#define E4  330           \/\/ Mi\n#define F4  349           \/\/ Fa\n#define G4  393           \/\/ So\n#define A4  440           \/\/ La\n#define B4  494           \/\/ Si\n#define REST 0            \/\/ \u4f11\u6b62\u7b26 (\u983b\u7387 0 \u5373\u7121\u8072)\n\/\/ ---------------------------------------------------------------------\n\/\/ \u97f3\u7b26\u5e8f\u5217(\u6b64\u9663\u5217\u7684\u5143\u7d20\u5fc5\u9808\u5c0d\u61c9length\u9663\u5217\u7684\u5143\u7d20)\nint melody[] = {\n  G4, E4, E4, F4, D4, D4, C4, D4, E4, F4, G4, G4, G4,\n  G4, E4, E4, F4, D4, D4, C4, E4, G4, G4, E4,\n  D4, D4, D4, D4, D4, E4, F4, E4, E4, E4, E4, E4, F4, G4,\n  G4, E4, E4, F4, D4, D4, C4, E4, G4, G4, C4\n};\n\/\/ ---------------------------------------------------------------------\n\/\/ \u7bc0\u62cd\u9577\u5ea6\u5e8f\u5217(\u55ae\u4f4d\u70ba base_duration \u7684\u500d\u6578)\nint length[] = {\n  1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2,\n  1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2,\n  1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2,\n  1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4\n};\n\/\/ ---------------------------------------------------------------------\n\/\/ \u97f3\u7b26\u7e3d\u6578 = melody \u9663\u5217\u7e3d\u4f4d\u5143\u7d44\u6578 \/ \u55ae\u4e00\u6574\u6578\u4f4d\u5143\u7d44\u6578\nint total = sizeof(melody) \/ sizeof(int);\n\/\/ ---------------------------------------------------------------------\nint pin = 15;             \/\/ \u8702\u9cf4\u5668\u9023\u63a5\u8173\u4f4d (GPIO 15)\nint base_duration = 200;  \/\/ \u97f3\u7b26\u57fa\u6e96\u6642\u9593 (\u55ae\u4f4d: ms\uff0c\u6c7a\u5b9a\u7bc0\u594f\u5feb\u6162)\nint note_interval = 100;  \/\/ \u97f3\u7b26\u9593\u7684\u77ed\u66ab\u9593\u9694 (\u55ae\u4f4d: ms\uff0c\u907f\u514d\u8072\u97f3\u9ecf\u5728\u4e00\u8d77)\n\/\/ ---------------------------------------------------------------------\nvoid setup() {\n  \/\/ ESP32 LEDC \u8a2d\u5b9a\n  ledcAttach(pin, 2000, 10);    \/\/ \u8a2d\u5b9a\u8173\u4f4d, \u521d\u59cb\u983b\u7387 2000Hz, \u89e3\u6790\u5ea6 10 bits\n  ledcWriteTone(pin, 0);        \/\/ \u521d\u59cb\u72c0\u614b\u70ba\u975c\u97f3\n}\n\nvoid loop() {\n  \/\/ \u4f9d\u5e8f\u64ad\u653e\u6240\u6709\u97f3\u7b26\n  for (int i = 0; i &lt; total; i++)\n  {\n    int note_duration = base_duration * length[i];      \/\/ \u8a08\u7b97\u7576\u524d\u97f3\u7b26\u6301\u7e8c\u6642\u9593\n    ledcWriteTone(pin, melody[i]);                      \/\/ \u767c\u51fa\u8072\u97f3\n    delay(note_duration);                               \/\/ \u97f3\u7b26\u64ad\u653e\u6642\u9593\n    ledcWriteTone(pin, 0);                              \/\/ \u975c\u97f3\n    delay(note_interval);                               \/\/ \u9593\u9694\u6642\u9593\n  }\n\n  delay(2000);    \/\/ \u64ad\u653e\u7d50\u675f\u5f8c\u66ab\u505c2\u79d2\u5f8c\u91cd\u65b0\u958b\u59cb\n}<\/code><\/pre>\n\n\n\n<p>\u4f7f\u7528 <strong><code>struct<\/code> (\u7d50\u69cb)<\/strong> \u5c07\u97f3\u7b26(\u97f3\u983b)\u8207\u7bc0\u62cd(\u97f3\u9577)\u7d81\u5b9a\u5728\u4e00\u8d77\uff0c\u53ef\u4ee5\u8b93\u5169\u500b\u9663\u5217\u66f4\u5bb9\u6613\u5c0d\u9f4a\uff0c\u7a0b\u5f0f\u78bc\u7684\u53ef\u8b80\u6027\u4e5f\u66f4\u9ad8\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/ \u5b9a\u7fa9\u97f3\u7b26\u7d50\u69cb(Struct)\uff0c\u540d\u7a31\u70baNote\nstruct Note {\n  int frequency;          \/\/ \u97f3\u983b (Hz)\n  int length;             \/\/ \u97f3\u9577 (\u70ba base_duration \u7684\u500d\u6578)\n};\n\n\/\/ \u5efa\u7acb\u4e00\u500b Note \u7269\u4ef6\u9663\u5217\uff0c\u540d\u7a31\u70ba song \nNote song[] = {\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {D4, 1}, {E4, 1}, {F4, 1}, {G4, 1}, {G4, 1}, {G4, 2},\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {E4, 1}, {G4, 1}, {G4, 1}, {E4, 2},\n  {D4, 1}, {D4, 1}, {D4, 1}, {D4, 1}, {D4, 1}, {E4, 1}, {F4, 2}, {E4, 1}, {E4, 1}, {E4, 1}, {E4, 1}, {E4, 1}, {F4, 1}, {G4, 2},\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {E4, 1}, {G4, 1}, {G4, 1}, {C4, 4}\n};<\/code><\/pre>\n\n\n\n<p>\u539f\u7a0b\u5f0f\u78bc\u53ef\u6539\u5beb\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/ ---------------------------------------------------------------------\n\/\/ \u5b9a\u7fa9\u97f3\u7b26\u983b\u7387 (Hz)\n#define C4  262           \/\/ Do\n#define D4  294           \/\/ Re\n#define E4  330           \/\/ Mi\n#define F4  349           \/\/ Fa\n#define G4  393           \/\/ So\n#define A4  440           \/\/ La\n#define B4  494           \/\/ Si\n#define REST 0            \/\/ \u4f11\u6b62\u7b26 (\u983b\u7387 0 \u5373\u7121\u8072)\n\/\/ ---------------------------------------------------------------------\n\/\/ \u5b9a\u7fa9\u97f3\u7b26\u7d50\u69cb(Struct)\uff0c\u540d\u7a31\u70baNote\nstruct Note {\n  int frequency;          \/\/ \u97f3\u983b (Hz)\n  int length;             \/\/ \u97f3\u9577 (\u70ba base_duration \u7684\u500d\u6578)\n};\n\/\/ ---------------------------------------------------------------------\n\/\/ \u5efa\u7acb\u4e00\u500b Note \u7269\u4ef6\u9663\u5217\uff0c\u540d\u7a31\u70ba song \nNote song[] = {\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {D4, 1}, {E4, 1}, {F4, 1}, {G4, 1}, {G4, 1}, {G4, 2},\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {E4, 1}, {G4, 1}, {G4, 1}, {E4, 2},\n  {D4, 1}, {D4, 1}, {D4, 1}, {D4, 1}, {D4, 1}, {E4, 1}, {F4, 2}, {E4, 1}, {E4, 1}, {E4, 1}, {E4, 1}, {E4, 1}, {F4, 1}, {G4, 2},\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {E4, 1}, {G4, 1}, {G4, 1}, {C4, 4}\n};\n\/\/ ---------------------------------------------------------------------\n\/\/ \u97f3\u7b26\u7e3d\u6578 = melody \u9663\u5217\u7e3d\u4f4d\u5143\u7d44\u6578 \/ \u55ae\u4e00\u6574\u6578\u4f4d\u5143\u7d44\u6578\nint total = sizeof(song) \/ sizeof(Note);\n\/\/ ---------------------------------------------------------------------\nint pin = 15;             \/\/ \u8702\u9cf4\u5668\u9023\u63a5\u8173\u4f4d (GPIO 15)\nint base_duration = 200;  \/\/ \u97f3\u7b26\u57fa\u6e96\u6642\u9593 (\u55ae\u4f4d: ms\uff0c\u6c7a\u5b9a\u7bc0\u594f\u5feb\u6162)\nint note_interval = 100;  \/\/ \u97f3\u7b26\u9593\u7684\u77ed\u66ab\u9593\u9694 (\u55ae\u4f4d: ms\uff0c\u907f\u514d\u8072\u97f3\u9ecf\u5728\u4e00\u8d77)\n\/\/ ---------------------------------------------------------------------\nvoid setup() {\n  \/\/ ESP32 LEDC \u8a2d\u5b9a\n  ledcAttach(pin, 2000, 10);    \/\/ \u8a2d\u5b9a\u8173\u4f4d, \u521d\u59cb\u983b\u7387 2000Hz, \u89e3\u6790\u5ea6 10 bits\n  ledcWriteTone(pin, 0);        \/\/ \u521d\u59cb\u72c0\u614b\u70ba\u975c\u97f3\n}\n\nvoid loop() {\n  \/\/ \u4f9d\u5e8f\u64ad\u653e\u6240\u6709\u97f3\u7b26\n  for (int i = 0; i &lt; total; i++)\n  {\n    int note_duration = base_duration * song[i].length; \/\/ \u8a08\u7b97\u7576\u524d\u97f3\u7b26\u6301\u7e8c\u6642\u9593\n    ledcWriteTone(pin, song[i].frequency);              \/\/ \u767c\u51fa\u8072\u97f3\n    delay(note_duration);                               \/\/ \u97f3\u7b26\u64ad\u653e\u6642\u9593\n    ledcWriteTone(pin, 0);                              \/\/ \u975c\u97f3\n    delay(note_interval);                               \/\/ \u9593\u9694\u6642\u9593\n  }\n\n  delay(2000);    \/\/ \u64ad\u653e\u7d50\u675f\u5f8c\u66ab\u505c2\u79d2\u5f8c\u91cd\u65b0\u958b\u59cb\n}<\/code><\/pre>\n\n\n\n<p>\u72c0\u614b\u6a5f\u7684\u5beb\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/ ---------------------------------------------------------------------\n\/\/ \u5b9a\u7fa9\u97f3\u7b26\u983b\u7387 (Hz)\n#define C4  262           \/\/ Do\n#define D4  294           \/\/ Re\n#define E4  330           \/\/ Mi\n#define F4  349           \/\/ Fa\n#define G4  393           \/\/ So\n#define A4  440           \/\/ La\n#define B4  494           \/\/ Si\n#define REST 0            \/\/ \u4f11\u6b62\u7b26 (\u983b\u7387 0 \u5373\u7121\u8072)\n\/\/ ---------------------------------------------------------------------\n\/\/ \u5b9a\u7fa9\u97f3\u7b26\u7d50\u69cb(Struct)\uff0c\u540d\u7a31\u70baNote\nstruct Note {\n  int frequency;          \/\/ \u97f3\u983b (Hz)\n  int length;             \/\/ \u97f3\u9577 (\u70ba base_duration \u7684\u500d\u6578)\n};\n\/\/ ---------------------------------------------------------------------\n\/\/ \u5efa\u7acb\u4e00\u500b Note \u7269\u4ef6\u9663\u5217\uff0c\u540d\u7a31\u70ba song \nNote song[] = {\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {D4, 1}, {E4, 1}, {F4, 1}, {G4, 1}, {G4, 1}, {G4, 2},\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {E4, 1}, {G4, 1}, {G4, 1}, {E4, 2},\n  {D4, 1}, {D4, 1}, {D4, 1}, {D4, 1}, {D4, 1}, {E4, 1}, {F4, 2}, {E4, 1}, {E4, 1}, {E4, 1}, {E4, 1}, {E4, 1}, {F4, 1}, {G4, 2},\n  {G4, 1}, {E4, 1}, {E4, 2}, {F4, 1}, {D4, 1}, {D4, 2}, {C4, 1}, {E4, 1}, {G4, 1}, {G4, 1}, {C4, 4}\n};\n\/\/ ---------------------------------------------------------------------\n\/\/ \u97f3\u7b26\u7e3d\u6578 = melody \u9663\u5217\u7e3d\u4f4d\u5143\u7d44\u6578 \/ \u55ae\u4e00\u6574\u6578\u4f4d\u5143\u7d44\u6578\nint total = sizeof(song) \/ sizeof(Note);\n\/\/ ---------------------------------------------------------------------\nint pin = 15;             \/\/ \u8702\u9cf4\u5668\u9023\u63a5\u8173\u4f4d (GPIO 15)\nint base_duration = 200;  \/\/ \u97f3\u7b26\u57fa\u6e96\u6642\u9593 (\u55ae\u4f4d: ms\uff0c\u6c7a\u5b9a\u7bc0\u594f\u5feb\u6162)\nint note_interval = 100;  \/\/ \u97f3\u7b26\u9593\u7684\u77ed\u66ab\u9593\u9694 (\u55ae\u4f4d: ms\uff0c\u907f\u514d\u8072\u97f3\u9ecf\u5728\u4e00\u8d77)\n\/\/ ---------------------------------------------------------------------\nint i = 0;      \/\/ \u7576\u524d\u64ad\u653e\u7684\u97f3\u7b26\u7d22\u5f15\nint state = 1;  \/\/ \u72c0\u614b\u6a5f\u63a7\u5236\u65d7\u6a19\uff1a\n                \/\/ 1\uff1a\u64ad\u653e\u97f3\u7b26\n                \/\/ 2\uff1a\u97f3\u7b26\u9593\u9694\n                \/\/ 3\uff1a\u5207\u63db\u81f3\u4e0b\u500b\u97f3\u7b26\n                \/\/ 4\uff1a\u64ad\u653e\u7d50\u675f\n\/\/ ---------------------------------------------------------------------\nvoid setup() {\n  \/\/ ESP32 LEDC \u8a2d\u5b9a\n  ledcAttach(pin, 2000, 10);    \/\/ \u8a2d\u5b9a\u8173\u4f4d, \u521d\u59cb\u983b\u7387 2000Hz, \u89e3\u6790\u5ea6 10 bits\n  ledcWriteTone(pin, 0);        \/\/ \u521d\u59cb\u72c0\u614b\u70ba\u975c\u97f3\n}\n\nvoid loop() {\n  switch(state)\n  {\n    case 1:   \/\/ \u64ad\u653e\u97f3\u7b26\n      if (i &lt; total)  \/\/ \u9084\u6709\u97f3\u7b26\u6c92\u64ad\u5b8c\n      {\n        int note_duration = base_duration * song[i].length;   \/\/ \u8a08\u7b97\u7576\u524d\u97f3\u7b26\u6301\u7e8c\u6642\u9593\n        ledcWriteTone(pin, song[i].frequency);                \/\/ \u767c\u51fa\u8072\u97f3\n        delay(note_duration);                                 \/\/ \u97f3\u7b26\u64ad\u653e\u6642\u9593\n        state = 2;  \/\/ \u9032\u5165\u72c0\u614b2\n      }\n      else  \/\/ \u6240\u6709\u97f3\u7b26\u5df2\u7d93\u64ad\u5b8c\n      {\n        state = 4;  \/\/ \u9032\u5165\u72c0\u614b4\n      }\n      break;\n\n    case 2:   \/\/ \u97f3\u7b26\u9593\u9694\n      ledcWriteTone(pin, 0);    \/\/ \u975c\u97f3\n      delay(note_interval);     \/\/ \u9593\u9694\u6642\u9593\n      state = 3;    \/\/ \u9032\u5165\u72c0\u614b3\n      break;\n\n    case 3:   \/\/ \u5207\u63db\u81f3\u4e0b\u4e00\u500b\u97f3\u7b26\n      i++;          \/\/ \u7d22\u5f15\u503c+1\n      state = 1;    \/\/ \u9032\u5165\u72c0\u614b1\n      break;\n\n    case 4:   \/\/ \u64ad\u653e\u7d50\u675f\n      ledcWriteTone(pin, 0); \/\/ \u975c\u97f3\n      delay(2000);           \/\/ \u64ad\u653e\u7d50\u675f\u5f8c\u66ab\u505c2\u79d2\n      i = 0;                 \/\/ \u7d22\u5f15\u503c\u6b78\u96f6(\u91cd\u65b0\u958b\u59cb)\n      state = 1;             \/\/ \u9032\u5165\u72c0\u614b1(\u91cd\u65b0\u958b\u59cb)\n      break;\n  }\n}<\/code><\/pre>\n\n\n\n<p>\u4f5c\u696d\u8aaa\u660e\uff1a\u5229\u7528ledcWriteTone()\u6307\u4ee4\u3001<code>struct<\/code>\u7d50\u69cb\u3001\u72c0\u614b\u6a5f\u7684\u5beb\u6cd5\uff0c\u8f38\u51fa\u7d0430\u79d2~40\u79d2\u7684\u5b8c\u6574\u97f3\u6a02(\u975e\u5152\u6b4c)\u5230\u8702\u9cf4\u5668\u3002<\/p>\n\n\n\n<p>\u5be6\u4f5c\u7d50\u679c\uff1a<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\u9673\u54c1\u9038\u5361\u8fb2\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/hzdy-f4xJ1o?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column wp-embed-aspect-16-9 wp-has-aspect-ratio is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\u7528arduino\u8702\u9cf4\u5668\u6f14\u594f\u51fa\u68d2\u7403\u6bbf\u5802\u7684\u97f3\u6a02(\u6b4c\u540d:victory)\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/j-jYWMlcSqY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\u6797\u5ba5\u5747 ESP32\u97f3\u6a02\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/xY-SIGni_Gk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\u8702\u9cf4\u5668\u97f3\u6a02\uff08ALIEZ)\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/4YxMaJhxIVo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u55ae\u5143\u5229\u7528ESP32\u7684PWM (\u8108\u885d\u5bec\u5ea6\u8abf\u8b8a) \u6280\u8853\u63a7\u5236\u8702\u9cf4\u5668\u4f86\u64ad\u653e\u97f3\u6a02\uff0c\u8aaa\u660e\u5982\u4e0b\uff1a 1\u3001\u5b9a\u7fa9\u97f3\u7b26\u983b\u7387\uff1a 2\u3001<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1308","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1308"}],"version-history":[{"count":67,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1308\/revisions"}],"predecessor-version":[{"id":2438,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1308\/revisions\/2438"}],"wp:attachment":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}