Copterbeleuchtung mit WS2811 RGB LED Stripe

Status
Nicht offen für weitere Antworten.
Hallo, ich habe mir gerade mal die Github-Seite angeguckt und finde das LED-Projekt recht interessant.
Aber ich frage mich, ob in naher Zukunft vielleicht auch das Mavlink-Protokoll bzw. APM boards unterstützt werden.
Es wäre nämlich schön die Flightmodes mit den LED's anzeigen lassen zu können.
 
Zuletzt bearbeitet:
Hallo Leute,
ich lese hier zwar schon eine ganze Weile mit, habe mich aber erst jetzt dazu entschieden, den MCL-Code zu testen, da die Ringe von Adafruit inzwischen richtig günstig geworden sind und gut zu meinem aktuellen Projekt passen. Bisher habe ich das Kopter_light aus der Parallelwelt genutzt, da die LPD8806-LEDs bedeutend sparsamer sind. Aber die gibt es ja leider nicht als Ring...

Ich habe mir aktuell den Code aus dem Github gezogen und die FastLed-Lib, die auch das Fastspi_LED2 enthält. Aber was auch immer ich mache, die Überprüfung wirft mir Fehler aus. Evtl. habe ich ja auch nur eine falsche Lib erwischt. Kann mir grundsätzlich jemand sagen, in welcher Reihenfolge ich vorgehen muss? Die Kompilierung scheitert schon ohne dass ich am Code gespielt habe...

Ich habe den aktuellen Download aus dem Github für das MCLC, Die Arduino IDE 1.6 und die FastLED_Master Bibliothek.

Muss ich eigentlich alle .ino dem Sketch zufügen? die Eingabeoptionen per GUI, Konsole u.a. nutze ich nicht...

VG
Lars
 
jepp, die serialcommand habe ich auch. wenn ich den Sketch in Arduino ide lade und prüfe, kommt folgende Fehlermeldung:

MultiCopterLightControl.ino:10:14: error: variable or field 'allLeds' declared void
MultiCopterLightControl.ino:10:14: error: 'CRGB' was not declared in this scope
MultiCopterLightControl.ino:11:23: error: 'CRGB' has not been declared
MultiCopterLightControl.ino:13:36: error: 'CRGB' has not been declared
MultiCopterLightControl.ino:14:23: error: 'CRGB' has not been declared
MultiCopterLightControl.ino:18:15: error: variable or field 'setColor' declared void
MultiCopterLightControl.ino:18:15: error: 'CRGB' was not declared in this scope
MultiCopterLightControl.ino:18:23: error: expected primary-expression before 'int'
MultiCopterLightControl.ino:28:1: error: 'CRGB' does not name a type
MultiCopterLightControl.ino:29:17: error: variable or field 'printColor' declared void
MultiCopterLightControl.ino:29:17: error: 'CRGB' was not declared in this scope
MultiCopterLightControl.ino:32:15: error: variable or field 'oneColor' declared void
MultiCopterLightControl.ino:32:15: error: 'CRGB' was not declared in this scope
MultiCopterLightControl.ino:32:27: error: expected primary-expression before 'int'
MultiCopterLightControl.ino:34:13: error: variable or field 'police' declared void
MultiCopterLightControl.ino:34:13: error: 'CRGB' was not declared in this scope
MultiCopterLightControl.ino:34:19: error: 'color1' was not declared in this scope
MultiCopterLightControl.ino:34:27: error: 'CRGB' was not declared in this scope
MultiCopterLightControl.ino:34:33: error: 'color2' was not declared in this scope
MultiCopterLightControl.ino:34:41: error: expected primary-expression before 'int'
MultiCopterLightControl.ino:35:30: error: 'CRGB' has not been declared
MultiCopterLightControl.ino:6:26: error: elements of array 'CRGB leds [48]' have incomplete type
MultiCopterLightControl.ino:6:26: error: storage size of 'leds' isn't known
MultiCopterLightControl.ino: In function 'void setup()':
MultiCopterLightControl.ino:15:3: error: 'LEDS' was not declared in this scope
MultiCopterLightControl.ino:15:16: error: 'WS2811' was not declared in this scope
MultiCopterLightControl.ino:15:33: error: 'GRB' was not declared in this scope
MultiCopterLightControl.ino: In function 'void clearLeds()':
MultiCopterLightControl.ino:42:48: error: invalid application of 'sizeof' to incomplete type 'CRGB'
MultiCopterLightControl.ino: In function 'void allLeds(CRGB)':
MultiCopterLightControl.ino:45:6: error: 'color' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
MultiCopterLightControl.ino: In function 'void setLed(int, CRGB)':
MultiCopterLightControl.ino:49:6: error: 'color' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
MultiCopterLightControl.ino: In function 'void setArmLed(int, int, CRGB)':
MultiCopterLightControl.ino:57:6: error: 'color' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
MultiCopterLightControl.ino: In function 'void setArm(int, CRGB)':
MultiCopterLightControl.ino:62:6: error: 'color' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
MultiCopterLightControl.ino: In function 'void show()':
MultiCopterLightControl.ino:67:3: error: 'LEDS' was not declared in this scope
MultiCopterLightControl.ino: In function 'void show(int)':
MultiCopterLightControl.ino:71:3: error: 'LEDS' was not declared in this scope
Colors.ino: At global scope:
Colors.ino:6:39: error: elements of array 'CRGB storedColorsRGB [16]' have incomplete type
Colors.ino:6:39: error: storage size of 'storedColorsRGB' isn't known
Colors.ino:7:6: error: variable 'CRGB currentRGB' has initializer but incomplete type
Colors.ino:7:31: error: invalid use of incomplete type 'struct CRGB'
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
Colors.ino: In function 'void setColor(CRGB, int)':
Colors.ino:12:6: error: 'c' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
Colors.ino:15:15: error: 'printColor' was not declared in this scope
Colors.ino: In function 'void readColors()':
Colors.ino:38:38: error: invalid use of incomplete type 'struct CRGB'
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
Colors.ino: In function 'CRGB getLedRGB(int, int)':
Colors.ino:87:37: error: return type 'struct CRGB' is incomplete
Colors.ino: In function 'void printColor(CRGB)':
Colors.ino:91:6: error: 'c' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
LedEffects.ino: In function 'void oneColor(CRGB, int)':
LedEffects.ino:1:6: error: 'color' has incomplete type
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
LedEffects.ino: In function 'void showCurrentColors(int, int)':
LedEffects.ino:11:54: error: invalid use of void expression
LedEffects.ino: In function 'void police(CRGB*, CRGB*, int)':
LedEffects.ino:24:8: error: variable 'CRGB c' has initializer but incomplete type
LedEffects.ino: In function 'void runningLed(int, CRGB*, int, boolean, int, int)':
LedEffects.ino:50:62: error: invalid use of void expression
LedEffects.ino:68:50: error: invalid use of incomplete type 'struct CRGB'
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
LedEffects.ino:1:6: error: initializing argument 1 of 'void oneColor(CRGB, int)'
LedEffects.ino:68:50: error: invalid use of incomplete type 'struct CRGB'
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
LedEffects.ino: In function 'void runningLed2(int, int*, int, int*, int, int, int)':
LedEffects.ino:98:58: error: invalid use of void expression
LedEffects.ino: In function 'void pulseBrightness(int, int, int, int, int)':
LedEffects.ino:128:42: error: invalid use of void expression
LedEffects.ino: In function 'void blendColors(int, int, int, int)':
LedEffects.ino:149:10: error: variable 'CRGB rgb1' has initializer but incomplete type
LedEffects.ino:150:10: error: variable 'CRGB rgb2' has initializer but incomplete type
LedEffects.ino:155:10: error: variable 'CRGB rgb' has initializer but incomplete type
LedEffects.ino:155:28: error: invalid use of incomplete type 'struct CRGB'
MultiCopterLightControl.ino:6:8: error: forward declaration of 'struct CRGB'
Fehler beim Kompilieren.
Eingefügt habe ich die config.h, multicopterlightcontrol.ino, colors.ino, inputrc.ino und ledeffects.ino. Was mache ich falsch?

VG
Lars
 

Dolfein

Neuer Benutzer
Wenn du SerialCommand, FastLed und Multicopterlightcontrol im Arduino Libraries kopiereerd hast dann brauchst du eigentlich nur im Arduino Scetsch, Multicopterlightcontrol aufrufen und der Rest wird automatisch aufgerufen.

VG
Arnoud
 

Dolfein

Neuer Benutzer
Weil ich meine Copter gecrasht habe und dabei auch die Elektronik hinüber gegangen ist, wollte ich ein neue anfertigen.
Hab zeit tagen dieses Problem und krieg es nicht behoben.


Arduino: 1.6.5 (Windows XP), Platine: "Arduino Nano, ATmega328"

In file included from InputTerminal.ino:3:0:
C:\Users\-\Documents\Arduino\libraries\ArduinoSerialCommand/SerialCommand.h:60:30: fatal error: SoftwareSerial.h: No such file or directory
#include <SoftwareSerial.h>
^
compilation terminated.
Fehler beim Kompilieren.

