C# Ardunio串行监视器在打印字符0、1、2等之前打印字符0、1
我使用非常简单的ardunio代码打印“hello world”,只打印一次。但是当它打印到串行监视器上时,字符“hehello world.”就会出现。有人知道为什么“他”会被印两次吗C# Ardunio串行监视器在打印字符0、1、2等之前打印字符0、1,c#,printing,arduino,C#,Printing,Arduino,我使用非常简单的ardunio代码打印“hello world”,只打印一次。但是当它打印到串行监视器上时,字符“hehello world.”就会出现。有人知道为什么“他”会被印两次吗 void setup(){ Serial.begin(9600); } void loop(){ Serial.print("hello"); delay(1000); Serial.print(" "); Serial.print("world."); delay(1000); Serial.print
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print("hello");
delay(1000);
Serial.print(" ");
Serial.print("world.");
delay(1000);
Serial.print(" ");
delay(1000);
while(1) {}
}
我不是100%确定,但有几种可能性:
- 首先,该代码将在Arduino通电后立即开始运行,但在您告诉它之前,它不会输出到串行监视器。所以当你打开它的时候,“你好”很可能已经写好了。您可以通过为“hello”命令或在
Serial.begin()之后设置长时间延迟来解决此问题
- 另一个想法是:
可能会干扰串行写入。写入序列需要一定的时间,当代码达到<代码>延迟()/代码>调用时,它可能仍然处于写入“hello”的中间。您可以通过使用非delay()
的函数来解决此问题。例如,有一个名为delay()
的变量,它在startTime
期间被初始化为setup()
。然后说(例如):millis()
while
循环
这两个都不能真正解释“你好”(如果有的话,我希望你能看到“llo”之类的东西)。但它们是思想
愚蠢的显而易见的事情:确保串行监视器上的波特率实际上匹配到9600
if (millis()>startTime+1000 && !helloSent){
Serial.print("hello");
helloSent=true;
}