Ich hatte das hier schon geschrieben (Beirag #20): https://www.roboternetz.de/community...l=1#post646541
Ich denke, er führt die Berechnung mit 8 Bit aus.
Code:
so: (uint8_t)(color16 / 2048 )*8;
Du brauchst aber 16 Bit während der Berechnung, weil zumindest Dein Farbwert color16 ja 16 Bit umfasst.
Du müsstest hinterher eine Umwandlung vornehmen
Code:
(uint8_t)R = (color16 / 2048 )*8;
Aber das funktioniert nicht!
Deshalb habe ich jetzt das probiert, da gibt es kein Gemecker:
Code:
void Color16bit2colorRGB(uint16_t color16, uint16_t &R, uint16_t &G, uint16_t &B) {
R = (color16 / 2048)*8; ;
G = (color16 & 2016)/8;;
B = (color16 & 31)*8;
R = (uint8_t)R;
G = (uint8_t)G;
B = (uint8_t)B;
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);
}
Lesezeichen