arduino - 无法查看 Arduino micro 的 Serial.print()

标签 arduino

嗨,有人知道为什么 Serial.print() 不适用于 Arduino micro 吗?

我尝试了这段代码

void setup() {

  Serial.begin(9600); // initialization
  while (!Serial){}
   ;  

  Serial.println("Begin");
}

但是串行监视器上没有显示任何内容。

提前致谢!

最佳答案

我猜你的意思是:

void setup() {
  Serial.begin(9600);
  while (!Serial);  
  Serial.println("Begin");
}

实际上你想要的是:

void setup() {
  Serial.begin(9600);
  Serial.println("Begin");
}

因为我认为 !Serial 不是定义的行为,因为 Serial 是串行通信的实例。在 Serial 类上调用 not 运算符可能会编译并工作,但无论是 true 还是 false,它总是会返回相同的结果。如果它返回 false,您将最终阻止您的 arduino 在该语句之后执行任何其他操作。

不过,基本上,当您设置串行通信时,您可以放心地假设它已准备好进行通信。有时,您可能需要延迟一点(根据我自己的经验,大约 3 秒),以便主机为每个基于 atmega32uX 的 arduinos 设置设备,Micro 和 Leonardo 就是这种情况。如果您不添加 3 秒的延迟,Arduino 将打印 Begin 语句,但您不会看到它,因为计算机没有再次重置设备在打印之前

为了更好地理解我的意思,请尝试以下代码:

void setup() {
  Serial.begin(9600);
  Serial.println(10);
  delay(1000);
  Serial.println(9);
  delay(1000);
  Serial.println(8);
  delay(1000);
  Serial.println(7);
  delay(1000);
  Serial.println(6);
  delay(1000);
  Serial.println(5);
  delay(1000);
  Serial.println(4);
  delay(1000);
  Serial.println(3);
  delay(1000);
  Serial.println(2);
  delay(1000);
  Serial.println(1);
  delay(1000);
  Serial.println("Begin");
}

如果您很早打开串行监视器,您将只能看到从7开始的输出。

HTH

关于arduino - 无法查看 Arduino micro 的 Serial.print(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532500/

相关文章:

c++ - 是否有任何程序/方式来模拟 arduino 串行端口并监视正在发送的内容

c - 串行控制和等待响应

python - 如何在Python中声明类型为 "uint8_t"*的变量

javascript - Nodejs CoAP 服务器未接收有效负载

javascript - 将值从 arduino 发送到 Highcharts

lua - 如何使用Nodemcu(Lua)进行多个串口通信

java - jssc (serialPort.readBytes()) 与 Arduino

c++ - 向其写入值时,已定义数组的大小正在发生变化

java - Arduino - Serial.read() 无法读取两位数数据?

c++ - 从 Arduino 库中的方法获取私有(private) bool 属性