繁体   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