Dieser Report hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei > Einstellungen


Wenn ich Input Terminal raus löse funktioniert es soweit aber ich möchte eigentlich Serial Monitor weiter benutzen.
Wer kann mich helfen.


FG Arnoud
 

der_tom

Erfahrener Benutzer
Nimm eine andere arduino Version....
 

Dolfein

Neuer Benutzer
Lang nichts mehr gehört.
Aber ich hab es hin bekommen um die setConfig mit RC zu ändern über ein Zweite Kanal.
Hier die codes

#if defined (INPUT_TERMINAL)

#include <SerialCommand.h>

SerialCommand sCmd;

void setupInputTerminal(){
Serial.begin(115200);
initSerialCommands();
SERIAL_PRINTLN("*** SETUP COMPLETE ***");
}

void loopInputTerminal(){
sCmd.readSerial();
}

void initSerialCommands(){
sCmd.addCommand("setR", serialSetR);
sCmd.addCommand("setG", serialSetG);
sCmd.addCommand("setB", serialSetB);
sCmd.addCommand("setColor", serialSetColor);
sCmd.addCommand("getColor", serialGetColor);
sCmd.addCommand("printColor", printCurrentColor);
sCmd.addCommand("setConfig", serialSetConfig);

sCmd.addCommand("saveColors", serialSaveColors);
sCmd.addCommand("saveLeds", serialSaveLeds);
sCmd.addCommand("clearEeprom", clearEeprom);

sCmd.addCommand("setArm", serialSetArm);
sCmd.addCommand("setLed", serialSetLed);

sCmd.addCommand("m+", serialNextMode);
sCmd.addCommand("m-", serialPreviousMode);
sCmd.addCommand("d", serialSetDelay);
sCmd.addCommand("s+", serialNextConfig); //Dies ist neu
sCmd.addCommand("s-", serialPreviousConfig); //Dies ist neu
}

int readIntArg(){
char *arg;
arg = sCmd.next();
if (arg != NULL) return atoi(arg);
return -1;
}

void printCurrentColor(){
SERIAL_PRINT("current RGB color = (");
SERIAL_PRINT(currentRGB.r);
SERIAL_PRINT(", ");
SERIAL_PRINT(currentRGB.g);
SERIAL_PRINT(", ");
SERIAL_PRINT(currentRGB.b);
SERIAL_PRINTLN(")");
}

void serialSetR(){
int newColor = readIntArg();
if (newColor>=0 && newColor<256){
currentRGB.r = newColor;
printCurrentColor();
}
}

void serialSetG(){
int newColor = readIntArg();
if (newColor>=0 && newColor<256){
currentRGB.g = newColor;
printCurrentColor();
}
}

void serialSetB(){
int newColor = readIntArg();
if (newColor>=0 && newColor<256){
currentRGB.b = newColor;
printCurrentColor();
}
}

void serialSetColor(){
int idx = readIntArg()%MAX_EEPROM_COLORS;
if (idx>=0 && idx<MAX_EEPROM_COLORS){
SERIAL_PRINT("Set color ");
SERIAL_PRINT(idx);
SERIAL_PRINTLN(" to current color.");
storedColorsRGB[idx] = currentRGB;
currentColorIdx = idx;
}
}

void serialSetConfig(){
config = readIntArg()%MAX_LED_CONFIGS;
SERIAL_PRINT("new config = ");
SERIAL_PRINTLN(config);
}

void serialGetColor(){
int idx = readIntArg()%MAX_EEPROM_COLORS;
currentRGB = storedColorsRGB[idx];
currentColorIdx = idx;
printCurrentColor();
}

void serialSaveColors(){
writeColors();
SERIAL_PRINTLN("Colors saved to EEPROM.");
}

void serialSaveLeds(){
writeLeds();
SERIAL_PRINTLN("Led colors saved to EEPROM.");
}

void serialSetArm(){
int arm = readIntArg() % NUM_ARMS;
if (arm>=0 && arm<NUM_ARMS){
setArmColor(currentColorIdx, arm, config);
SERIAL_PRINT("Updated arm ");
SERIAL_PRINTLN(arm);
}
}

void serialSetLed(){
int led = readIntArg() % NUM_LEDS;
if (led>=0 && led<NUM_LEDS){
setLedColor(currentColorIdx, led, config);
}
}

void printNewMode(){
SERIAL_PRINT("new mode = ");
SERIAL_PRINTLN(mode);
}

void serialNextMode(){
mode = (mode+1) % NUM_MODES;
printNewMode();
}

void serialPreviousMode(){
mode = (mode+(NUM_MODES-1)) % NUM_MODES;
printNewMode();
}
void printNewConfig(){ //Dies ist neu
SERIAL_PRINT("new config = "); //Dies ist neu
SERIAL_PRINTLN(config); //Dies ist neu
}

void serialNextConfig(){ //Dies ist neu
config = (config+1) % NUM_CONFIGS; //Dies ist neu
printNewConfig(); //Dies ist neu
}

void serialPreviousConfig(){ //Dies ist neu
config = (config+(NUM_CONFIGS-1)) % NUM_CONFIGS; //Dies ist neu
printNewConfig(); //Dies ist neu
}
void serialSetDelay(){
int newDelay = readIntArg();
if (newDelay>0 && newDelay<10000){
DELAY = newDelay;
SERIAL_PRINT("new delay = ");
SERIAL_PRINTLN(DELAY);
}
}

void serialReversed(){
reverse = !reverse;
SERIAL_PRINTLN("reversed");
}

#endif

----------------------------------------------------------------------------------------------------------------------------


#if defined (INPUT_RC)

void setupInputRC(){
pinMode(RC_PIN_1, INPUT);
pinMode(RC_PIN_2, INPUT); //Dies ist neu
}

void loopInputRC(){
int rc1 = pulseIn(RC_PIN_1, HIGH, 25000);
int rc2 = pulseIn(RC_PIN_2, HIGH, 25000); //Dies ist neu
boolean lostConnection = rc1<650;
if (rc1<1000) rc1 = 1000;
else if (rc1>2000) rc1 = 2000;

if (lostConnection) mode = MODE_RC_NO_CONNECTION;
else if (rc1<1350) mode = MODE_RC_LOW;
else if (rc1>1700) mode = MODE_RC_HIGH;
else mode = MODE_RC_MID;

if (rc2<1000) rc2 = 1000; //Dies ist neu
else if (rc2>2000) rc2 = 2000; //Dies ist neu

if (lostConnection) config = CONFIG_RC_NO_CONNECTION; //Dies ist neu
else if (rc2<1350) config = CONFIG_RC_LOW; //Dies ist neu
else if (rc2>1700) config = CONFIG_RC_HIGH; //Dies ist neu
else config = CONFIG_RC_MID; //Dies ist neu
}

#endif


-----------------------------------------------------------------------------------------------------------------------------


// select (uncomment) one of the following input modes
//#define INPUT_TERMINAL // use serial terminal to control lightning mode and configure led colors
#define INPUT_RC // use rc inputs to control lightning mode

#define NUM_ARMS 4 // number of arms on the multicopter
#define LEDS_PER_ARM 15// leds per arm
#define LED_PIN 9 // led pin => data of led strip
// input mode depending configs
#if defined (INPUT_TERMINAL)
#define NUM_MODES 4
#define NUM_CONFIGS 4 //Dies ist neu

#elif defined (INPUT_RC)
#define RC_PIN_1 6 // PIN for RC input channel 1
#define RC_PIN_2 10 // PIN for RC input channel 1 //Dies ist neu

#define MODE_RC_LOW MODE_0
#define MODE_RC_MID MODE_1
#define MODE_RC_HIGH MODE_2
#define MODE_RC_NO_CONNECTION MODE_3

#define CONFIG_RC_LOW CONFIG_0 //Dies ist neu
#define CONFIG_RC_MID CONFIG_1 //Dies ist neu
#define CONFIG_RC_HIGH CONFIG_2 //Dies ist neu
#define CONFIG_RC_NO_CONNECTION CONFIG_3 //Dies ist neu

#define REQUEST_DELAY 250 // request delay, smaller delay = faster update of MultiWii values = more cpu power


#endif



/////////////////////////////////////////////////////////////////////////////////
// !!! Do not modify anything below this line, except you know what you do !!! //
/////////////////////////////////////////////////////////////////////////////////

#define MODE_0 0
#define MODE_1 1
#define MODE_2 2
#define MODE_3 3

#define CONFIG_0 0 //Dies ist neu
#define CONFIG_1 1 //Dies ist neu
#define CONFIG_2 2 //Dies ist neu
#define CONFIG_3 3 //Dies ist neu

#define NUM_LEDS (NUM_ARMS * LEDS_PER_ARM) // calculate total number of leds

#if defined (INPUT_TERMINAL)
#define SERIAL_PRINT(x) Serial.print(x)
#define SERIAL_PRINTLN(x) Serial.println(x)
#else
#define SERIAL_PRINT(x)
#define SERIAL_PRINTLN(x)
#endif


MFG. Arnoud
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten