analogRead return 库中的 0

analogRead return 0 in a library

我想为一个项目创建一个库,我必须在某一时刻做一个模拟读取。我为此创建了一个库,它编译没有任何错误。 但是当我想调用这个函数时,它 return 我是 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 class 成员重新声明为局部变量,因此当您为其设置值时,只会设置函数中的局部变量而您要设置的实际 class 成员将不受影响。

要解决此问题,请将 Filoguidage::init 中的 int _PinCapteur = PinCapteur; 更改为 _PinCapteur = PinCapteur;