Arduino 串行命令

Arduino Serial commands

我 运行 我的 Arduino 有问题。我希望能够在 Arduino IDE 上打开我的串行监视器并能够输入类似 hello 的内容,并让 Arduino 对所谓的命令做出设置响应,这样我就可以创建一个聊天机器人说话。

这是我的代码,有人可以帮我吗?

  byte byteRead;

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


  }

  void loop() 
  {
       if (Serial.available()) {

        byteRead = Serial.read();

        if(byteRead =="hello") {
        Serial.println("hello freind");
        }
  }

您需要将串行输入视为字符串而不是字节。

尝试将您的输入变量声明为类型 String:

String stringRead;

使用readString()从串口读取字符串:

stringRead = Serial.readString();

并将您的比较更改为:

if(byteRead == "hello") {

至:

if (stringRead == "hello") {

除了 Serial.readString(),您还可以使用 Serial.readStringUntil()。

另外,Arduino 网站提供了一个不错的 reference 串口功能,您可能会觉得有用。

byteRead =="hello" 成真的机会太小了。尝试读取一个字符串(不仅是一个字符!)并逐个比较字符串中的字符。

// read one line
void read_line(char *buf, int max)
{
  int i = 0;
  while(i < len - 1) {
    int c = Serial.read();
    if (c >= 0) {
      if (c == '\r' || c == '\n') break;
      buf[i++] = c;
    }
  }
  buf[i] = '[=10=]';
}

// compare two strings and return whether they are same
int is_same(const char *a, const char *b)
{
  while (*a != '[=10=]' || *b != '[=10=]') {
    if (*a++ != *b++) return 0;
  }
  return 1;
}

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  if (Serial.available()) {
    char stringRead[128];
    read_line(stringRead, 128);
    if(is_same(stringRead, "hello")) {
        Serial.println("hello freind");
    }
  }
}