使用 monitor 和 analogWrite (ESP32) 时的奇怪行为

Weird behavior when using monitor and analogWrite (ESP32)

我目前正在做一个项目,我想在给定电位器输入的情况下改变电机的 PWM。但是,我似乎无法在同一个程序中使用串行监视器和 analogWrite 语句。

当我运行这段代码时,我从串行监视器得到这个输出:

void setup()
{
  Serial.begin(115200);

  Serial.println();
  Serial.println();
  Serial.print("WORKING");

  //analogWrite(1, 255);
}

void loop()
{
  
}
12:09:48.314 -> 
12:09:48.314 -> WORKING

然而,当我运行这段代码时(唯一的区别是analogWrite()行不再被注释掉),串行监视器输出垃圾。

void setup()
{
  Serial.begin(115200);

  Serial.println();
  Serial.println();
  Serial.print("WORKING");

  analogWrite(1, 255);
}

void loop()
{
  
}
{l$ܞ⸮⸮$⸮|⸮⸮l⸮#|⸮⸮⸮⸮{⸮#⸮"⸮⸮on⸮lon⸮⸮⸮#p⸮⸮bl`{lp⸮o⸮⸮l⸮⸮bo⸮|⸮⸮⸮#⸮⸮nN⸮$⸮⸮$`⸮on⸮{lor⸮⸮⸮⸮{r⸮ p⸮o⸮s⸮ܜ⸮⸮⸮#o⸮|⸮B⸮⸮on⸮⸮l ⸮No⸮{lor⸮⸮⸮Nrd`{⸮⸮N{d`⸮⸮⸮⸮⸮⸮$`⸮⸮N⸮l
⸮

有谁知道为什么会这样以及如何解决它?

不确定它是否有帮助,但我使用的是从这个惊人的 link 购买的 ESP8266 NodeMCU:https://www.amazon.com/gp/product/B081CSJV2V/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&th=1

analogWrite(1, 255) 正在写入 GPIO1。如果您查看 ESP8266 NodeMCU 的 pin-out,GPIO1 是串行端口 0 的 TXD 线(标记为 TXD0)。我手边没有 NodeMCU 原理图,但端口 0 通常用于串行监视器并为此连接到 USB-UART 转换器。因此,写入 GPIO1 会干扰监视器输出。

尝试对不同的 GPIO 执行 analogWrite,例如 GPIO5。