Hi all,
Could sure use some advice and help. I’m not an expert here so bare with me.
I have a Waveshare 2.9inch e-Paper b/w, 296x128 Pixel, Rev2.1. It has a “V3” shiny round sticker on it on the back. It has 8 wires from top to bottom:
BUSY
RST
DC
CS
CLK
DIN
GND
VCC
I managed to get it working via Arduino IDE using an Elegoo Uno R3, which has limited RAM (2048 bytes) so I had to use HEIGHT/16 to compensate. The setup was:
PINS:
| Waveshare Pin | Uno R3 Pin |
|---|---|
| VCC | 3.3V |
| GND | GND |
| DIN | D11 (MOSI) |
| CLK | D13 (SCK) |
| CS | D10 |
| DC | D8 |
| RST | D9 |
| BUSY | D7 |
The code used is:
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>
// use only 1 page buffer
GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT / 16>
display(GxEPD2_290_T94(10, 8, 9, 7));
void setup()
{
Serial.begin(115200);
display.init(115200);
display.setRotation(1);
display.setFont(&FreeMonoBold9pt7b);
display.setTextColor(GxEPD_BLACK);
display.firstPage();
do
{
display.fillScreen(GxEPD_WHITE);
display.setCursor(10, 30);
display.println(“Hello Uno! Works!”);
}
while (display.nextPage());
display.hibernate(); // power down display driver
}
void loop()
{
}
Now the challenge is, I also have a Xiao ESP32-C6 microcontroller. I’ve tried all sorts of pin combinations and code but it just refuses to work ! It did manage to work once using the below,
Purple (BUSY) → D2
White (RST) → D0
Green (DC) → D3
Orange (CS) → D1
Yellow (CLK) → D8
Blue (DIN) → D10
Brown (GND) → GND
Grey (VCC) → 3V3
I think the code used was this:
#include “driver.h”
#include “TFT_eSPI.h”
#ifdef EPAPER_ENABLE
EPaper epaper;
#endif
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println(“=== BOOT ===”);
#ifdef EPAPER_ENABLE
Serial.println(“Calling begin…”);
epaper.begin();
Serial.println(“begin done”);
epaper.setRotation(1);
epaper.fillScreen(TFT_WHITE);
epaper.setTextSize(2);
epaper.setTextColor(TFT_BLACK);
epaper.setCursor(10, 40);
epaper.print("Hello Retirement!");
Serial.println("Calling update...");
epaper.update();
Serial.println("update done");
#endif
}
void loop() {}
but when trying again it just wouldn’t work any more.. I tried both
USE_XIAO_EPAPER_BREAKOUT_BOARD
and
USE_XIAO_EPAPER_DRIVER_BOARD,
can’t remember which one worked, but neither do any more.
I also tested unplugging from USB and removing the 3V3 pin for 30s (hard reset).. No change.
I’m at a loss if it is compatible or not..
As per Schematics I tried several different pin layouts. For example
| Wire Colour | Signal | XIAO Pin |
|---|---|---|
| Grey | VCC | 3V3 |
| Brown | GND | GND |
| Blue | DIN | D10 |
| Yellow | CLK | D8 |
| Orange | CS | D3 |
| Green | DC | D2 |
| White | RST | D1 |
| Purple | BUSY | D1 |
I have also tried using BUSY into D6 instead of D1. No change.
I tried different drivers like TxEPD2_290, no difference, The only thing I see in serial monitor is:
Starting…
_PowerOn : 60001
_Update_Full : 2
_Update_Part : 2
_Update_Full : 2
_PowerOff : 2
_PowerOff : 2
Done.
But the screen doesn’t update. BUSY signal does start at 1 then changes to 0 in a loop, so I’m confident it does work.. And like I said this does work on the Arduino Uno R3.
Please help! What am I doing wrong?
Does it not work with the ESP32-C6?
Thanks.