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);
}
補足
失礼しました.INA219のスケッチ例の出力です.以下にURLを載せます. スレーブアドレス確認のためのコードを実行してもアドレスを取得できず,こちらも同様に止まってしまいます. INA219のスケッチ例が載っているサイトではINA219を複数個使う場合を除き,スレーブアドレスについては触れていませんでした. INA219のコード中にもアドレスを記述すべき場所もないので,間違っているということはないと思うのですが... INA219例スケッチ https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout/arduino-code スレーブアドレス https://qiita.com/hurusu1006/items/f493ee4eb9998d5bd740