來自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 *作爲用戶參數嗎? –