danke für die Mühe!
Ich muss allerdings auch etwas gestehen...: dass mir das mit diese Pointern mit * und dann doch wieder & im Hauptprogramm noch viel unklarer ist, mit Pointer hin und vorher und hinterher referenzieren oder dereferenzieren oder wie auch immer das heißt - wenn möglich würde ich lieber eindeutige Variablennamen im Hauptprogramm verwenden, die dann per Referenz übergeben werden und auf die man dann nach Ende der Funktion wieder als aktuaisierte Werte per Variabennamen zugreifen kann.
Aber auch da komme ich immer ins Schleudern. Hatte gehofft, das könnte irgendwer aus dem Stegreif... 
so, nochmal getestet - das mit dem "&" klappt...
Rest nochmal in Arbeit...
funktioniert noch nicht ganz perfekt...
- - - Aktualisiert - - -
Code:
uint16_t ColorRGB216bit(uint16_t R, uint16_t G, uint16_t B) {
return ((uint16_t)R << 11) | (((uint16_t)G << 5) & 0b0000011111100000) | ((uint16_t)B & 0b0000000000011111);
}
void Color16bit2colorRGB(uint16_t color16, uint16_t &R, uint16_t &G, uint16_t &B) {
R = (uint8_t)((0b1111100000000000 & color16) >> 11);
G = (uint8_t)((0b0000011111100000 & color16) >> 5);
B = (uint8_t)((0b0000000000011111 & color16));
Serial.println("");
Serial.println("Unterprogramm color16 zu RGB:");
Serial.println( (String)"color16="+(String)color16);
Serial.println( (String)"R="+(String)R);
Serial.println( (String)"G="+(String)G);
Serial.println( (String)"B="+(String)B);
}
void setup() {
// put your setup code here, to run once:
uint16_t r=255, g=102, b=78,
col16=0; // Dark Pink (255,102,78)
Serial.begin(115200);
Serial.println("Hauptprogramm vor Aufruf:");
Serial.println( (String)"col16="+(String)col16);
Serial.println( (String)"r="+(String)r);
Serial.println( (String)"g="+(String)g);
Serial.println( (String)"b="+(String)b);
Serial.println("");
col16=ColorRGB216bit(r,g,b);
r=g=b=0; // Rücksetzen!
Serial.println("Hauptprogramm nach rgb zu col16-Berechnung (rgb Einzelwerte dann gelöscht):");
Serial.println( (String)"col16="+(String)col16);
Serial.println( (String)"r="+(String)r);
Serial.println( (String)"g="+(String)g);
Serial.println( (String)"b="+(String)b);
Color16bit2colorRGB(col16, r, g, b);
Serial.println("");
Serial.println("Hauptprogramm nach col16 zu rgb:");
Serial.println( (String)"col16="+(String)col16);
Serial.println( (String)"r="+(String)r);
Serial.println( (String)"g="+(String)g);
Serial.println( (String)"b="+(String)b);
}
void loop() {
// put your main code here, to run repeatedly:
}
Ausgabe:
Hauptprogramm vor Aufruf:
col16=0
r=255
g=102
b=78
Hauptprogramm nach rgb zu col16-Berechnung (rgb Einzelwerte dann gelöscht):
col16=64718
r=0
g=0
b=0
Unterprogramm color16 zu RGB:
color16=64718
R=31
G=38
B=14
Hauptprogramm nach col16 zu rgb:
col16=64718
r=31
g=38
b=14
Lesezeichen