4.2inch e-Paper HAT (C) made by WAVESHARE

Dependents:   ePD_4R2inch_test_program_on_nRF52

Committer:
kenjiArai
Date:
Wed Aug 28 23:35:01 2019 +0000
Revision:
1:b1aa1d6a96bc
for 4.2inch e-Paper

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 1:b1aa1d6a96bc 1 /**
kenjiArai 1:b1aa1d6a96bc 2 * @filename : epd4in2b.h
kenjiArai 1:b1aa1d6a96bc 3 * @brief : Header file for Dual-color e-paper library epd4in2b.cpp
kenjiArai 1:b1aa1d6a96bc 4 * @author : Yehui from Waveshare
kenjiArai 1:b1aa1d6a96bc 5 *
kenjiArai 1:b1aa1d6a96bc 6 * Copyright (C) Waveshare August 10 2017
kenjiArai 1:b1aa1d6a96bc 7 *
kenjiArai 1:b1aa1d6a96bc 8 * Permission is hereby granted, free of charge, to any person obtaining a copy
kenjiArai 1:b1aa1d6a96bc 9 * of this software and associated documnetation files (the "Software"), to deal
kenjiArai 1:b1aa1d6a96bc 10 * in the Software without restriction, including without limitation the rights
kenjiArai 1:b1aa1d6a96bc 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
kenjiArai 1:b1aa1d6a96bc 12 * copies of the Software, and to permit persons to whom the Software is
kenjiArai 1:b1aa1d6a96bc 13 * furished to do so, subject to the following conditions:
kenjiArai 1:b1aa1d6a96bc 14 *
kenjiArai 1:b1aa1d6a96bc 15 * The above copyright notice and this permission notice shall be included in
kenjiArai 1:b1aa1d6a96bc 16 * all copies or substantial portions of the Software.
kenjiArai 1:b1aa1d6a96bc 17 *
kenjiArai 1:b1aa1d6a96bc 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
kenjiArai 1:b1aa1d6a96bc 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
kenjiArai 1:b1aa1d6a96bc 20 * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
kenjiArai 1:b1aa1d6a96bc 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
kenjiArai 1:b1aa1d6a96bc 22 * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 1:b1aa1d6a96bc 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
kenjiArai 1:b1aa1d6a96bc 24 * THE SOFTWARE.
kenjiArai 1:b1aa1d6a96bc 25 */
kenjiArai 1:b1aa1d6a96bc 26
kenjiArai 1:b1aa1d6a96bc 27 /*
kenjiArai 1:b1aa1d6a96bc 28 * Modified by Kenji Arai / JH1PJL
kenjiArai 1:b1aa1d6a96bc 29 *
kenjiArai 1:b1aa1d6a96bc 30 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 1:b1aa1d6a96bc 31 * http://mbed.org/users/kenjiArai/
kenjiArai 1:b1aa1d6a96bc 32 * Created: April 27th, 2019
kenjiArai 1:b1aa1d6a96bc 33 * Revised: May 26th, 2019
kenjiArai 1:b1aa1d6a96bc 34 *
kenjiArai 1:b1aa1d6a96bc 35 * Refrence software
kenjiArai 1:b1aa1d6a96bc 36 * https://github.com/waveshare/e-Paper
kenjiArai 1:b1aa1d6a96bc 37 * https://os.mbed.com/users/imachooon/code/epd1in54/
kenjiArai 1:b1aa1d6a96bc 38 *
kenjiArai 1:b1aa1d6a96bc 39 * Technical documents
kenjiArai 1:b1aa1d6a96bc 40 * https://www.waveshare.com/wiki/4.2inch_e-Paper_Module_(B)
kenjiArai 1:b1aa1d6a96bc 41 *
kenjiArai 1:b1aa1d6a96bc 42 * Product
kenjiArai 1:b1aa1d6a96bc 43 * https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-58UR
kenjiArai 1:b1aa1d6a96bc 44 * https://www.waveshare.com/4.2inch-e-paper-module-b.htm
kenjiArai 1:b1aa1d6a96bc 45 *
kenjiArai 1:b1aa1d6a96bc 46 */
kenjiArai 1:b1aa1d6a96bc 47
kenjiArai 1:b1aa1d6a96bc 48 #ifndef EPD4IN2B_H
kenjiArai 1:b1aa1d6a96bc 49 #define EPD4IN2B_H
kenjiArai 1:b1aa1d6a96bc 50
kenjiArai 1:b1aa1d6a96bc 51 #include "epdif.h"
kenjiArai 1:b1aa1d6a96bc 52
kenjiArai 1:b1aa1d6a96bc 53 #define LOW 0
kenjiArai 1:b1aa1d6a96bc 54 #define HIGH 1
kenjiArai 1:b1aa1d6a96bc 55
kenjiArai 1:b1aa1d6a96bc 56 // Display resolution
kenjiArai 1:b1aa1d6a96bc 57 #define EPD_WIDTH 400
kenjiArai 1:b1aa1d6a96bc 58 #define EPD_HEIGHT 304
kenjiArai 1:b1aa1d6a96bc 59
kenjiArai 1:b1aa1d6a96bc 60 // EPD2IN13B commands
kenjiArai 1:b1aa1d6a96bc 61 #define PANEL_SETTING 0x00
kenjiArai 1:b1aa1d6a96bc 62 #define POWER_SETTING 0x01
kenjiArai 1:b1aa1d6a96bc 63 #define POWER_OFF 0x02
kenjiArai 1:b1aa1d6a96bc 64 #define POWER_OFF_SEQUENCE_SETTING 0x03
kenjiArai 1:b1aa1d6a96bc 65 #define POWER_ON 0x04
kenjiArai 1:b1aa1d6a96bc 66 #define POWER_ON_MEASURE 0x05
kenjiArai 1:b1aa1d6a96bc 67 #define BOOSTER_SOFT_START 0x06
kenjiArai 1:b1aa1d6a96bc 68 #define DEEP_SLEEP 0x07
kenjiArai 1:b1aa1d6a96bc 69 #define DATA_START_TRANSMISSION_1 0x10
kenjiArai 1:b1aa1d6a96bc 70 #define DATA_STOP 0x11
kenjiArai 1:b1aa1d6a96bc 71 #define DISPLAY_REFRESH 0x12
kenjiArai 1:b1aa1d6a96bc 72 #define DATA_START_TRANSMISSION_2 0x13
kenjiArai 1:b1aa1d6a96bc 73 #define LUT_FOR_VCOM 0x20
kenjiArai 1:b1aa1d6a96bc 74 #define LUT_WHITE_TO_WHITE 0x21
kenjiArai 1:b1aa1d6a96bc 75 #define LUT_BLACK_TO_WHITE 0x22
kenjiArai 1:b1aa1d6a96bc 76 #define LUT_WHITE_TO_BLACK 0x23
kenjiArai 1:b1aa1d6a96bc 77 #define LUT_BLACK_TO_BLACK 0x24
kenjiArai 1:b1aa1d6a96bc 78 #define PLL_CONTROL 0x30
kenjiArai 1:b1aa1d6a96bc 79 #define TEMPERATURE_SENSOR_COMMAND 0x40
kenjiArai 1:b1aa1d6a96bc 80 #define TEMPERATURE_SENSOR_SELECTION 0x41
kenjiArai 1:b1aa1d6a96bc 81 #define TEMPERATURE_SENSOR_WRITE 0x42
kenjiArai 1:b1aa1d6a96bc 82 #define TEMPERATURE_SENSOR_READ 0x43
kenjiArai 1:b1aa1d6a96bc 83 #define VCOM_AND_DATA_INTERVAL_SETTING 0x50
kenjiArai 1:b1aa1d6a96bc 84 #define LOW_POWER_DETECTION 0x51
kenjiArai 1:b1aa1d6a96bc 85 #define TCON_SETTING 0x60
kenjiArai 1:b1aa1d6a96bc 86 #define RESOLUTION_SETTING 0x61
kenjiArai 1:b1aa1d6a96bc 87 #define GSST_SETTING 0x65
kenjiArai 1:b1aa1d6a96bc 88 #define GET_STATUS 0x71
kenjiArai 1:b1aa1d6a96bc 89 #define AUTO_MEASUREMENT_VCOM 0x80
kenjiArai 1:b1aa1d6a96bc 90 #define READ_VCOM_VALUE 0x81
kenjiArai 1:b1aa1d6a96bc 91 #define VCM_DC_SETTING 0x82
kenjiArai 1:b1aa1d6a96bc 92 #define PARTIAL_WINDOW 0x90
kenjiArai 1:b1aa1d6a96bc 93 #define PARTIAL_IN 0x91
kenjiArai 1:b1aa1d6a96bc 94 #define PARTIAL_OUT 0x92
kenjiArai 1:b1aa1d6a96bc 95 #define PROGRAM_MODE 0xA0
kenjiArai 1:b1aa1d6a96bc 96 #define ACTIVE_PROGRAMMING 0xA1
kenjiArai 1:b1aa1d6a96bc 97 #define READ_OTP 0xA2
kenjiArai 1:b1aa1d6a96bc 98 #define POWER_SAVING 0xE3
kenjiArai 1:b1aa1d6a96bc 99
kenjiArai 1:b1aa1d6a96bc 100 class Epd : EpdIf
kenjiArai 1:b1aa1d6a96bc 101 {
kenjiArai 1:b1aa1d6a96bc 102 public:
kenjiArai 1:b1aa1d6a96bc 103 unsigned int width;
kenjiArai 1:b1aa1d6a96bc 104 unsigned int height;
kenjiArai 1:b1aa1d6a96bc 105
kenjiArai 1:b1aa1d6a96bc 106 Epd(PinName mosi,
kenjiArai 1:b1aa1d6a96bc 107 PinName miso,
kenjiArai 1:b1aa1d6a96bc 108 PinName sclk,
kenjiArai 1:b1aa1d6a96bc 109 PinName cs,
kenjiArai 1:b1aa1d6a96bc 110 PinName dc,
kenjiArai 1:b1aa1d6a96bc 111 PinName rst,
kenjiArai 1:b1aa1d6a96bc 112 PinName busy,
kenjiArai 1:b1aa1d6a96bc 113 PinName pwr
kenjiArai 1:b1aa1d6a96bc 114 );
kenjiArai 1:b1aa1d6a96bc 115 ~Epd()
kenjiArai 1:b1aa1d6a96bc 116 {
kenjiArai 1:b1aa1d6a96bc 117 ;
kenjiArai 1:b1aa1d6a96bc 118 }
kenjiArai 1:b1aa1d6a96bc 119
kenjiArai 1:b1aa1d6a96bc 120 int Init(void);
kenjiArai 1:b1aa1d6a96bc 121 void SendCommand(unsigned char command);
kenjiArai 1:b1aa1d6a96bc 122 void SendData(unsigned char data);
kenjiArai 1:b1aa1d6a96bc 123 void WaitUntilIdle(void);
kenjiArai 1:b1aa1d6a96bc 124 void Reset(void);
kenjiArai 1:b1aa1d6a96bc 125 void SetPartialWindow(const unsigned char* buffer_black,
kenjiArai 1:b1aa1d6a96bc 126 const unsigned char* buffer_red,
kenjiArai 1:b1aa1d6a96bc 127 int x,
kenjiArai 1:b1aa1d6a96bc 128 int y,
kenjiArai 1:b1aa1d6a96bc 129 int w,
kenjiArai 1:b1aa1d6a96bc 130 int l);
kenjiArai 1:b1aa1d6a96bc 131 void SetPartialWindowBlack(const unsigned char* buffer_black,
kenjiArai 1:b1aa1d6a96bc 132 int x,
kenjiArai 1:b1aa1d6a96bc 133 int y,
kenjiArai 1:b1aa1d6a96bc 134 int w,
kenjiArai 1:b1aa1d6a96bc 135 int l);
kenjiArai 1:b1aa1d6a96bc 136 void SetPartialWindowRed(const unsigned char* buffer_red,
kenjiArai 1:b1aa1d6a96bc 137 int x,
kenjiArai 1:b1aa1d6a96bc 138 int y,
kenjiArai 1:b1aa1d6a96bc 139 int w,
kenjiArai 1:b1aa1d6a96bc 140 int l);
kenjiArai 1:b1aa1d6a96bc 141 void DisplayFrame(const unsigned char* frame_buffer_black,
kenjiArai 1:b1aa1d6a96bc 142 const unsigned char* frame_buffer_red);
kenjiArai 1:b1aa1d6a96bc 143 void DisplayFrame(void);
kenjiArai 1:b1aa1d6a96bc 144 void ClearFrame(void);
kenjiArai 1:b1aa1d6a96bc 145 void Sleep(void);
kenjiArai 1:b1aa1d6a96bc 146 void PwrOn(void);
kenjiArai 1:b1aa1d6a96bc 147 void PwrOff(void);
kenjiArai 1:b1aa1d6a96bc 148
kenjiArai 1:b1aa1d6a96bc 149 private:
kenjiArai 1:b1aa1d6a96bc 150
kenjiArai 1:b1aa1d6a96bc 151 };
kenjiArai 1:b1aa1d6a96bc 152
kenjiArai 1:b1aa1d6a96bc 153 #endif /* EPD4IN2B_H */
kenjiArai 1:b1aa1d6a96bc 154
kenjiArai 1:b1aa1d6a96bc 155 /* END OF FILE */