-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ESP8266/ESP32 Support #4
Comments
Library.properties indicates support for AVR microcontrollers only.
Target is specifically "Arduino UNO" (R3) heltec-eink-modules/docs/README.md Line 4 in a9cdf2e
Library's main function is to implement paged drawing, allowing low-resource boards, specifically those based on ATMega328, to make use of these displays. An ESP microcontroller has memory to spare; it makes no sense to implement paging. heltec-eink-modules/docs/README.md Lines 21 to 28 in a9cdf2e
I will admit that the "Out of Box" support for Heltec Displays is poor, especially for ESP, however it is outside the scope of this library. If you have not discovered it already, https://github.com/ZinggJM/GxEPD2 casts a wider net, and should offer what you are looking for, specifically full screen buffer support. The table of information in identifying your display may help you configure GxEPD2. Best of luck. |
Change in plans: ESP support is under investigation in branch |
Great! I happen to have two of the e-ink screens (DEPG0290BNS75A and DEPG0213RWS800) and would love to do tests on ESP32. Please keep me updated once you have ESP32 wiring and bare_minimum example. Thanks |
Currently, the included examples, originally written for UNO, are working fine on my generic ESP32 Dev Kit. As of this evening, I have ~8 hours total experience working with ESP32, in any capacity. Proceed with caution. As ESP32 has no shortage of memory, paging serves no purpose. At this stage, the display is rendering in a single pass, but drawing operations must still be run from inside Provisional ESP32 Wiring
* These pins must be configured at the top of an example, or manually passed in the constructor. You should be able to change these pin assignments, but this is untested. Moving forward, the plan is to enable the more powerful platforms, such as ESP32, to perform drawing operations without a |
I have tried a few examples on both of my e-ink panels, with ESP32-WROOM. The results are excellent!
I wonder if fast_mode works for BW panels only, as I got such errors when trying to run it on the BWR screen:
|
This is a good note, thank you. |
Thank you for reporting your results!
Completely correct. Unfortunately the refresh operation for BWR is much more complicated. I believe that hardware limitations of most 3-Color displays impair fastmode (partial refresh). My vague understanding of E-Ink technology is that the displays contain a fluid with a mixture of small white particles, and heavier black particles. During refresh, a finely tuned voltage is applied to different regions of the screen, so that, in some areas, the lighter white particles are drawn to the surface, leaving the heavier black particles behind. With 3-Color displays, I believe (?) that a third, red particle, of intermediate size, is also present. An even more precise sequence takes place, to separate the heavy black, intermediate red, and light white particles, in the appropriate regions. During a "full refresh" (fastmode.OFF), the displays pulse several times, to aid separation of the particles. For almost all 3-Color displays, separating all the different particles seems to be too fine of an operation to be performed in one brute step. A quick search of the web suggest that fastmode support for 3-Color displays might be possible, but only when drawing with Black & White. |
Work continues in the dev branch. Note that the dev branch is now using the new v3 codebase. Suggested Wiring
V3 sample code// Display instance
DEPG0154BNS800 display(DC_PIN, CS_PIN, BUSY_PIN);
// Enable fastmode (Partial Refresh)
display.fastmodeOn();
// Universal drawing code, Arduino Uno compatible
DRAW(display) {
display.drawCircle(40, 40, 20, BLACK);
display.drawRect(10, 10, 30, 20, BLACK);
}
delay(4000);
// ESP-only: overwrite the existing screen image
display.fastmodeOff();
display.drawLine(0, 0, 100, 100, BLACK);
display.overwrite(); |
v3.0.0 is released, with support for ESP32 and ESP8266. |
ESP32 Boards: Xiao ESP32C3, Lolin S2 Mini,
ESP8266 Boards: Adafruit Huzzah 8266, Wemos D1 Mini Pro
Issue: Compiling failure for ESP32/8266 platforms, all boards.
Software:
Arduino SDK 2.1.1
CLI 0.32.3
ESP32 Core: 2.0.10
ESP8266 Core: 3.1.2
heltec-eink-modules: 2.4.1
Steps taken: removed & re-installed esp32/esp8266 cores & library. Tried several boards with same error.
Error:
The text was updated successfully, but these errors were encountered: