USBポートを介してArduino Mega 2560からXubuntuで実行されているCプログラムに情報を取得する方法を見つけようとしています。
出発点として使用できる最も単純な例をまとめようとしています。
Arduino IDE にはいくつかの素晴らしい基本的な例が付属しています。そのうちの 1 つはGraphで、ポテンショメータやその他のアナログ センサーからの値を単純に出力します。
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
delay(2);
}
そこに問題はありませんが、私のコンピューターで実行され、データを受信するプログラムに関しては、これまでのところ私が持っているものです(これを読んでさらに掘り下げた後に更新されました):
/* prints the output from an Arduino running the "Graph" example.
*/
#include <stdio.h>
#include <sys/fcntl.h>
#include <termios.h>
int main(void)
{
int fd = 0;
char buffer[32];
int n;
fd = open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY);
while(1)
{
read(fd, buffer, sizeof(buffer));
n = atoi(buffer);
printf("%d\n", n);
}
close(fd);
}
これはほとんど機能しますが、取得しているよりも多くのメッセージが欠落しているように見え、多くのメッセージが不完全です。
途中で設定できるオプションとフラグがいくつかありますが、どれを設定するかを決めるのに苦労しています。
最終的には、Arduino を介して実行されているさまざまなセンサーを使用して、コンピューターで実行されている SDL ベースのアプリケーションを制御する予定ですが、その文字列を取得できたらすぐに、慣れ親しんだ領域に戻る必要があります。