mirror of
https://github.com/meshtastic/firmware.git
synced 2025-09-22 09:31:10 +00:00
feat: driver for display HINK_E042A87
As of Feb. 2025, these panels are used for "WeActStudio 4.2in B&W" display modules.
This commit is contained in:
parent
c0fb6dd6bb
commit
2517b1d769
58
src/graphics/niche/Drivers/EInk/HINK_E042A87.cpp
Normal file
58
src/graphics/niche/Drivers/EInk/HINK_E042A87.cpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include "./HINK_E042A87.h"
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
using namespace NicheGraphics::Drivers;
|
||||||
|
|
||||||
|
// Load settings about how the pixels are moved from old state to new state during a refresh
|
||||||
|
// - manually specified,
|
||||||
|
// - or with stored values from displays OTP memory
|
||||||
|
void HINK_E042A87::configWaveform()
|
||||||
|
{
|
||||||
|
sendCommand(0x3C); // Border waveform:
|
||||||
|
sendData(0x01); // Follow LUT for VSH1
|
||||||
|
|
||||||
|
sendCommand(0x18); // Temperature sensor:
|
||||||
|
sendData(0x80); // Use internal temperature sensor to select an appropriate refresh waveform
|
||||||
|
}
|
||||||
|
|
||||||
|
// Describes the sequence of events performed by the displays controller IC during a refresh
|
||||||
|
// Includes "power up", "load settings from memory", "update the pixels", etc
|
||||||
|
void HINK_E042A87::configUpdateSequence()
|
||||||
|
{
|
||||||
|
switch (updateType) {
|
||||||
|
case FAST:
|
||||||
|
sendCommand(0x21); // Use both "old" and "new" image memory (differential)
|
||||||
|
sendData(0x00);
|
||||||
|
sendData(0x00);
|
||||||
|
|
||||||
|
sendCommand(0x22); // Set "update sequence"
|
||||||
|
sendData(0xFF); // Differential, load waveform from OTP
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FULL:
|
||||||
|
default:
|
||||||
|
sendCommand(0x21); // Bypass "old" image memory (non-differential)
|
||||||
|
sendData(0x40);
|
||||||
|
sendData(0x00);
|
||||||
|
|
||||||
|
sendCommand(0x22); // Set "update sequence":
|
||||||
|
sendData(0xF7); // Non-differential, load waveform from OTP
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Once the refresh operation has been started,
|
||||||
|
// begin periodically polling the display to check for completion, using the normal Meshtastic threading code
|
||||||
|
// Only used when refresh is "async"
|
||||||
|
void HINK_E042A87::detachFromUpdate()
|
||||||
|
{
|
||||||
|
switch (updateType) {
|
||||||
|
case FAST:
|
||||||
|
return beginPolling(50, 1000); // At least 1 second, then check every 50ms
|
||||||
|
case FULL:
|
||||||
|
default:
|
||||||
|
return beginPolling(100, 3500); // At least 3.5 seconds, then check every 100ms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
43
src/graphics/niche/Drivers/EInk/HINK_E042A87.h
Normal file
43
src/graphics/niche/Drivers/EInk/HINK_E042A87.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
E-Ink display driver
|
||||||
|
- HINK-E042A87
|
||||||
|
- Manufacturer: Holitech
|
||||||
|
- Size: 4.2 inch
|
||||||
|
- Resolution: 400px x 300px
|
||||||
|
- Flex connector marking: HINK-E042A07-FPC-A1
|
||||||
|
- Silver sticker with QR code, marked: HE042A87
|
||||||
|
|
||||||
|
Note: as of Feb. 2025, these panels are used for "WeActStudio 4.2in B&W" display modules
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
#include "configuration.h"
|
||||||
|
|
||||||
|
#include "./SSD16XX.h"
|
||||||
|
|
||||||
|
namespace NicheGraphics::Drivers
|
||||||
|
{
|
||||||
|
class HINK_E042A87 : public SSD16XX
|
||||||
|
{
|
||||||
|
// Display properties
|
||||||
|
private:
|
||||||
|
static constexpr uint32_t width = 400;
|
||||||
|
static constexpr uint32_t height = 300;
|
||||||
|
static constexpr UpdateTypes supported = (UpdateTypes)(FULL | FAST);
|
||||||
|
|
||||||
|
public:
|
||||||
|
HINK_E042A87() : SSD16XX(width, height, supported) {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void configWaveform() override;
|
||||||
|
void configUpdateSequence() override;
|
||||||
|
void detachFromUpdate() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace NicheGraphics::Drivers
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
Loading…
Reference in New Issue
Block a user