0

これは単なるテストプログラムです。接続されているLCD画面にArduinoの印刷を「受信」させようとしています。エラーの原因はif文だと思いますが、何かアイデアはありますか?

現在、「send」をシリアル モニターに入力しても何も起こりません。

コードは次のとおりです。

#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) を読み取っていますが、それを文字列と比較しようとしています。

4 を読み取っcharて比較したい場合"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 に答える