analogRead возвращает 0 в библиотеке - PullRequest
0 голосов
/ 24 мая 2018

Я хочу создать библиотеку для проекта, и мне нужно сделать аналог чтения в один момент.Я создал библиотеку для этого, и она компилируется без каких-либо ошибок.Но когда я хочу вызвать эту функцию, она возвращает мне 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 не распознаются, но яне знаю как это решить.Если кто-то может мне помочь, я был бы очень рад, спасибо

1 Ответ

0 голосов
/ 24 мая 2018

В Filoguidage::init вы переделываете член класса _PinCapteur как локальную переменную, поэтому, когда вы устанавливаете для него значение, будет установлен только локальный элемент в функции и фактический член класса, который вы хотите установитьостанется неизменным.

Чтобы исправить это, измените int _PinCapteur = PinCapteur; на _PinCapteur = PinCapteur; в Filoguidage::init.

...