Erstes Projekt in C++/Arduino mit JavaScript-Hintergrund. Ich habe einige Probleme mit diesem Code! Ich bin diesen Fehler:Ungültige Verwendung der nicht statischen Elementfunktion - Arduino - Automaton
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);
Hier ist der cav:
#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++;
}
}
Ich habe versucht, change_callback
eine statische Funktion zu machen, aber dann die Fehler mit fade_val
verursacht, die eine öffentliche Klasse Mitglied ist. Ich habe das Gefühl, dass das mit den Zeigern zu tun hat, um die ich mich immer noch kümmere. Es ist wichtig, dass jede Instanz von Pad über einen eigenen Sensor verfügt und über fade_val verfügt - sie können nicht über jedes Pad gemeinsam genutzt werden (statisch).
Sie benötigen einen Verweis auf Ihr Pad-Objekt. Sie sollten wahrscheinlich eine statische Funktion verwenden und das Pad * als Benutzerparameter verwenden. –
Hey Garr, kannst du das Pad * als Benutzerparameter näher erläutern? –