@felmue Ok. Started tonight with that documentation and paid special attention to the settings. Step by step. #include <epdiy.h> at the top. Are we sure the version of EPDiy shouldn't be 2.0.0?
Here are my error messages:
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c: In function 'init_ckv_rmt':
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:181:53: error: 'const struct <anonymous>' has no member named 'module'
181 | periph_module_reset(rmt_periph_signals.groups[0].module);
| ^
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:182:54: error: 'const struct <anonymous>' has no member named 'module'
182 | periph_module_enable(rmt_periph_signals.groups[0].module);
| ^
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c: In function 'deinit_ckv_rmt':
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:216:53: error: 'const struct <anonymous>' has no member named 'module'
216 | periph_module_reset(rmt_periph_signals.groups[0].module);
| ^
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:217:55: error: 'const struct <anonymous>' has no member named 'module'
217 | periph_module_disable(rmt_periph_signals.groups[0].module);
| ^
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c: In function 'init_bus_gpio':
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:339:28: error: 'lcd_periph_signals' undeclared (first use in this function); did you mean 'rmt_periph_signals'?
339 | DATA_LINES[i], lcd_periph_signals.panels[0].data_sigs[i], false, false
| ^~~~~~~~~~~~~~~~~~
| rmt_periph_signals
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:339:28: note: each undeclared identifier is reported only once for each function it appears in
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c: In function 'init_lcd_peripheral':
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:487:26: error: 'lcd_periph_signals' undeclared (first use in this function); did you mean 'rmt_periph_signals'?
487 | periph_module_enable(lcd_periph_signals.panels[0].module);
| ^~~~~~~~~~~~~~~~~~
| rmt_periph_signals
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c: In function 'deinit_lcd_peripheral':
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:562:25: error: 'lcd_periph_signals' undeclared (first use in this function); did you mean 'rmt_periph_signals'?
562 | periph_module_reset(lcd_periph_signals.panels[0].module);
| ^~~~~~~~~~~~~~~~~~
| rmt_periph_signals
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c: In function 'epd_lcd_set_pixel_clock_MHz':
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:624:78: error: passing argument 4 of 'lcd_hal_cal_pclk_freq' makes pointer from integer without a cast [-Wint-conversion]
624 | = lcd_hal_cal_pclk_freq(&lcd.hal, 240000000, lcd.config.pixel_clock, flags, &clk_div);
| ^~~~~
| |
| int
In file included from c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:49:
C:\Users\radgh\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.4-2f7dcd86-v1\esp32s3/include/hal/include/hal/lcd_hal.h:47:129: note: expected 'hal_utils_clk_div_t *' but argument is of type 'int'
47 | uint32_t lcd_hal_cal_pclk_freq(lcd_hal_context_t *hal, uint32_t src_freq_hz, uint32_t expect_pclk_freq_hz, hal_utils_clk_div_t* lcd_clk_div);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
c:\Users\radgh\Documents\Arduino\libraries\epdiy\src\output_lcd\lcd_driver.c:624:11: error: too many arguments to function 'lcd_hal_cal_pclk_freq'
624 | = lcd_hal_cal_pclk_freq(&lcd.hal, 240000000, lcd.config.pixel_clock, flags, &clk_div);
| ^~~~~~~~~~~~~~~~~~~~~
C:\Users\radgh\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.4-2f7dcd86-v1\esp32s3/include/hal/include/hal/lcd_hal.h:47:10: note: declared here
47 | uint32_t lcd_hal_cal_pclk_freq(lcd_hal_context_t *hal, uint32_t src_freq_hz, uint32_t expect_pclk_freq_hz, hal_utils_clk_div_t* lcd_clk_div);
| ^~~~~~~~~~~~~~~~~~~~~
exit status 1
Compilation error: exit status 1
Code:
#include <epdiy.h>
#include <M5GFX.h>
M5GFX display;
//#include <M5UnitOLED.h>
//M5UnitOLED display; // default setting
//M5UnitOLED display ( 21, 22, 400000 ); // SDA, SCL, FREQ
//#include <M5UnitLCD.h>
//M5UnitLCD display; // default setting
//M5UnitLCD display ( 21, 22, 400000 ); // SDA, SCL, FREQ
//#include <M5UnitGLASS2.h>
//M5UnitGLASS2 display; // default setting
//M5UnitGLASS2 display ( 21, 22, 400000 ); // SDA, SCL, FREQ
// #include <M5AtomDisplay.h>
// M5AtomDisplay display;
static constexpr size_t BAR_COUNT = 64;
static int max_y[BAR_COUNT];
static int prev_y[BAR_COUNT];
static uint32_t colors[BAR_COUNT];
void setup(void)
{
display.init();
display.startWrite();
display.fillScreen(TFT_BLACK);
if (display.isEPD())
{
display.setEpdMode(epd_mode_t::epd_fastest);
}
if (display.width() < display.height())
{
display.setRotation(display.getRotation() ^ 1);
}
for (int x = 0; x < BAR_COUNT; ++x)
{
prev_y[x] = display.height();
max_y[x] = display.height();
int r=0,g=0,b=0;
switch (x >> 4)
{
case 0:
b = 255;
g = x*0x11;
break;
case 1:
b = 255 - (x&15)*0x11;
g = 255;
break;
case 2:
g = 255;
r = (x&15)*0x11;
break;
case 3:
r = 255;
g = 255 - (x&15)*0x11;
break;
}
colors[x] = display.color888(r,g,b);
}
}
void loop(void)
{
int h = display.height();
static int i;
++i;
display.waitDisplay();
for (int x = 0; x < BAR_COUNT; ++x)
{
int y = (h>>1) - (sinf((float)((x-24)*i) / 3210.0f) + sinf((float)((x-40)*i) / 1234.0f)) * (h>>2);
int xpos = x * display.width() / BAR_COUNT;
int w = ((x+1) * display.width() / BAR_COUNT) - xpos - 1;
if (max_y[x]+1 >= y) { max_y[x] = y-1; }
else
{
if ((i & 3) ==0 )
{
display.fillRect(xpos, max_y[x]-3, w, 1, TFT_BLACK);
max_y[x]++;
}
}
display.fillRect(xpos, max_y[x]-3, w, 3, TFT_WHITE);
if (prev_y[x] < y)
{
display.fillRect(xpos, prev_y[x], w, y - prev_y[x], TFT_BLACK);
}
else
{
display.fillRect(xpos, y, w, prev_y[x] - y, colors[x]);
}
prev_y[x] = y;
}
display.display();
}