来自JavaScript背景的C++/Arduino中的第一个项目。我在使用此代码时遇到了一些问题!我得到这个错误:非静态成员函数的使用无效 - Arduino - 自动机
C:\Users\Owner\Documents\Arduino\libraries\Pad\Pad.cpp:48:55: error: invalid use of non-static member function
sensor.begin(15, 5).onChange(change_callback, 3);
这里的CPP:
#include "Pad.h"
#include "Arduino.h"
#include "FastLED.h"
#include "Automaton.h"
extern CRGB leds[64];
Pad::Pad(int val) {
_val = val;
_default = CHSV(random(255), 255, 255);
_cnt = 0;
fade = false;
fade_val = 0;
}
void Pad::change_callback(int idx, int v, int up) {
Serial.println(v);
fade_val = v;
}
void Pad::color() {
my_leds[0] = CHSV(random(255),255,255);
fade = true;
}
void Pad::init() {
for(int a = 0 ; a < 8 ; a++) {
my_leds[a] = _default;
}
sensor.begin(15, 5).onChange(change_callback, 3);
}
void Pad::render() {
if(fade) {
int v = map(fade_val, 0, 1023, 0, 255);
my_leds[0] = CHSV(127,255, v);
_cnt++;
}
}
我曾试图使change_callback
静态函数,但随后导致错误与fade_val
,这是一个公共类成员。我有一种感觉,这与指针有关,我仍然在包裹着我的头。重要的是每个Pad实例都有自己的传感器和自己的fade_val--它们不能在每个Pad之间共享(静态)。
您需要对Pad对象的引用。您应该使用静态功能并使用Pad *作为用户参数。 –
Hey Garr,你可以详细说明Pad *作为用户参数吗? –