Добрый день! Пытаюсь написать библиотеку для драйвера моторов L298N и датчиков угловой скорости (ну энкодер оптический). Сначала делал конструктор в классе, куда вносил все 8 пинов, 6 драйвера и по одному датчику на сторону. Сразу в конструкторе настраивал входы - выходы, и аппаратные прерывания 0,1 для датчиков. IDE выдает ошибку
Compilation error: invalid use of non-static member function ‘void L298N::sensCountL()’
потом для назначения пинов и настройки прерываний создал отдельный метод, та же самая ошибка… Что я не так делаю ?
// Compilation error: invalid use of non-static member function 'void L298N::sensCountL()'
class L298N
{
public:
L298N(uint8_t pwmL, uint8_t in1L, uint8_t in2L, uint8_t pwmR, uint8_t in1R, uint8_t in2R)
{
_pwmL = pwmL;
_in1L = in1L;
_in2L = in2L;
_pwmR = pwmR;
_in1R = in1R;
_in2R = in2R;
pinMode(_pwmL, OUTPUT);
pinMode(_in1L, OUTPUT);
pinMode(_in2L, OUTPUT);
pinMode(_pwmR, OUTPUT);
pinMode(_in1R, OUTPUT);
pinMode(_in2R, OUTPUT);
}
void setPinSensor(uint8_t sensorPinL, uint8_t sensorPinR)
{
_sensorPinL = sensorPinL;
_sensorPinR = sensorPinR;
pinMode(_sensorPinL, INPUT);
pinMode(_sensorPinR, INPUT);
attachInterrupt(_sensorPinL, sensCountL, RISING);
attachInterrupt(_sensorPinR, sensCountR, RISING);
}
void forward(uint8_t speed) // ЕХАТЬ ВПЕРЕД (СКОРОСТЬ) (1 для рассчета минимальной скорости в зависсимости от напряжения)
{
_speed = speed;
digitalWrite(_in1L, HIGH);
digitalWrite(_in2L, LOW);
digitalWrite(_in1R, HIGH);
digitalWrite(_in2R, LOW);
_smL = 0;
if (_speed == 1)
{
while (_smL < 1)
{
analogWrite (_pwmL, _speed)
analogWrite (_pwmR, _speed)
_speed ++;
}
_speed += 5;
}
}
/*
void forward(uint8_t speed, uint16_t sm)
{
_speed = speed;
_sm = sm;
}
void backward(uint8_t speed)
{
_speed = speed;
analogWrite(_pwm, _sped);
digitalWrite(_in1, LOW);
digitalWrite(_in2, HIGH);
}
*/
void stop()
{
analogWrite(_pwmL, 0);
analogWrite(_pwmR, 0);
}
private:
void sensCountR() // ОБРАБОТКА ПРЕРЫВАНИЙ ПРАВОГО ДАТЧИКА
{
_smR++;
}
void sensCountL() // ОБРАБОТКА ПРЕРЫВАНИЙ ПРАВОГО ДАТЧИКА
{
_smR++;
}
uint8_t _pwmL;
uint8_t _in1L;
uint8_t _in2L;
uint8_t _pwmR;
uint8_t _in1R;
uint8_t _in2R;
uint8_t _sensorPinL;
uint8_t _sensorPinR;
uint8_t _speed;
uint16_t _sm;
};
функцию обработчик (просто счетчик импульсов) располагал и в классе, и в loop