私はArduinoボードにセンサーを接続しており、センサーからデータを取得して4つの二重変数に格納するスケッチを実行しています。私は別の.cppファイルからこれら4つの変数にアクセスする必要があります。Arduinoとcppファイル通信
これを行うために、4つのextern変数を宣言する共通ヘッダーファイルを作成しました。これらはarduinoスケッチで定義されます。これの問題は、.cppファイルから変数にアクセスしようとすると、コンパイラエラーはそれらが未定義であるということです。
Arduinoのスケッチ:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
#include <varDec.h>
#define BNO055_SAMPLERATE_DELAY_MS (1000)
double x,y,z,w;
Adafruit_BNO055 bno = Adafruit_BNO055();
void setup()
{
Serial.begin(9600);
if(!bno.begin())
{
Serial.println("Not connected");
while(1);
}
bno.setExtCrystalUse(false);
}
void loop()
{
imu::Quaternion quat = bno.getQuat();
x = quat.x();
y = quat.y();
z = quat.z();
w = quat.w();
uint8_t system, gyro, accel, mag = 0;
bno.getCalibration(&system, &gyro, &accel, &mag);
delay(BNO055_SAMPLERATE_DELAY_MS);
}
のcppファイル:
#include <unistd.h> // sleep()
#include <stdio.h> // fopen(), fclose(), fprintf(), perror()
#include <stdlib.h> // exit() and EXIT_FAILURE
#include <iostream>
#include "/home/matthew/sketchbook/libraries/Custom/varDec.h"
using namespace std;
int main()
{
cout << x;
getchar();
getchar();
return(0);
} // end function: main
とヘッダ:
extern double x;
extern double y;
extern double z;
extern double w;
あなたはそうだと思って、私は間違いを認識しました。私はシリアルポート経由でデータを送信し、この方法でデータを取得することができました。 – MattMalt