From e7ec16480d560251b4cae550d46031780a7b5e40 Mon Sep 17 00:00:00 2001 From: mbartlett21 Date: Mon, 3 Oct 2022 11:02:33 +1000 Subject: [PATCH] Add 16-colour dithered example for 3.7 inch display --- .../c/examples/EPD_3in7_test.c | 30 ++++++++++++++++-- RaspberryPi_JetsonNano/c/pic/3in7_4bit1.bmp | Bin 0 -> 67318 bytes 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 RaspberryPi_JetsonNano/c/pic/3in7_4bit1.bmp diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c index 347d72b..b6f3a7a 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_3in7_test.c @@ -51,10 +51,13 @@ int EPD_3in7_test(void) //Create a new image cache UBYTE *BlackImage; - /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */ - UWORD Imagesize = ((EPD_3IN7_WIDTH % 4 == 0)? (EPD_3IN7_WIDTH / 4 ): (EPD_3IN7_WIDTH / 4 + 1)) * EPD_3IN7_HEIGHT; + + // Allocate enough for for 4 bits for each pixel (16 gray) + // If you don't use the dithering, this will only need to be 2 bits per pixel + // you may have to edit the startup_stm32fxxx.s file and set a big enough heap size + int Imagesize = (EPD_3IN7_WIDTH + 1) / 2 * EPD_3IN7_HEIGHT; if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { - printf("Failed to apply for black memory...\r\n"); + printf("Failed to apply for memory...\r\n"); return -1; } @@ -154,6 +157,27 @@ int EPD_3in7_test(void) DEV_Delay_ms(500); } +#if 1 // show dithered bmp + EPD_3IN7_4Gray_Init(); // Clear + EPD_3IN7_4Gray_Clear(); + + EPD_3IN7_1Gray_Init(); //init 1 Gray mode + EPD_3IN7_1Gray_Clear(); + + Paint_NewImage(BlackImage, 280, 480, 0, WHITE); + Paint_SetScale(16); + Paint_Clear(WHITE); + + printf("show dithered BMP with Sierra-Lite\r\n"); + GUI_ReadBmp_16Gray("./pic/3in7_4bit1.bmp", 0, 0); + EPD_3IN7_1Gray_Display_Dithered(BlackImage, 0); + DEV_Delay_ms(4000); + + printf("show dithered BMP with Floyd-Steinberg\r\n"); + EPD_3IN7_1Gray_Display_Dithered(BlackImage, 1); + DEV_Delay_ms(4000); +#endif + #endif EPD_3IN7_4Gray_Init(); printf("Clear...\r\n"); diff --git a/RaspberryPi_JetsonNano/c/pic/3in7_4bit1.bmp b/RaspberryPi_JetsonNano/c/pic/3in7_4bit1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..62e72484e3ceb834e4aff728d2c182372247490e GIT binary patch literal 67318 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 literal 0 HcmV?d00001