Переход с УНО на ESP32

Приветствую! Ваша функция epd.Buf_4GrayDisplay() чем от epd.Set_4GrayDisplay() отличается, можете код показать?
Я такой же экран приобрел (4.2" от WeAct), и у меня работают черно-белые примеры на библиотеке GxEPD2, но пример от WaveShare с оттенками серого в оригинальной версии не заработаел. Хотел ваш пример попробовать, но вот функции не хватает :slight_smile:


Это из первого скетча должно выводиться на экран.

Спасибо.
К сожалению не работает, так же, как и оригинальный пример от WaveShare.
Экран не обновляется, вообще никак не реагирует на программу, то есть, видимо, даже init не проходит.
Плата у меня Waveshare ESP32 S3 Nano, пины я пере-определил перед setup()

#define RST_PIN 3
#define DC_PIN 2
#define CS_PIN 10
#define BUSY_PIN 4

MOSI и SCK у меня, как и в Ардуине на D11 и D13.

Если беру пример от WeAct, который использует библиотеку GxEPD2 - всё работает. То есть проблема не в плате esp32, не в подключении дисплея, и не в самом дисплее.

А я переопределял под rp2040 в файле:

/**
 *  @filename   :   epdif.h
 *  @brief      :   Header file of epdif.cpp providing EPD interface functions
 *                  Users have to implement all the functions in epdif.cpp
 *  @author     :   Yehui from Waveshare
 *
 *  Copyright (C) Waveshare     August 10 2017
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documnetation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to  whom the Software is
 * furished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

#ifndef EPDIF_H
#define EPDIF_H

#include <Arduino.h>

// Pin definition
#define RST_PIN         22
#define DC_PIN          21
#define CS_PIN          20
#define BUSY_PIN        23

class EpdIf {
public:
    EpdIf(void);
    ~EpdIf(void);

    static int  IfInit(void);
    static void DigitalWrite(int pin, int value); 
    static int  DigitalRead(int pin);
    static void DelayMs(unsigned int delaytime);
    static void SpiTransfer(unsigned char data);
};

#endif

Блин, я протормозил. Я видел ваши define, но не обратил внимания, что они прямо там же и используются. Конечно, моё пере-определение не работало. Исправил, спасибо, теперь всё показывает как надо :+1:

…Да, интересный в плане цены вариант. Интересно, что его продаёт только один продавец на али.
…Ине кажется экран будет работать и с ПО от разных производителей.

Да, даже странно, у Waveshare, например, много разных продавцов. На GitHub у WeAct показана ещё на taobao ссылка, но это, как я понимаю, для покупателей внутри Китая.

Если контроллер тот же, то и команды те же самые, скорее всего. Но у меня оригинальный пример от WaveShare так и не заработал, хотя ваш работает.

По идее должен был. Я менял в своём примере только порядок вывода оттенков серого. В оригинале на экране они отображались перепутанные местами и фото были некорректными.

Контроллеры и них, вообще-то, разные: WeAct Studio пишет, что у них SSD1683, а Waveshare использует UC8176.

Ещё есть Good Display, у их модуля 4.2" тоже SSD1683, как у WeAct. Пример от GoodDisplay у меня работает без проблем (но он чёрно-белый, без полутонов).

А оригинальный пример от WaveShare я для чистоты эксперимента заново скачал, пины поменял - и стал у меня при запуске программы дисплей мигать. Но на этом всё, ничего не пишет, не рисует.

Я пример вот этот брал: e-Paper/Arduino/epd4in2_V2 at master · waveshareteam/e-Paper · GitHub , и вижу, что в файле epd4in2.cpp у нас с вами есть различия…

Попробуйте вот этот вариант. Он для ESP32 в форм-факторе УНО.

Работает без проблем. Но у меня и ваш epd4in2_V2_RP2040_ottenki_serogo_1 работал, когда я пины правильно переопределил.

Я тут обнаружил, что у известной библиотеки GxEPD2, примеры из которой у меня работали без проблем, есть вариация для дисплеев с 4 оттенками серого - GitHub - ZinggJM/GxEPD2_4G .
Работает на нашем дисплее без проблем (я выбрал в настройках GxEPD2_420_GDEY042T81).
Вроде довольно интересные возможности у этой библиотеки, надо разбираться.

P.S. и примеры от Good Display для модели GDEY042T81 у меня тоже работают

Ну, возможности библиотек как бы вторичны. Первично, наверное, практическое использование такого экрана, а оно однотипно - ценник, бейдж, фоторамка, календарь.

:slight_smile:
Ну вот, как я и предполагал, китайцы сделали доступный экран для календаря в праздничные дни. Молодцы.

Если кому-то интересно, у меня получилось использовать сглаженный фонт (antialiased) на этом 4-тоновом экране - GitHub - miklav/GxEPD2_4G_ext: An example which adds Anti-Aliased Font use to GxEPD2_4G library

Подарили 4-х цветный e-paper, попробую модернизировать календарь. ПО от производителя тоже, что то не корректно с цветами работает, пришлось редактировать файлы.

Темы дней на ум не приходят, кроме трёх.

Ещё можно в зависимости от времени суток при перелистывании тему задавать.

…вот интересный вариант, уже 6 цветов и существенно дороже.

…поэтому пока сомнения :slight_smile:

https://aliexpress.ru/item/1005007748476674.html

@lilik Вы вот обсуждали переход на ESP32, картинки с дисплеем красивые выкладывали, библиотеки правили, а тут раз, и календарь на RP2040 оказался!? Прямо как есть проект работающий на ESP без правок закидывается в RP и тоже работает?

Да, только номера пинов поменял на другие.