Initial commit
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
#include "GDEW075Z08_OTP.h"
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||
|
||||
void GDEW075Z08_OTP::check()
|
||||
{
|
||||
//read_TSC();
|
||||
read_temperature();
|
||||
// read_revision();
|
||||
// read_status();
|
||||
//read_vcom();
|
||||
read_otp();
|
||||
// for (int i = 0; i < 10; i++) // 10 temperature ranges
|
||||
// {
|
||||
// read_LUT_TR(i);
|
||||
// }
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_TSC()
|
||||
{
|
||||
display.epd2._writeCommand(0x40);
|
||||
display.epd2._waitWhileBusy("read_TSC time");
|
||||
uint8_t msb = display.epd2._readData();
|
||||
uint8_t lsb = display.epd2._readData();
|
||||
Serial.print("read_TSC: 0x"); Serial.print(msb, HEX); Serial.print(", 0x"); Serial.println(lsb, HEX);
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_temperature()
|
||||
{
|
||||
display.epd2._writeCommand(0x43);
|
||||
display.epd2._waitWhileBusy("read_temperature time");
|
||||
uint8_t msb = display.epd2._readData();
|
||||
uint8_t lsb = display.epd2._readData();
|
||||
Serial.print("read_temperature: "); Serial.print(msb); Serial.print(", "); Serial.println(lsb);
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_revision()
|
||||
{
|
||||
display.epd2._writeCommand(0x70);
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("read_revision: "); Serial.println(rv);
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_status()
|
||||
{
|
||||
display.epd2._writeCommand(0x71);
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("read_status: 0x"); Serial.println(rv, HEX);
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_vcom()
|
||||
{
|
||||
display.epd2._writeCommand(0x81);
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("read_vcom: 0x"); Serial.println(rv, HEX);
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_otp()
|
||||
{
|
||||
uint16_t addr = 0;
|
||||
uint8_t value = 0;
|
||||
Serial.println("read_otp");
|
||||
display.epd2._writeCommand(0xA2);
|
||||
display.epd2._waitWhileBusy("read_otp");
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Check Code: 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("LUT Version: 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 0 (TB0): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 1 (TB1): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 2 (TB2): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 3 (TB3): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 4 (TB4): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 5 (TB5): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 6 (TB6): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 7 (TB7): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 8 (TB8): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 9 (TB9): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
//Serial.print("Temperature Boundary 10 (TB10): 0x"); Serial.println(value, HEX);
|
||||
//value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : Check Code 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : PSR 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : PFS 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : BTST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : BTST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : BTST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : KWOPT 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : CDI 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : CDI 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TCON 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TRES 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TRES 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TRES 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : GSST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : GSST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : GSST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : PWS 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : LVSEL 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (; addr < 0x49; addr++)
|
||||
{
|
||||
if (0 == addr % 6) Serial.print(" ");
|
||||
if (0 == addr % 12) Serial.println();
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
for (int i = 0; i < 9; i++) // 10 temperature ranges, 9 used for 3-color
|
||||
{
|
||||
read_LUT(addr);
|
||||
}
|
||||
//read_LUT_KW(addr); // not used on this panel
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_LUT_TR(int n)
|
||||
{
|
||||
uint8_t value = 0;
|
||||
int addr = 0x0049 + n * (0x0140 - 0x0049); // 0x0049: @LUT_TR0, 0x140: @LUT_TR1
|
||||
Serial.print("read_LUT_TR("); Serial.print(n); Serial.print(")"); Serial.print(" @ 0x"); Serial.println(addr, HEX);
|
||||
display.epd2._writeCommand(0xA2);
|
||||
display.epd2._waitWhileBusy();
|
||||
for (int skip = 0; skip < addr; skip++)
|
||||
{
|
||||
uint8_t v = display.epd2._readData();
|
||||
}
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Frame Rate[3:0],VCOM_HV,VG Voltage[2:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("0b, VCEND, VDH Voltage[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("BDEND[1:0], VDL Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON[9:8], VDHR Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON [7:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("00b, VCOM_DC[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("?? 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (int lut = 0; lut < 4; lut++) // there are 4 groups for UC8179 in KWR (LUTC, LUTR, LUTW, LUTK)
|
||||
{
|
||||
for (int r = 0; r < 10; r++) // there are 10 entries per group
|
||||
{
|
||||
for (int c = 0; c < 6; c++) // each entry has 6 values
|
||||
{
|
||||
uint8_t rv = display.epd2._readData(); addr++;
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_LUT(uint16_t &addr)
|
||||
{
|
||||
uint8_t value = 0;
|
||||
uint16_t n = addr / (0x0140 - 0x0049); // 0x0049: @LUT_TR0, 0x140: @LUT_TR1
|
||||
Serial.print("read_LUT "); Serial.print(n); Serial.print(" @ 0x"); Serial.println(addr, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Frame Rate[3:0],VCOM_HV,VG Voltage[2:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("0b, VCEND, VDH Voltage[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("BDEND[1:0], VDL Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON[9:8], VDHR Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON [7:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("00b, VCOM_DC[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("?? 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (int lut = 0; lut < 4; lut++) // there are 4 groups for UC8179 in KWR (LUTC, LUTR, LUTW, LUTK)
|
||||
{
|
||||
for (int r = 0; r < 10; r++) // there are 10 entries per group
|
||||
{
|
||||
for (int c = 0; c < 6; c++) // each entry has 6 values
|
||||
{
|
||||
uint8_t rv = display.epd2._readData(); addr++;
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
void GDEW075Z08_OTP::read_LUT_KW(uint16_t &addr)
|
||||
{
|
||||
uint8_t value = 0;
|
||||
uint16_t n = addr / (0x0140 - 0x0049); // 0x0049: @LUT_TR0, 0x140: @LUT_TR1
|
||||
Serial.print("read_LUT_KW "); Serial.print(n); Serial.print(" @ 0x"); Serial.println(addr, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Frame Rate[3:0],VCOM_HV,VG Voltage[2:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("0b, VCEND, VDH Voltage[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("BDEND[1:0], VDL Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON[9:8], VDHR Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON [7:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("00b, VCOM_DC[5:0] 0x"); Serial.println(value, HEX);
|
||||
//value = display.epd2._readData(); addr++;
|
||||
//Serial.print("?? 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (int lut = 0; lut < 5; lut++) // there are 5 groups for UC8179 in KW (LUTC, LUTWW, LUTKW, LUTWK, LUTKK)
|
||||
{
|
||||
for (int r = 0; r < 7; r++) // there are 7 entries per group
|
||||
{
|
||||
for (int c = 0; c < 6; c++) // each entry has 6 values
|
||||
{
|
||||
uint8_t rv = display.epd2._readData(); addr++;
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
Serial.println();
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef _GDEW075Z08_OTP_H_
|
||||
#define _GDEW075Z08_OTP_H_
|
||||
|
||||
#include <GxEPD2_GFX.h>
|
||||
|
||||
class GDEW075Z08_OTP
|
||||
{
|
||||
public:
|
||||
GDEW075Z08_OTP(GxEPD2_GFX& gfx) : display(gfx) {};
|
||||
void check();
|
||||
void read_TSC();
|
||||
void read_temperature();
|
||||
void read_revision();
|
||||
void read_status();
|
||||
void read_vcom();
|
||||
void read_otp();
|
||||
void read_LUT_TR(int n);
|
||||
void read_LUT(uint16_t &addr);
|
||||
void read_LUT_KW(uint16_t &addr);
|
||||
private:
|
||||
GxEPD2_GFX& display;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,258 @@
|
||||
#include "GDEY075Z08_OTP.h"
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||
|
||||
void GDEY075Z08_OTP::check()
|
||||
{
|
||||
//read_TSC();
|
||||
read_temperature();
|
||||
// read_revision();
|
||||
// read_status();
|
||||
//read_vcom();
|
||||
read_otp();
|
||||
// for (int i = 0; i < 10; i++) // 10 temperature ranges
|
||||
// {
|
||||
// read_LUT_TR(i);
|
||||
// }
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_TSC()
|
||||
{
|
||||
display.epd2._writeCommand(0x40);
|
||||
display.epd2._waitWhileBusy("read_TSC time");
|
||||
uint8_t msb = display.epd2._readData();
|
||||
uint8_t lsb = display.epd2._readData();
|
||||
Serial.print("read_TSC: 0x"); Serial.print(msb, HEX); Serial.print(", 0x"); Serial.println(lsb, HEX);
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_temperature()
|
||||
{
|
||||
display.epd2._writeCommand(0x43);
|
||||
display.epd2._waitWhileBusy("read_temperature time");
|
||||
uint8_t msb = display.epd2._readData();
|
||||
uint8_t lsb = display.epd2._readData();
|
||||
Serial.print("read_temperature: "); Serial.print(msb); Serial.print(", "); Serial.println(lsb);
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_revision()
|
||||
{
|
||||
display.epd2._writeCommand(0x70);
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("read_revision: "); Serial.println(rv);
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_status()
|
||||
{
|
||||
display.epd2._writeCommand(0x71);
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("read_status: 0x"); Serial.println(rv, HEX);
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_vcom()
|
||||
{
|
||||
display.epd2._writeCommand(0x81);
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("read_vcom: 0x"); Serial.println(rv, HEX);
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_otp()
|
||||
{
|
||||
uint16_t addr = 0;
|
||||
uint8_t value = 0;
|
||||
Serial.println("read_otp");
|
||||
display.epd2._writeCommand(0xA2);
|
||||
display.epd2._waitWhileBusy("read_otp");
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Check Code: 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("LUT Version: 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 0 (TB0): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 1 (TB1): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 2 (TB2): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 3 (TB3): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 4 (TB4): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 5 (TB5): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 6 (TB6): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 7 (TB7): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 8 (TB8): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Temperature Boundary 9 (TB9): 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
//Serial.print("Temperature Boundary 10 (TB10): 0x"); Serial.println(value, HEX);
|
||||
//value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : Check Code 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : PSR 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : PFS 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : BTST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : BTST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : BTST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : KWOPT 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : CDI 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : CDI 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TCON 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TRES 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TRES 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : TRES 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : GSST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : GSST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : GSST 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : PWS 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("CDS : LVSEL 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (; addr < 0x49; addr++)
|
||||
{
|
||||
if (0 == addr % 6) Serial.print(" ");
|
||||
if (0 == addr % 12) Serial.println();
|
||||
uint8_t rv = display.epd2._readData();
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
for (int i = 0; i < 7; i++) // 10 temperature ranges, 7 used for 3-color
|
||||
{
|
||||
read_LUT(addr);
|
||||
}
|
||||
read_LUT_KW(addr); // one used for b/w, with different format
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_LUT_TR(int n)
|
||||
{
|
||||
uint8_t value = 0;
|
||||
int addr = 0x0049 + n * (0x0140 - 0x0049); // 0x0049: @LUT_TR0, 0x140: @LUT_TR1
|
||||
Serial.print("read_LUT_TR("); Serial.print(n); Serial.print(")"); Serial.print(" @ 0x"); Serial.println(addr, HEX);
|
||||
display.epd2._writeCommand(0xA2);
|
||||
display.epd2._waitWhileBusy();
|
||||
for (int skip = 0; skip < addr; skip++)
|
||||
{
|
||||
uint8_t v = display.epd2._readData();
|
||||
}
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Frame Rate[3:0],VCOM_HV,VG Voltage[2:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("0b, VCEND, VDH Voltage[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("BDEND[1:0], VDL Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON[9:8], VDHR Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON [7:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("00b, VCOM_DC[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("?? 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (int lut = 0; lut < 4; lut++) // there are 4 groups for UC8179 in KWR (LUTC, LUTR, LUTW, LUTK)
|
||||
{
|
||||
for (int r = 0; r < 10; r++) // there are 10 entries per group
|
||||
{
|
||||
for (int c = 0; c < 6; c++) // each entry has 6 values
|
||||
{
|
||||
uint8_t rv = display.epd2._readData(); addr++;
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_LUT(uint16_t &addr)
|
||||
{
|
||||
uint8_t value = 0;
|
||||
uint16_t n = addr / (0x0140 - 0x0049); // 0x0049: @LUT_TR0, 0x140: @LUT_TR1
|
||||
Serial.print("read_LUT "); Serial.print(n); Serial.print(" @ 0x"); Serial.println(addr, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Frame Rate[3:0],VCOM_HV,VG Voltage[2:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("0b, VCEND, VDH Voltage[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("BDEND[1:0], VDL Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON[9:8], VDHR Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON [7:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("00b, VCOM_DC[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("?? 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (int lut = 0; lut < 4; lut++) // there are 4 groups for UC8179 in KWR (LUTC, LUTR, LUTW, LUTK)
|
||||
{
|
||||
for (int r = 0; r < 10; r++) // there are 10 entries per group
|
||||
{
|
||||
for (int c = 0; c < 6; c++) // each entry has 6 values
|
||||
{
|
||||
uint8_t rv = display.epd2._readData(); addr++;
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
Serial.println();
|
||||
}
|
||||
|
||||
void GDEY075Z08_OTP::read_LUT_KW(uint16_t &addr)
|
||||
{
|
||||
uint8_t value = 0;
|
||||
uint16_t n = addr / (0x0140 - 0x0049); // 0x0049: @LUT_TR0, 0x140: @LUT_TR1
|
||||
Serial.print("read_LUT_KW "); Serial.print(n); Serial.print(" @ 0x"); Serial.println(addr, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("Frame Rate[3:0],VCOM_HV,VG Voltage[2:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("0b, VCEND, VDH Voltage[5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("BDEND[1:0], VDL Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON[9:8], VDHR Voltage [5:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("XON [7:0] 0x"); Serial.println(value, HEX);
|
||||
value = display.epd2._readData(); addr++;
|
||||
Serial.print("00b, VCOM_DC[5:0] 0x"); Serial.println(value, HEX);
|
||||
//value = display.epd2._readData(); addr++;
|
||||
//Serial.print("?? 0x"); Serial.println(value, HEX);
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
for (int lut = 0; lut < 5; lut++) // there are 5 groups for UC8179 in KW (LUTC, LUTWW, LUTKW, LUTWK, LUTKK)
|
||||
{
|
||||
for (int r = 0; r < 7; r++) // there are 7 entries per group
|
||||
{
|
||||
for (int c = 0; c < 6; c++) // each entry has 6 values
|
||||
{
|
||||
uint8_t rv = display.epd2._readData(); addr++;
|
||||
Serial.print("0x"); Serial.print(rv, HEX); Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
Serial.print("@ 0x"); Serial.println(addr, HEX);
|
||||
Serial.println();
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef _GDEY075Z08_OTP_H_
|
||||
#define _GDEY075Z08_OTP_H_
|
||||
|
||||
#include <GxEPD2_GFX.h>
|
||||
|
||||
class GDEY075Z08_OTP
|
||||
{
|
||||
public:
|
||||
GDEY075Z08_OTP(GxEPD2_GFX& gfx) : display(gfx) {};
|
||||
void check();
|
||||
void read_TSC();
|
||||
void read_temperature();
|
||||
void read_revision();
|
||||
void read_status();
|
||||
void read_vcom();
|
||||
void read_otp();
|
||||
void read_LUT_TR(int n);
|
||||
void read_LUT(uint16_t &addr);
|
||||
void read_LUT_KW(uint16_t &addr);
|
||||
private:
|
||||
GxEPD2_GFX& display;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,205 @@
|
||||
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||
// Requires HW SPI and Adafruit_GFX. Caution: these e-papers require 3.3V supply AND data lines!
|
||||
//
|
||||
// Display Library based on Demo Example from Good Display: http://www.e-paper-display.com/download_list/downloadcategoryid=34&isMode=false.html
|
||||
//
|
||||
// Author: Jean-Marc Zingg
|
||||
//
|
||||
// Version: see library.properties
|
||||
//
|
||||
// Library: https://github.com/ZinggJM/GxEPD2
|
||||
|
||||
#define ENABLE_GxEPD2_GFX 1
|
||||
|
||||
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||
//#include <GFX.h>
|
||||
|
||||
#include <GxEPD2_BW.h>
|
||||
#include <GxEPD2_3C.h>
|
||||
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||
|
||||
// these have never been finished, and are not checked-in yet
|
||||
//#include "GDEH0154D67_OTP.h" // SSD1681
|
||||
//#include "GDEH0154M10_OTP.h" // UC8151D
|
||||
//#include "GDEW026T0_OTP.h" // UC8151 (IL0373)
|
||||
//#include "GDEW029T5_OTP.h" // UC8151 (IL0373)
|
||||
//#include "GDEW029T5D_OTP.h" // UC8151D
|
||||
//#include "GDEH029Z13_OTP.h" // UC8151D
|
||||
//#include "GDEH0213Z19_OTP.h" // UC8151D
|
||||
//#include "GDEW0371W7_OTP.h" // UC8171 (IL0324)
|
||||
//#include "GDEW042T2_OTP.h" // UC8176 (IL0398)
|
||||
//#include "GDEW075T7_OTP.h" // GD7965
|
||||
//#include "GDEY075T7_OTP.h" // UC8179
|
||||
//#include "GDEH075Z90_OTP.h" // SSD1677
|
||||
// only these are actually updated
|
||||
#include "GDEW075Z08_OTP.h" // GD7965
|
||||
#include "GDEY075Z08_OTP.h" // UC8179
|
||||
|
||||
#if defined (ESP8266)
|
||||
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67
|
||||
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154T8 152x152
|
||||
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M09 200x200
|
||||
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M10 152x152
|
||||
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDE0213B1, phased out
|
||||
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B72
|
||||
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B73
|
||||
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213I5F
|
||||
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5
|
||||
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5D
|
||||
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01
|
||||
// can use only half buffer size
|
||||
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
// 3-color e-papers
|
||||
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213Z19
|
||||
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029Z13
|
||||
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
// can use only half buffer size
|
||||
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
// can use only quarter buffer size
|
||||
//GxEPD2_3C < GxEPD2_583c, GxEPD2_583c::HEIGHT / 4 > display(GxEPD2_583c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||
//GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480
|
||||
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||
// HRDY -> 4, RST -> 2, CS -> SS(15), SCK -> SCK(14), MOSI -> MOSI(D7(13)), MISO -> MISO(D6(12)), GND -> GND, 5V -> 5V
|
||||
// note: 5V supply needs to be exact and strong; 5V pin of USB powered Wemos D1 mini doesn't work!
|
||||
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT / 8> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||
|
||||
// ***** for mapping of Waveshare e-Paper ESP8266 Driver Board *****
|
||||
// select one , can use full buffer size (full HEIGHT)
|
||||
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP015OC1 no longer available
|
||||
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154D67
|
||||
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154T8 152x152
|
||||
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M09 200x200
|
||||
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M10 152x152
|
||||
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDE0213B1, phased out
|
||||
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B72
|
||||
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B73
|
||||
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213I5F
|
||||
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5
|
||||
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
// can use only half buffer size
|
||||
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T7 800x480
|
||||
// 3-color e-papers
|
||||
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154Z04 no longer available
|
||||
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154Z90
|
||||
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
// can use only half buffer size
|
||||
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
// can use only quarter buffer size
|
||||
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480
|
||||
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528
|
||||
// 7-color e-paper
|
||||
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
|
||||
#endif
|
||||
|
||||
#if defined(ESP32)
|
||||
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDE0213B1, phased out
|
||||
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B72
|
||||
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B73
|
||||
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213I5F
|
||||
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5
|
||||
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_750_YT7, GxEPD2_750_YT7::HEIGHT> display(GxEPD2_750_YT7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||
// 3-color e-papers
|
||||
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480
|
||||
//GxEPD2_3C < GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4 > display(GxEPD2_750c_GDEW075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08
|
||||
GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075Z08
|
||||
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||
#endif
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.println();
|
||||
Serial.println("setup");
|
||||
delay(100);
|
||||
display.epd2.enableRead(SCK, MOSI); // sw_spi
|
||||
display.init(115200);
|
||||
helloWorld();
|
||||
// these have never been finished, and are not checked-in yet
|
||||
//GDEH0154D67_OTP(display).check();
|
||||
//GDEH0154M10_OTP(display).check();
|
||||
//GDEW029T5_OTP(display).check();
|
||||
//GDEW029T5D_OTP(display).check();
|
||||
//GDEH029Z13_OTP(display).check();
|
||||
//GDEH0213Z19_OTP(display).check();
|
||||
//GDEW026T0_OTP(display).check();
|
||||
//GDEW0371W7_OTP(display).check();
|
||||
//GDEW042T2_OTP(display).check();
|
||||
//GDEW075T7_OTP(display).check();
|
||||
//GDEH075Z90_OTP(display).check();
|
||||
//GDEW1248T3_OTP(display).check();
|
||||
// only these are actually updated
|
||||
//GDEW075Z08_OTP(display).check();
|
||||
GDEY075Z08_OTP(display).check();
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
}
|
||||
|
||||
const char HelloWorld[] = "Hello World!";
|
||||
|
||||
void helloWorld()
|
||||
{
|
||||
//Serial.println("helloWorld");
|
||||
display.setRotation(1);
|
||||
display.setFont(&FreeMonoBold9pt7b);
|
||||
display.setTextColor(GxEPD_BLACK);
|
||||
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||
// center bounding box by transposition of origin:
|
||||
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||
display.setFullWindow();
|
||||
display.firstPage();
|
||||
do
|
||||
{
|
||||
display.fillScreen(GxEPD_WHITE);
|
||||
display.setCursor(x, y);
|
||||
display.print(HelloWorld);
|
||||
}
|
||||
while (display.nextPage());
|
||||
//Serial.println("helloWorld done");
|
||||
}
|
||||
Reference in New Issue
Block a user