Library for Waveshare 2.7" tri-colour e-Paper display.

Dependents:   ePD_2_7b_example

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?

UserRevisionLine numberNew 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 */