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.Du brauchst aber 16 Bit während der Berechnung, weil zumindest Dein Farbwert color16 ja 16 Bit umfasst.Code:so: (uint8_t)(color16 / 2048 )*8;
Du müsstest hinterher eine Umwandlung vornehmenAber das funktioniert nicht!Code:(uint8_t)R = (color16 / 2048 )*8;
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); }







Zitieren
Lesezeichen