fix: eliminate diagonal dither pattern from display driver
Root cause: Panel_ED2208's epd_quality mode applies _dither_row_rgb_pair (diagonal bias pattern with dither=140) during _exec_transfer(). Since our ImagePipeline already does proper Floyd-Steinberg dithering, the driver's additional dithering was creating visible diagonal artifacts. Fix: setEpdMode(epd_fastest) selects _dither_row_none (clean nearest-color lookup, no spatial bias). On Panel_ED2208 this only affects the dither function — NOT refresh quality or waveform. Also: default dither_noise setting to OFF since error scatter was targeting the wrong layer (it made gradient areas fuzzier without fixing the real problem in the display driver). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -22,7 +22,10 @@ Settings SettingsManager::get() {
|
||||
s.meta_pos = static_cast<MetaPosition>(readU8("meta_pos", DEFAULT_META_POS));
|
||||
s.date_fmt = readString("date_fmt", "%Y-%m-%d");
|
||||
s.time_fmt = readString("time_fmt", "%H:%M:%S");
|
||||
s.pipeline_mode = readU8("pipe_mode", DEFAULT_PIPELINE_MODE);
|
||||
s.dither_noise = readU8("dith_noise", DEFAULT_DITHER_NOISE);
|
||||
s.led_brightness = readU8("led_bright", DEFAULT_LED_BRIGHTNESS);
|
||||
s.show_battery = readU8("show_batt", 1);
|
||||
s.queue_cursor = readU32("queue_cursor", 0);
|
||||
s.albums_json = readString("albums_json", "[]");
|
||||
return s;
|
||||
@@ -40,7 +43,10 @@ void SettingsManager::save(const Settings& s) {
|
||||
writeU8("meta_pos", static_cast<uint8_t>(s.meta_pos));
|
||||
writeString("date_fmt", s.date_fmt);
|
||||
writeString("time_fmt", s.time_fmt);
|
||||
writeU8("pipe_mode", s.pipeline_mode);
|
||||
writeU8("dith_noise", s.dither_noise);
|
||||
writeU8("led_bright", s.led_brightness);
|
||||
writeU8("show_batt", s.show_battery);
|
||||
writeU32("queue_cursor", s.queue_cursor);
|
||||
writeString("albums_json", s.albums_json);
|
||||
Serial.println("[settings] All settings saved");
|
||||
|
||||
Reference in New Issue
Block a user