Grüße,
ich habe mir für meine WS2812b einige eigene Funktionen geschrieben, und möchte diese in eine eigene Libary auslagern.
Zum Anschauen hab ich mir einen kleinen Testsketch geschrieben, und bin nach diesem Tutorial vorgegangen. Da ich aber kein Objekt benötige, würde ich die Funktionen gern static aufrufen - entsprechend hab ich alles umgeschrieben.
Einziges Problem: das Array “CRGB” sorgt für die Fehlermeldung:
ccogoZpY.ltrans0.ltrans.o*: In function fill_solid(CRGB*, int, CRGB const&) [clone .constprop.14]
colorutils.cpp:12: undefined reference to Funktionen leds1
Wenn ich das ganze mit einem Objekt aufrufe (das auskommentierte) ist alles gut, aber als static crashed er mir. Google hat mir nichts gebracht, und ich bin leider auch (noch) nicht so C-Erfahren das ich es selber deuten könnte.
Hier mal die Dateien:
Test_Led_Libary.ino
#include "Funktionen.h"
//Funktionen myStripe();
void setup()
{
//myStripe.begin();
Funktionen::begin();
}
void loop()
{
Funktionen::LedsAn();
//myStripe.LedsAn();
delay(10000);
Funktionen::LedsAus();
//myStripe.LedsAus();
delay(10000);
}
Funktionen.h
#ifndef _FUNKTIONEN_h
#define _FUNKTIONEN_h
#include <FastLED.h>
#include "arduino.h"
class Funktionen {
private:
#define NUM_LEDS_S1 16
#define DATA_PIN_S1 6
static CRGB leds1[NUM_LEDS_S1];
//byte x;
public:
//Funktionen(byte x);
static void LedsAn();
static void LedsAus();
static void begin();
};
#endif
Funktionen.cpp
#include "Funktionen.h"
/*Funktionen::Funktionen()
{
x=0;
}*/
void Funktionen::LedsAn()
{
fill_solid(leds1, NUM_LEDS_S1, CRGB(0, 0, 1));
FastLED.show();
}
void Funktionen::LedsAus()
{
fill_solid(leds1, NUM_LEDS_S1, CRGB(0, 0, 0));
FastLED.show();
}
void Funktionen::begin()
{
FastLED.addLeds<WS2812B, DATA_PIN_S1, GRB>(leds1, NUM_LEDS_S1);
fill_solid(leds1, NUM_LEDS_S1, CRGB(0, 0, 0));
FastLED.setBrightness(255);
FastLED.show();
}