C++でArduinoをコントロールしたいのですが
VC++から数値データ(0-100)を送信し、Arduinoに接続されているファンを受信した数値でPWMコントロールしたいのですが、接続を確立したその後からプログラミングの仕方がわかりません。
どのようにしてデータを送信すればよいのでしょうか?
以下のようにして接続を行っています。
//COMポートハンドル
HANDLE hComm;
hComm = CreateFileA("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
//ポートの接続確認
printf("Arduino COM") ;
if (hComm == INVALID_HANDLE_VALUE)
printf(":not opened\n") ;
else{
DCB lpTest;
GetCommState(hComm,&lpTest);
lpTest.BaudRate = CBR_9600;
lpTest.ByteSize = 8;
lpTest.Parity = NOPARITY;
lpTest.StopBits = ONESTOPBIT;
SetCommState(hComm,&lpTest);
printf(":OPENED\n") ;
WriteFile(hComm, buf,strlen(buf),&write, NULL);
}
//COMポートハンドルの解放
CloseHandle(hComm);
なおArduino側のプログラムは以下のものを使用しています。
//読み取り値の変数
int val=0;
void setup(){
//シリアル通信開始
Serial.begin(9600);
}
void loop(){
//データが0個より多いときの時
if(Serial.available()>0){
//データの読み込み
val=Serial.read();
//合図用データ送信(1バイト)
Serial.print(65,BYTE);
}
//アナログ出力(11番ピン)に読み込み値を入れる
analogWrite(11,val);
}
お礼
ありがとうございました。接続できないのは別の原因だと分かりました。