gpt4 book ai didi

C++ 方法定义和变量声明

转载 作者:行者123 更新时间:2023-11-30 05:27:37 25 4
gpt4 key购买 nike

我试图通过创建同时具有 .h 和 .cpp 文件的类,将我的 arduino 代码库从单个“ino”文件拆分为适当的 c++ 程序。我遇到了一些我无法解决的错误。我希望我遗漏了一些简单的东西。

在运行“Arduino IDE for Visual Studio”插件的 visual studio 中编译时,出现以下错误:

7:8: error: 'class MPU6050' has no member named 'timer

30:5: error: prototype for 'int MPU6050::MPU6050_read(int, uint8_t*, int)' does not match any in class 'MPU6050

我在这里错过了什么?

.h

#ifndef MPU6050_H
#define MPU6050_H


class MPU6050
{

private: // Vars
uint32_t timer; // Hold the value of the timer used for the complementary filter
int error;

public: // Methods
MPU6050();
~MPU6050();

void read_acc_gyr();
float const * const getXa();
float const * const getYa();
float const * const getXvel();
float const * const getYvel();
float const * const getZvel();
float const * const getZang();
double const * const getDt();

private:
void test_gyr_acc();
void MPU6050_init();
void printGyroValues();
void calibrateGyro();
int MPU6050_write(int start, const uint8_t *pData, int size);
int MPU6050_read(int start, uint8_t *buffer, int size);
int MPU6050_write_reg(int reg, uint8_t data);
};

#endif

.cpp

#include "MPU6050.h"
#include "Arduino.h"
#include "MPU6050Definitions.h"

MPU6050::MPU6050()
{
timer = 0; // Always start the timer at 0
error = 1;

Serial.println("Testing Gyro");
test_gyr_acc();
}

MPU6050::~MPU6050()
{

}

int MPU6050::MPU6050_read(int start, uint8_t *buffer, int size)
{
int i, n, error;

Wire.beginTransmission(MPU6050_I2C_ADDRESS);
n = Wire.write(start);
if (n != 1)
return (-10);

n = Wire.endTransmission(false); // hold the I2C-bus
if (n != 0)
return (n);

// Third parameter is true: relase I2C-bus after data is read.
Wire.requestFrom(MPU6050_I2C_ADDRESS, size, true);
i = 0;
while (Wire.available() && i<size)
{
buffer[i++] = Wire.read();
}
if (i != size)
return (-11);

return (0); // return : no error
}

void MPU6050::test_gyr_acc()
{
uint8_t c = 0;

error = MPU6050_read(MPU6050_WHO_AM_I, &c, 1);
if (error != 0) {
while (true) {
digitalWrite(13, HIGH);
delay(300);
digitalWrite(13, LOW);
delay(300);
}
}
}

MPUT6050Definitions.h 包含我所有的常量,如下所示:(还有很多我认为与包含无关的#defines)

#pragma once

//All the values to setup the MPU6050 gyro/accelermeter

#define MPU6050_AUX_VDDIO 0x01 // R/W
#define MPU6050_SMPLRT_DIV 0x19 // R/W
#define MPU6050_CONFIG 0x1A // R/W
#define MPU6050_GYRO_CONFIG 0x1B // R/W

最佳答案

看来我犯了一个简单的错误。

列表中还有一些错误是 unknown declaration of type uint_32,它传播自身导致了我之前看到的错误。我包含了 Arduino.h header ,它解决了 uint_32 导致其余代码按预期编译的问题。

这个故事的寓意是不要试图自上而下地修复错误。

关于C++ 方法定义和变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com