2

シリアル入力から int を解析し、ソレノイドを開く単純な Arduino プログラムがあります。Arduino シリアル モニター (古い Arduino、 ATmega168 を搭載したDiecimila ) と完全に連携します。

私が持っている目標は、コマンド プロンプトからそのデータを Arduino に送信することです。次のコマンドを実行して、コマンド プロンプトの com 設定が正しいことを確認しました。

mode com7:9600,n,8,1

ただし、解析する整数を送信しようとすると、何も起こりません。次に例を示します。

ECHO 2 > COM7

また、ECHO '2' > COM7、ECHO "2" > COM7、(ECHO 2) > COM7、および考えられる他のすべてのバリエーションも試しました。

EDIT注意してください、私はArduino Serial Monitor、PuTTY、およびHyperTerminalでこれを試しました。これらのプログラムはすべて Arduino と正常に通信し、ソレノイドは期待どおりに開きます。また、ケース番号を一重引用符で囲んだり、付けたりせずにSerial.parseInt()、以下のコードを試しました。Serial.read()繰り返しますが、上記の 3 つのプログラムではすべての場合に機能しましたが、コマンド プロンプトでは機能しませんでした。

編集ここに私が取り組んでいるスケッチがあります:

int incoming;

void setup()
{
    Serial.begin(9600);
    pinMode(2, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(8, OUTPUT);
}

void loop()
{
    if (Serial.available > 0)
    {
        incoming = Serial.read();

        switch(incoming)
        {
            case '1':
                digitalWrite(2, HIGH);
                delay(2000);
                degitalWrite(2, LOW);
                break;
            case '2':
                digitalWrite(4, HIGH);
                delay(2000);
                degitalWrite(4, LOW);
                break;
            case '3':
                digitalWrite(6, HIGH);
                delay(2000);
                degitalWrite(6, LOW);
                break;
            case '4':
                digitalWrite(8, HIGH);
                delay(2000);
                degitalWrite(8, LOW);
                break;
        }
    }
}
4

1 に答える 1

0

次の 2 つのことが思い浮かびます。

  • 試しましたかecho 2 > com7:(コロンに注意してください)?

  • Windows の行区切り文字は、2 バイト シーケンスの CR/LF です。おそらく、シリアル モニターが別のモニターを使用しており、Arduino スケッチが CR/LF を認識していない可能性があります。

それでも解決しない場合は、スケッチまたはSSCCEの例を投稿してください。

于 2012-06-13T20:34:52.880 に答える