Premier projet en C++/Arduino provenant d'un arrière-plan JavaScript. J'ai quelques problèmes avec ce code! Je reçois cette erreur:Utilisation incorrecte de la fonction membre non statique - 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);
Voici le 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++;
}
}
J'ai essayé de faire change_callback
une fonction statique mais qui provoque des erreurs avec fade_val
, qui est membre de la classe publique. J'ai l'impression que cela a à voir avec des pointeurs, dont je suis toujours en train de faire le tour. Il est important que chaque instance de Pad possède son propre capteur et son propre fade_val - ils ne peuvent pas être partagés (statiques) sur chaque Pad.
vous avez besoin d'une référence à votre objet Pad. Vous devriez probablement utiliser une fonction statique et utiliser le Pad * comme paramètre utilisateur. –
Hey Garr, pouvez-vous élaborer sur le Pad * en tant que paramètre utilisateur? –