hast du das mal selber getestet? Ich hatte doch den Arduino Code gepostet...
Code:
uint16_t ColorRGB216bit(uint16_t R, uint16_t G, uint16_t B) {
return ((R/8)*2048) | ((G/4)*32) | (B/8);
}
void Color16bit2colorRGB(uint16_t color16, uint16_t &R, uint16_t &G, uint16_t &B) {
R = (uint8_t)(color16 / 2048)*8;
G = (uint8_t)(color16 & 2016)/8;
B = (uint8_t)(color16 &31)*8;
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; // 0xFF66B2; // Dark Pink (255,102,78)
Serial.begin(115200);
delay(3000);
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 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:
}
ergibt:
Code:
Hauptprogramm vor Aufruf:
col16=0
r=255
g=102
b=78
Hauptprogramm nach rgb zu col16-Berechnung (rgb gelöscht):
col16=64297
r=0
g=0
b=0
Unterprogramm color16 zu RGB:
color16=64297
R=248
G=4
B=72
Hauptprogramm nach col16 zu rgb:
col16=64297
r=248
g=4
b=72
Teste doch bitte mal selber, sei so nett...
Lesezeichen