Skip to content

File evabScreenPCD8544.h

File List > src > evabScreenPCD8544.h

Go to the documentation of this file

#pragma once

#include <evabScreenPage8Base.h>
#include <SPI.h>

namespace evab
{

  class ScreenPCD8544 : public ScreenPage8Base
  {
  public:
    ScreenPCD8544(const IFont *aFont,
                  uint8_t aRST, uint8_t aCE, uint8_t aDC,
                  uint8_t aDIN, uint8_t aCLK,
                  uint8_t aLED = 255);

    void SetBacklight(uint8_t aState);

    void SetContrast(uint8_t aContrast);

    Coor Size() override { return {12, 6}; }

    unsigned short Serialize(const Coor &aPos, const Coor &aSize, bool isFocused);

    void Deserialize(unsigned short aSerialized, Coor &aPos, Coor &aSize, bool &isFocused);

  private:
    void drawVerticalSlice(Coor aPosition, unsigned char aCutColumn, unsigned char aSlice) override;

    void clearTile(Coor aPosition, unsigned char aColor) override;

    void clearDisplay();

    void sendCommand(uint8_t aCmd);

    void sendData(uint8_t aData);

    void initDisplay();

    static const uint8_t CMD_FUNC_SET = 0x20;  
    static const uint8_t CMD_DISP_CTRL = 0x08; 
    static const uint8_t CMD_SET_Y = 0x40;     
    static const uint8_t CMD_SET_X = 0x80;     
    static const uint8_t CMD_SET_VOP = 0x80;   

    uint8_t mRSTPin; 
    uint8_t mCEPin;  
    uint8_t mDCPin;  
    uint8_t mLEDPin; 
  };

}