c++ - 类比读取在库中返回 0
问题描述
我想为一个项目创建一个库,我必须马上做一个模拟阅读。我为此创建了一个库,它编译时没有任何错误。但是当我想调用这个函数时,它返回 0,但它在 .ino 文件中工作正常。
这是我的文件:
.ino 文件
#include <Filoguidage.h>
Filoguidage filoguidage;
int pin = A11;
void setup() {
Serial.begin(115200);
pinMode(pin,INPUT);
filoguidage.init(pin,10,10);
}
void loop() {
int test = filoguidage.getPosition();
Serial.println(test);
}
我的图书馆的 .h :
#ifndef Filoguidage_h
#define Filoguidage_h
#include "Energia.h"
class Filoguidage
{
public:
void init(int PinCapteur,int valeurCentrale, int interval);
int getPosition();
private:
int _PinCapteur;
};
#endif
最后是 .cpp :
#include "Energia.h"
#include "Filoguidage.h"
void Filoguidage::init(int PinCapteur,int valeurCentrale,int interval){
int _PinCapteur = PinCapteur;
pinMode(_PinCapteur, INPUT);
}
int Filoguidage::getPosition(){
return analogRead( _PinCapteur );
}
我认为那是因为 pinMode 和analogRead 无法识别,但我不知道如何解决它。如果有人可以帮助我,我会很高兴,谢谢
解决方案
在Filoguidage::init
您将_PinCapteur
类成员重新声明为局部变量时,因此当您为其设置值时,只会设置函数中的本地成员,而您要设置的实际类成员将不受影响。
要解决此问题,请更改int _PinCapteur = PinCapteur;
为_PinCapteur = PinCapteur;
in Filoguidage::init
。
推荐阅读
- spring - 没有为限定符“transactionManager”找到匹配的 PlatformTransactionManager bean
- android - DatePickerDialog 主题的问题
- java - 在多个构造函数中扩展一个类并处理一个最终变量
- javascript - reCaptcha v3 将合法用户识别为垃圾邮件机器人(得分 = 0.1)
- typescript - Firestore 查询中的 Client SDK 和 Admin SDK 差异
- ios - iphone 应用程序屏幕上的按钮在调用邮件 ui 并在发送或取消后返回应用程序后无响应
- c# - 例外:关联失败。位置不明
- amazon-web-services - AWS CodePipeline - 在 CloudFormation 中部署:操作执行失败需要功能:[CAPABILITY_AUTO_EXPAND]
- python - 在python中以java.util.stream方式处理一个序列
- tags - Jekyll 标签按字母顺序排列,不分大小写