与Arduino处理字符串的方式混淆

Confused with the Way of Arduino Processing String

本文关键字:方式混 字符串 Arduino 处理      更新时间:2023-10-16
void setup()
{
    Serial.begin(9600);    //Set serial baud rate 9600
    pinMode(13,OUTPUT);    //Set LED for output
}
String str;
void loop()
{
    if(Serial.available() > 0)
    {
        char ch = Serial.read();
        str += ch;
    }
    if (str == "Hi")
    {
        digitalWrite(13,HIGH);    //Turns on the LED if "Hi" is entered.
    }
    if (str == "Bye")
    {
        digitalWrite(13,LOW);     //Turns off the LED if "Bye" is entered.
    }
}

我有一个问题。 我想我不知道Arduino在读取String时是如何工作的。这是我的草图。如您所见,如果输入"Hi",则打开 LED,如果输入"再见",则关闭。这编译得很好,但是每当我连接串口,上传它并打开带有"Hi"字样的LED,我都无法关闭带有"再见"字样的LED。此外,如果我先输入"再见",然后输入"嗨",LED 不会亮起。

我的代码有什么问题?如何修改它?

好吧,在我看来,一旦命中,您应该清除您的str var。因为它听起来像是第一个字符串有效,但从不适用于第二个字符串。

检测到 Hi 或再见后,设置输出并清除 str。

在接受(或拒绝(命令后,必须清除str

str=NULL;

str="";

str=new String();

所有这些都将为str分配一个空(或空(字符串。

我建议你开始学习 c++。