0

这只是一个简单的测试程序。我正在尝试在连接到它的 LCD 屏幕上“接收”Arduino 打印。我认为这是我的 if 语句导致错误,有什么想法吗?

目前,当“发送”被放入串行监视器时,没有任何反应。

这是代码:

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

char serialinput;   // for incoming serial data

void setup() {
    Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
    }

void loop() {

    // send data only when you receive data:
    if (Serial.available() > 0) {
            // read the incoming byte:
            serialinput = Serial.read();

            if (serialinput == 'send')
            {
            lcd.print("received");
            }
    }
}
4

2 回答 2

3

您正在从串行端口读取一个字节(charC 中的 a),但您尝试将其与字符串进行比较:

如果您想阅读 4char并将其与它进行比较,"send"那么您必须执行以下操作:

#include <LiquidCrystal.h>
#include <string.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

char serialinput [5] = {0};   // for incoming serial data
                              // 4 char + ending null char

void setup() {
    Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
}

void loop() {
    // send data only when you receive data:
    if (Serial.available() > 0) {
        memmove (serialinput, &serialinput[1], 3); // Move 3 previous char in the buffer
        serialinput [3] = Serial.read(); // read char at the end of input buffer

        if (0 == strcmp(serialinput, "send")) // Compare buffer content to "send"
        {
            lcd.print("received");
        }
    }
}

假设<string.h>标头在 Arduino SDK 中有效

PS:C代码中的文字字符串写在"(双引号)之间。'是为字符。

于 2012-11-22T15:48:01.623 回答
1

上传到 arduino 时遇到了什么错误?

于 2012-11-22T15:34:26.903 回答