danke für den Post!
ich habe jetzt neu codiert:
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)(color16/524288);
G = (uint8_t)(color16/1024);
B = (uint8_t)((color16/8)&31);
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:
}
und bekomme jetzt den output:
Code:
Hauptprogramm vor Aufruf:
col16=0
r=255
g=102
b=78
Hauptprogramm nach rgb zu col16-Berechnung (rgb gelöscht):
col16=64718
r=0
g=0
b=0
Unterprogramm color16 zu RGB:
color16=64718
R=0
G=63
B=25
Hauptprogramm nach col16 zu rgb:
col16=64718
r=0
g=63
b=25
hmmmm...
Lesezeichen