Library for Waveshare 2.7" tri-colour e-Paper display.
epd2in7b.h@0:9e6a8e3cd8de, 2019-12-06 (annotated)
- Committer:
- mdroberts1243
- Date:
- Fri Dec 06 23:24:50 2019 +0000
- Revision:
- 0:9e6a8e3cd8de
First commit of code modified from Kanjia examples for 2.13" Waveshare example
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mdroberts1243 | 0:9e6a8e3cd8de | 1 | /** |
mdroberts1243 | 0:9e6a8e3cd8de | 2 | * @filename : epd2in7b.h |
mdroberts1243 | 0:9e6a8e3cd8de | 3 | * @brief : Header file for Dual-color e-paper library epd2in7b.cpp |
mdroberts1243 | 0:9e6a8e3cd8de | 4 | * @author : Yehui from Waveshare (modified by Mark Roberts / mdroberts1243) |
mdroberts1243 | 0:9e6a8e3cd8de | 5 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 6 | * Copyright (C) Waveshare July 31 2017 |
mdroberts1243 | 0:9e6a8e3cd8de | 7 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 8 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
mdroberts1243 | 0:9e6a8e3cd8de | 9 | * of this software and associated documnetation files (the "Software"), to deal |
mdroberts1243 | 0:9e6a8e3cd8de | 10 | * in the Software without restriction, including without limitation the rights |
mdroberts1243 | 0:9e6a8e3cd8de | 11 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
mdroberts1243 | 0:9e6a8e3cd8de | 12 | * copies of the Software, and to permit persons to whom the Software is |
mdroberts1243 | 0:9e6a8e3cd8de | 13 | * furished to do so, subject to the following conditions: |
mdroberts1243 | 0:9e6a8e3cd8de | 14 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 15 | * The above copyright notice and this permission notice shall be included in |
mdroberts1243 | 0:9e6a8e3cd8de | 16 | * all copies or substantial portions of the Software. |
mdroberts1243 | 0:9e6a8e3cd8de | 17 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
mdroberts1243 | 0:9e6a8e3cd8de | 19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
mdroberts1243 | 0:9e6a8e3cd8de | 20 | * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
mdroberts1243 | 0:9e6a8e3cd8de | 21 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
mdroberts1243 | 0:9e6a8e3cd8de | 22 | * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
mdroberts1243 | 0:9e6a8e3cd8de | 23 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
mdroberts1243 | 0:9e6a8e3cd8de | 24 | * THE SOFTWARE. |
mdroberts1243 | 0:9e6a8e3cd8de | 25 | */ |
mdroberts1243 | 0:9e6a8e3cd8de | 26 | |
mdroberts1243 | 0:9e6a8e3cd8de | 27 | /* |
mdroberts1243 | 0:9e6a8e3cd8de | 28 | * Modified by Kenji Arai / JH1PJL |
mdroberts1243 | 0:9e6a8e3cd8de | 29 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 30 | * http://www.page.sannet.ne.jp/kenjia/index.html |
mdroberts1243 | 0:9e6a8e3cd8de | 31 | * http://mbed.org/users/kenjiArai/ |
mdroberts1243 | 0:9e6a8e3cd8de | 32 | * Created: April 27th, 2019 |
mdroberts1243 | 0:9e6a8e3cd8de | 33 | * Revised: April 30th, 2019 |
mdroberts1243 | 0:9e6a8e3cd8de | 34 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 35 | * Refrence software |
mdroberts1243 | 0:9e6a8e3cd8de | 36 | * https://github.com/waveshare/e-Paper |
mdroberts1243 | 0:9e6a8e3cd8de | 37 | * https://os.mbed.com/users/imachooon/code/epd1in54/ |
mdroberts1243 | 0:9e6a8e3cd8de | 38 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 39 | * Technical documents |
mdroberts1243 | 0:9e6a8e3cd8de | 40 | * https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT_(B) |
mdroberts1243 | 0:9e6a8e3cd8de | 41 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 42 | * Product |
mdroberts1243 | 0:9e6a8e3cd8de | 43 | * http://akizukidenshi.com/catalog/g/gP-13757/ |
mdroberts1243 | 0:9e6a8e3cd8de | 44 | * https://www.waveshare.com/2.13inch-e-paper-hat-b.htm |
mdroberts1243 | 0:9e6a8e3cd8de | 45 | * |
mdroberts1243 | 0:9e6a8e3cd8de | 46 | */ |
mdroberts1243 | 0:9e6a8e3cd8de | 47 | |
mdroberts1243 | 0:9e6a8e3cd8de | 48 | #ifndef EPD2IN7B_H |
mdroberts1243 | 0:9e6a8e3cd8de | 49 | #define EPD2IN7B_H |
mdroberts1243 | 0:9e6a8e3cd8de | 50 | |
mdroberts1243 | 0:9e6a8e3cd8de | 51 | #include "epdif.h" |
mdroberts1243 | 0:9e6a8e3cd8de | 52 | #define LOW 0 |
mdroberts1243 | 0:9e6a8e3cd8de | 53 | #define HIGH 1 |
mdroberts1243 | 0:9e6a8e3cd8de | 54 | |
mdroberts1243 | 0:9e6a8e3cd8de | 55 | // Display resolution |
mdroberts1243 | 0:9e6a8e3cd8de | 56 | |
mdroberts1243 | 0:9e6a8e3cd8de | 57 | // 2.7 Inch version |
mdroberts1243 | 0:9e6a8e3cd8de | 58 | #define EPD_VERT 264 |
mdroberts1243 | 0:9e6a8e3cd8de | 59 | #define EPD_HORIZ 176 |
mdroberts1243 | 0:9e6a8e3cd8de | 60 | |
mdroberts1243 | 0:9e6a8e3cd8de | 61 | // EPD2IN13B commands |
mdroberts1243 | 0:9e6a8e3cd8de | 62 | #define PANEL_SETTING 0x00 |
mdroberts1243 | 0:9e6a8e3cd8de | 63 | #define POWER_SETTING 0x01 |
mdroberts1243 | 0:9e6a8e3cd8de | 64 | #define POWER_OFF 0x02 |
mdroberts1243 | 0:9e6a8e3cd8de | 65 | #define POWER_OFF_SEQUENCE_SETTING 0x03 |
mdroberts1243 | 0:9e6a8e3cd8de | 66 | #define POWER_ON 0x04 |
mdroberts1243 | 0:9e6a8e3cd8de | 67 | #define POWER_ON_MEASURE 0x05 |
mdroberts1243 | 0:9e6a8e3cd8de | 68 | #define BOOSTER_SOFT_START 0x06 |
mdroberts1243 | 0:9e6a8e3cd8de | 69 | #define DEEP_SLEEP 0x07 |
mdroberts1243 | 0:9e6a8e3cd8de | 70 | #define DATA_START_TRANSMISSION_1 0x10 |
mdroberts1243 | 0:9e6a8e3cd8de | 71 | #define DATA_STOP 0x11 |
mdroberts1243 | 0:9e6a8e3cd8de | 72 | #define DISPLAY_REFRESH 0x12 |
mdroberts1243 | 0:9e6a8e3cd8de | 73 | #define DATA_START_TRANSMISSION_2 0x13 |
mdroberts1243 | 0:9e6a8e3cd8de | 74 | // Partial Data Start Transmission 1 (0x14), 2 (0x15), Partial Display Refresh (0x16) |
mdroberts1243 | 0:9e6a8e3cd8de | 75 | // Added for 2.7 inch version |
mdroberts1243 | 0:9e6a8e3cd8de | 76 | #define PARTIAL_DATA_START_TRANSMISSION_1 0x14 |
mdroberts1243 | 0:9e6a8e3cd8de | 77 | #define PARTIAL_DATA_START_TRANSMISSION_2 0x15 |
mdroberts1243 | 0:9e6a8e3cd8de | 78 | #define PARTIAL_DISPLAY_REFRESH 0x16 |
mdroberts1243 | 0:9e6a8e3cd8de | 79 | // end new stuff for 2.7 |
mdroberts1243 | 0:9e6a8e3cd8de | 80 | #define VCOM_LUT 0x20 |
mdroberts1243 | 0:9e6a8e3cd8de | 81 | #define W2W_LUT 0x21 |
mdroberts1243 | 0:9e6a8e3cd8de | 82 | #define B2W_LUT 0x22 |
mdroberts1243 | 0:9e6a8e3cd8de | 83 | #define W2B_LUT 0x23 |
mdroberts1243 | 0:9e6a8e3cd8de | 84 | #define B2B_LUT 0x24 |
mdroberts1243 | 0:9e6a8e3cd8de | 85 | #define PLL_CONTROL 0x30 |
mdroberts1243 | 0:9e6a8e3cd8de | 86 | #define TEMPERATURE_SENSOR_COMMAND 0x40 // changed in 2.7 |
mdroberts1243 | 0:9e6a8e3cd8de | 87 | #define TEMPERATURE_SENSOR_CALIBRATION 0x41 // changed in 2.7 |
mdroberts1243 | 0:9e6a8e3cd8de | 88 | #define TEMPERATURE_SENSOR_WRITE 0x42 |
mdroberts1243 | 0:9e6a8e3cd8de | 89 | #define TEMPERATURE_SENSOR_READ 0x43 |
mdroberts1243 | 0:9e6a8e3cd8de | 90 | #define VCOM_AND_DATA_INTERVAL_SETTING 0x50 |
mdroberts1243 | 0:9e6a8e3cd8de | 91 | #define LOW_POWER_DETECTION 0x51 |
mdroberts1243 | 0:9e6a8e3cd8de | 92 | #define TCON_SETTING 0x60 |
mdroberts1243 | 0:9e6a8e3cd8de | 93 | #define RESOLUTION_SETTING 0x61 |
mdroberts1243 | 0:9e6a8e3cd8de | 94 | // Source & gate start setting (0x62) |
mdroberts1243 | 0:9e6a8e3cd8de | 95 | #define GET_STATUS 0x71 |
mdroberts1243 | 0:9e6a8e3cd8de | 96 | #define AUTO_MEASURE_VCOM 0x80 |
mdroberts1243 | 0:9e6a8e3cd8de | 97 | #define READ_VCOM_VALUE 0x81 |
mdroberts1243 | 0:9e6a8e3cd8de | 98 | #define VCM_DC_SETTING 0x82 |
mdroberts1243 | 0:9e6a8e3cd8de | 99 | //#define PARTIAL_WINDOW 0x90 // Partial not defined in 2.7 |
mdroberts1243 | 0:9e6a8e3cd8de | 100 | //#define PARTIAL_IN 0x91 |
mdroberts1243 | 0:9e6a8e3cd8de | 101 | //#define PARTIAL_OUT 0x92 |
mdroberts1243 | 0:9e6a8e3cd8de | 102 | #define PROGRAM_MODE 0xA0 |
mdroberts1243 | 0:9e6a8e3cd8de | 103 | #define ACTIVE_PROGRAM 0xA1 |
mdroberts1243 | 0:9e6a8e3cd8de | 104 | #define READ_OTP_DATA 0xA2 |
mdroberts1243 | 0:9e6a8e3cd8de | 105 | //#define POWER_SAVING 0xE3 // Not in 2.7? |
mdroberts1243 | 0:9e6a8e3cd8de | 106 | |
mdroberts1243 | 0:9e6a8e3cd8de | 107 | |
mdroberts1243 | 0:9e6a8e3cd8de | 108 | extern const unsigned char lut_vcom_dc[]; |
mdroberts1243 | 0:9e6a8e3cd8de | 109 | extern const unsigned char lut_ww[]; |
mdroberts1243 | 0:9e6a8e3cd8de | 110 | extern const unsigned char lut_bw[]; |
mdroberts1243 | 0:9e6a8e3cd8de | 111 | extern const unsigned char lut_bb[]; |
mdroberts1243 | 0:9e6a8e3cd8de | 112 | extern const unsigned char lut_wb[]; |
mdroberts1243 | 0:9e6a8e3cd8de | 113 | |
mdroberts1243 | 0:9e6a8e3cd8de | 114 | class Epd : EpdIf |
mdroberts1243 | 0:9e6a8e3cd8de | 115 | { |
mdroberts1243 | 0:9e6a8e3cd8de | 116 | public: |
mdroberts1243 | 0:9e6a8e3cd8de | 117 | int horiz; |
mdroberts1243 | 0:9e6a8e3cd8de | 118 | int vert; |
mdroberts1243 | 0:9e6a8e3cd8de | 119 | |
mdroberts1243 | 0:9e6a8e3cd8de | 120 | Epd(PinName mosi, |
mdroberts1243 | 0:9e6a8e3cd8de | 121 | PinName miso, |
mdroberts1243 | 0:9e6a8e3cd8de | 122 | PinName sclk, |
mdroberts1243 | 0:9e6a8e3cd8de | 123 | PinName cs, |
mdroberts1243 | 0:9e6a8e3cd8de | 124 | PinName dc, |
mdroberts1243 | 0:9e6a8e3cd8de | 125 | PinName rst, |
mdroberts1243 | 0:9e6a8e3cd8de | 126 | PinName busy, |
mdroberts1243 | 0:9e6a8e3cd8de | 127 | PinName pwr |
mdroberts1243 | 0:9e6a8e3cd8de | 128 | ); |
mdroberts1243 | 0:9e6a8e3cd8de | 129 | ~Epd() |
mdroberts1243 | 0:9e6a8e3cd8de | 130 | { |
mdroberts1243 | 0:9e6a8e3cd8de | 131 | ; |
mdroberts1243 | 0:9e6a8e3cd8de | 132 | } |
mdroberts1243 | 0:9e6a8e3cd8de | 133 | |
mdroberts1243 | 0:9e6a8e3cd8de | 134 | int Init(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 135 | void SendCommand(unsigned char command); |
mdroberts1243 | 0:9e6a8e3cd8de | 136 | void SendData(unsigned char data); |
mdroberts1243 | 0:9e6a8e3cd8de | 137 | void WaitUntilIdle(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 138 | void Reset(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 139 | void SetLut(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 140 | void SetPartialWindow(const unsigned char* buffer_black, |
mdroberts1243 | 0:9e6a8e3cd8de | 141 | const unsigned char* buffer_red, |
mdroberts1243 | 0:9e6a8e3cd8de | 142 | int x, |
mdroberts1243 | 0:9e6a8e3cd8de | 143 | int y, |
mdroberts1243 | 0:9e6a8e3cd8de | 144 | int w, |
mdroberts1243 | 0:9e6a8e3cd8de | 145 | int l); |
mdroberts1243 | 0:9e6a8e3cd8de | 146 | void SetPartialWindowBlack(const unsigned char* buffer_black, |
mdroberts1243 | 0:9e6a8e3cd8de | 147 | int x, |
mdroberts1243 | 0:9e6a8e3cd8de | 148 | int y, |
mdroberts1243 | 0:9e6a8e3cd8de | 149 | int w, |
mdroberts1243 | 0:9e6a8e3cd8de | 150 | int l); |
mdroberts1243 | 0:9e6a8e3cd8de | 151 | void SetPartialWindowRed(const unsigned char* buffer_red, |
mdroberts1243 | 0:9e6a8e3cd8de | 152 | int x, |
mdroberts1243 | 0:9e6a8e3cd8de | 153 | int y, |
mdroberts1243 | 0:9e6a8e3cd8de | 154 | int w, |
mdroberts1243 | 0:9e6a8e3cd8de | 155 | int l); |
mdroberts1243 | 0:9e6a8e3cd8de | 156 | void DisplayFrame(const unsigned char* frame_buffer_black, |
mdroberts1243 | 0:9e6a8e3cd8de | 157 | const unsigned char* frame_buffer_red); |
mdroberts1243 | 0:9e6a8e3cd8de | 158 | void DisplayFrame(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 159 | void ClearFrame(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 160 | void Sleep(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 161 | void PwrOn(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 162 | void PwrOff(void); |
mdroberts1243 | 0:9e6a8e3cd8de | 163 | |
mdroberts1243 | 0:9e6a8e3cd8de | 164 | private: |
mdroberts1243 | 0:9e6a8e3cd8de | 165 | |
mdroberts1243 | 0:9e6a8e3cd8de | 166 | }; |
mdroberts1243 | 0:9e6a8e3cd8de | 167 | |
mdroberts1243 | 0:9e6a8e3cd8de | 168 | #endif /* EPD2IN7B_H */ |
mdroberts1243 | 0:9e6a8e3cd8de | 169 | |
mdroberts1243 | 0:9e6a8e3cd8de | 170 | /* END OF FILE */ |