簡體   English   中英

Arduino和CPP文件通訊

[英]Arduino and cpp file communication

我已經將傳感器與Arduino開發板連接起來,正在運行一個草圖,該草圖從傳感器中檢索一些數據並將其存儲在4個雙變量中。 我需要從另一個.cpp文件訪問這4個變量。

為此,我為兩者創建了一個公共頭文件,該文件聲明了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;

根據我正在閱讀的結構,我想您所說的“另一個.cpp文件”是在計算機上運行的程序。

如果真是這樣,那么您嘗試做的將永遠無法執行。 變量被命名為分配的內存間隔。 並且計算機上運行的程序將無法訪問arduino上分配的內存。

從傳感器獲取值到計算機上運行的程序的最簡單方法是對arduino進行編程,以將值寫入串行端口。 (在這里您可以找到有關如何將不同格式的值發送到串行端口的好示例: https : //www.arduino.cc/en/serial/print

並且計算機上運行的程序應讀取串行端口的期望值。 讀取計算機上的串行端口並非易事。 但這取決於系統。 互聯網上有很多文檔)

祝你好運,我的朋友 ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM