我正在增加一个arduino项目,增加一个外部模拟数字转换器。
为此,我正在使用Mcp3208库。我的代码是用一个传感器组织的,我需要从不同的类访问Mcp3208实例(adc)。
因此,我在不同的类中创建了一个通用的lib包含,但这是行不通的。我在网上搜索了几个小时,但我还没有找到一篇文章来帮助我。
你能给我解释一下正确的方法吗?我正在用Atom和platformIO插件进行编码。
我有一个FSM类,它实例化传感器(.h):
#ifndef FSM_H_
#define FSM_H_
#include "EnvironmentalSensor.h
#include "PowerSensor.h"
class FSM {
FSM();
virtual ~FSM();
public:
do_stuff();
private:
EnvironmentalSensor envSensor1(params);
PowerSensor envSensor1(params);
}
#endif公共类将Mcp3208实例化为adc (.h):
#ifndef COMMONS_H_
#define COMMONS_H_
#include "Mcp3208.h"
#define SPI_CS 29 // SPI slave select
#define ADC_VREF 5000 // 5V Vref
#define ADC_CLK 1600000 // SPI clock 1.6MHz
#define ADC_2_5 MCP3208::SINGLE_6
#endif /*COMMONS_H_ */公共类(.cpp):
#include "Arduino.h"
#include "commons.h"
extern MCP3208 adc(ADC_VREF, SPI_CS);
void init_adc(){
pinMode(SPI_CS, OUTPUT); // set spi cs as an output pin
}下面是环境类(.cpp)的一个示例,PowerSensor是相等的:
#include "Arduino.h"
#include "EnvironmentalSensor.h"
#include "commons.h"
MCP3208 adc;
void EnvironmentalSensor::read(){
adc.read(SINGLE_0);
}下面是环境类(.h)的一个示例,PowerSensor是相等的:
#ifndef EnvironmentalSensor_H_
#define EnvironmentalSensor_H_
#include "commons.h"
class EnvironmentalSensor{
public :
read();
}
#endif编辑:
问题是:在EnvironmentalSensor.cpp中,mcp3208 adc给了我一个错误。
错误窗口为我提供了一些帮助:
error:lib/EnvironmentalSensor/src/EnvironmentalSensor.cpp:49:10:错误:调用‘for 3208::for 3208()’MCP3208 adc的命名函数; ^ lib/Power/src/Power.cpp:38:9:注意:候选人是:在lib/Commons.h:4:0的文件中,lib/Power/src/Power.h:33, 从lib/Power/src/Power.cpp:34:.piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:74:3:注:src 3208::src 3208(uint16_t,uint8_t) MCP3208(uint16_t vref,uint8_t csPin); ^ .piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:74:3:注释:候选人需要2个参数,0提供.piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:65:3:注释::spi 3208::spi 3208(uint16_t,uint8_t,SPIClass*) MCP3208(uint16_t vref,uint8_t csPin,SPIClass *spi); ^ .piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:65:3:注释:候选人需要3个参数,0提供.piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:16:7:注释:.piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:16:7:3208::MCP3208 3208(const 3208&)类MCP3208{ ^ .piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:16:7:注释:候选人期望一个参数,0提供.piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:16:7:注释:.piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:16:7: 3208::MCP3208 3208(MC3208&).piolibdeps/Mcp3208_ID1533/src/Mcp3208.h:16:7:注释:候选人期望一个参数,0提供
但是对我来说,我已经在commons.cpp中声明了
谢谢你,吉鲁
发布于 2018-11-17 15:20:38
在.h文件中,添加声明:
extern MCP3208 adc;在您的.cpp文件中,添加定义:
MCP3208 adc(ADC_VREF, SPI_CS);https://stackoverflow.com/questions/53351875
复制相似问题