0

arduinoからPCにアナログセンサーを読みたい。

Arduinoプログラムは次のとおりです。

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
}

void loop() {
char request[1];
if(Serial.available()){
request[0]=Serial.read();
Serial.print(analogRead(atoi(request)));
Serial.print("\n\r");
};
delay(2);                     
}

と私のビジュアルC++

#include <windows.h>
#include "stdafx.h"
#include "SerialClass.h"

char buffer[20];
char buf0[200];

int _tmain(int argc, _TCHAR* argv[])
{
   Serial oSerial("COM6:");

while(1){
sprintf_s(buffer,"0");    
    oSerial.WriteData(buffer,1); 
Sleep(1000);
oSerial.ReadData(buf0,4);
printf("Sensor 0: %s \n",buf0);
Sleep(1000); }
}

プログラムの結果が安定していないので、input0に5Vを入れたので、1023でなければなりません。

sensor 0 :
sensor 0 : 10230
sensor 0:
100
sensor 0: 23
0
sensor 0: 10230

プログラムが機能しているシリアルモニターを使ってarduinoを試してみました。問題はC++プログラムにある可能性があります

誰かアイデアがありますか?

4

1 に答える 1

1

この問題の原因は、PCが4文字を探していて、Arduinoがリクエストごとに3〜6文字を送信しているためだと思います。

Arduinoから送信されたキャリッジリターン(\ r)を受信するまで、バッファに文字を受信することをお勧めします。次に、完全な文字列を出力できます。制御文字を処理する必要があります。

テストされていない例:

交換

oSerial.ReadData(buf0,4);

int x=0;
int char_rev;

while(buf0[x]!='\r') {

    char_rev = oSerial.ReadData(buf0[x],1);
    if (char_rev==1) {
        x++;
    }
}
buf0[x]=0;
于 2012-12-28T17:58:36.740 に答える