Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DebouncedInterrupt SharpLCD_LucidaFont mbed-src
Fork of Renard_UI_Only by
Diff: EaEpaper/EaEpaper.h
- Revision:
- 0:9bea6067730f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/EaEpaper/EaEpaper.h Wed Jul 02 13:19:34 2014 +0000
@@ -0,0 +1,260 @@
+/* mbed library for 264*176 pixel 2.7 INCH E-PAPER DISPLAY from Pervasive Displays
+ * Copyright (c) 2013 Peter Drescher - DC2PD
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+
+// 09.11.2013 initial Version
+
+#ifndef EAEPAPER_H
+#define EAEPAPER_H
+
+/**
+ * Includes
+ */
+#include "mbed.h"
+#include "EPD.h"
+#include "GraphicsDisplay.h"
+
+// we have to double buffer the display
+#define EA_IMG_BUF_SZ (1536) // 264 x 176 / 8 = 5808
+
+/** Draw mode
+ * NORMAl
+ * XOR set pixel by xor of the screen
+ */
+enum {NORMAL,XOR};
+
+/** Bitmap
+ */
+struct Bitmap{
+ int xSize;
+ int ySize;
+ int Byte_in_Line;
+ char* data;
+ };
+
+/* color definitions */
+#define Black 0x0
+#define White 0x1
+
+/** Display control class, based on GraphicsDisplay and TextDisplay
+ *
+ * Example with pinning for KL25Z:
+ * @code
+ * #include "mbed.h"
+ * #include "EaEpaper.h"
+ * #include "Arial28x28.h"
+ * #include "Arial12x12.h"
+ * #include "font_big.h"
+ * #include "graphics.h"
+
+ * // the E-Paper board from embedded artists has a LM75 temp sensor to compensate the temperature effect. If it is cold the display reacts slower.
+ * // The LM75 need a I2C -> 2 pins : sda and scl
+ * // The display data is written via SPI -> 3 pins : mosi,miso,sck
+ * // There are also some control signals
+ * // The pwm pin has to be connected to a PWM enabled pin : pwm
+ * // The other signals are connected to normal IO`s
+ * //
+ * EaEpaper epaper(PTD7, // PWR_CTRL
+ * PTD6, // BORDER
+ * PTE31, // DISCHARGE
+ * PTA17, // RESET_DISP
+ * PTA16, // BUSY
+ * PTC17, // SSEL
+ * PTD4, // PWM
+ * PTD2,PTD3,PTD1, // MOSI,MISO,SCLK
+ * PTE0,PTE1); // SDA,SCL
+ *
+ * int main() {
+ *
+ * epaper.cls(); // clear screen
+ * epaper.set_font((unsigned char*) Arial28x28); // select the font
+ * epaper.locate(5,20); // set cursor
+ * epaper.printf("Hello Mbed"); // print text
+ * epaper.rect(3,15,150,50,1); // draw frame
+ * epaper.write_disp(); // update screen
+ *
+ * @endcode
+ */
+
+
+class EaEpaper : public GraphicsDisplay {
+
+public:
+
+ /**
+ * Constructor.
+ */
+ EaEpaper(PinName p_on, PinName border, PinName discharge, PinName reset, PinName busy, PinName cs, // IO-Pins
+ PinName pwm, // PWM Pin
+ PinName mosi, PinName miso, PinName sck, // SPI
+ PinName sda, PinName scl, // I2C
+ const char* name ="E_Paper");
+
+ /** Get the width of the screen in pixel
+ *
+ * @param
+ * @returns width of screen in pixel
+ *
+ */
+ virtual int width();
+
+ /** Get the height of the screen in pixel
+ *
+ * @returns height of screen in pixel
+ *
+ */
+ virtual int height();
+
+
+ /**
+ * Clear the display
+ */
+ void clear();
+
+ /**
+ * Write image buffer to display
+ */
+ void write_disp(void);
+
+ /**
+ * set or reset a single pixel
+ *
+ * @param x horizontal position
+ * @param y vertical position
+ * @param color : 0 white, 1 black
+ */
+ virtual void pixel(int x, int y, int color);
+
+ /** Fill the screen with white
+ *
+ */
+ virtual void cls(void);
+
+ /** draw a 1 pixel line
+ *
+ * @param x0,y0 start point
+ * @param x1,y1 stop point
+ * @param color : 0 white, 1 black
+ */
+ void line(int x0, int y0, int x1, int y1, int color);
+
+ /** draw a rect
+ *
+ * @param x0,y0 top left corner
+ * @param x1,y1 down right corner
+ * @param color : 0 white, 1 black
+ */
+ void rect(int x0, int y0, int x1, int y1, int color);
+
+ /** draw a filled rect
+ *
+ * @param x0,y0 top left corner
+ * @param x1,y1 down right corner
+ * @param color : 0 white, 1 black
+ */
+ void fillrect(int x0, int y0, int x1, int y1, int color);
+
+ /** draw a circle
+ *
+ * @param x0,y0 center
+ * @param r radius
+ * @param color : 0 white, 1 black *
+ */
+ void circle(int x0, int y0, int r, int color);
+
+ /** draw a filled circle
+ *
+ * @param x0,y0 center
+ * @param r radius
+ * @param color : 0 white, 1 black *
+ */
+ void fillcircle(int x0, int y0, int r, int color);
+
+ /** set drawing mode
+ * @param NORMAL : paint normal color, XOR : paint XOR of current pixels
+ */
+ void setmode(int mode);
+
+ /** setup cursor position
+ *
+ * @param x x-position (top left)
+ * @param y y-position
+ */
+ virtual void locate(int x, int y);
+
+ /** calculate the max number of char in a line
+ *
+ * @returns max columns
+ * depends on actual font size
+ */
+ virtual int columns();
+
+ /** calculate the max number of columns
+ *
+ * @returns max column
+ * depends on actual font size
+ */
+ virtual int rows();
+
+ /** put a char on the screen
+ *
+ * @param value char to print
+ * @returns printed char
+ */
+ virtual int _putc(int value);
+
+ /** paint a character on given position out of the active font to the screen buffer
+ *
+ * @param x x-position (top left)
+ * @param y y-position
+ * @param c char code
+ */
+ virtual void character(int x, int y, int c);
+
+ /** select the font to use
+ *
+ * @param f pointer to font array
+ *
+ * font array can created with GLCD Font Creator from http://www.mikroe.com
+ * you have to add 4 parameter at the beginning of the font array to use:
+ * - the number of byte / char
+ * - the vertial size in pixel
+ * - the horizontal size in pixel
+ * - the number of byte per vertical line
+ * you also have to change the array to char[]
+ */
+ void set_font(unsigned char* f);
+
+ /** print bitmap to buffer
+ *
+ * @param bm struct Bitmap in flash
+ * @param x x start
+ * @param y y start
+ *
+ */
+ void print_bm(Bitmap bm, int x, int y);
+
+
+ unsigned char* font;
+ unsigned int draw_mode;
+
+ private:
+
+ EPD_Class epd_;
+ I2C i2c_;
+ unsigned int char_x;
+ unsigned int char_y;
+ int32_t readTemperature();
+
+};
+
+ #endif /* EAEPAPER_H */
\ No newline at end of file
