Uses the same fonts as the SPI_TFT_ILI9341 Library (I have many, and a html/php font editor for that)
SPI_TFT_ILI9225.h@10:a640680b5309, 2016-11-23 (annotated)
- Committer:
- JackB
- Date:
- Wed Nov 23 12:35:40 2016 +0000
- Revision:
- 10:a640680b5309
- Parent:
- 9:680f6c9940b3
- Child:
- 13:9e6589dc8864
Improved comments
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JackB | 0:cc1fb45bc3ad | 1 | #ifndef TFT_22_ILI9225_h |
JackB | 0:cc1fb45bc3ad | 2 | #define TFT_22_ILI9225_h |
JackB | 0:cc1fb45bc3ad | 3 | #include "mbed.h" |
JackB | 0:cc1fb45bc3ad | 4 | |
JackB | 0:cc1fb45bc3ad | 5 | #define FONT_LENGTH 0 |
JackB | 0:cc1fb45bc3ad | 6 | #define FONT_HORZ 1 |
JackB | 0:cc1fb45bc3ad | 7 | #define FONT_VERT 2 |
JackB | 0:cc1fb45bc3ad | 8 | #define FONT_BYTES_VERT 3 |
JackB | 0:cc1fb45bc3ad | 9 | |
JackB | 0:cc1fb45bc3ad | 10 | #define ILI9225_CHARS_PER_LINE 36 |
JackB | 0:cc1fb45bc3ad | 11 | |
JackB | 0:cc1fb45bc3ad | 12 | /* ILI9225 screen size */ |
JackB | 0:cc1fb45bc3ad | 13 | #define ILI9225_LCD_WIDTH 176 |
JackB | 0:cc1fb45bc3ad | 14 | #define ILI9225_LCD_HEIGHT 220 |
JackB | 0:cc1fb45bc3ad | 15 | |
JackB | 1:8e447a4c8995 | 16 | #define ILI9225_PORTRAIT_L 0 // SD card at the left side |
JackB | 1:8e447a4c8995 | 17 | #define ILI9225_LANDSCAPE_B 1 // SD card at the bottom side |
JackB | 1:8e447a4c8995 | 18 | #define ILI9225_PORTRAIT_R 2 // SD card at the right side |
JackB | 1:8e447a4c8995 | 19 | #define ILI9225_LANDSCAPE_T 3 // SD card at the top side |
JackB | 0:cc1fb45bc3ad | 20 | |
JackB | 0:cc1fb45bc3ad | 21 | /* ILI9225 LCD Registers */ |
JackB | 0:cc1fb45bc3ad | 22 | #define ILI9225_DRIVER_OUTPUT_CTRL (0x01u) // Driver Output Control |
JackB | 0:cc1fb45bc3ad | 23 | #define ILI9225_LCD_AC_DRIVING_CTRL (0x02u) // LCD AC Driving Control |
JackB | 0:cc1fb45bc3ad | 24 | #define ILI9225_ENTRY_MODE (0x03u) // Entry Mode |
JackB | 0:cc1fb45bc3ad | 25 | #define ILI9225_DISP_CTRL1 (0x07u) // Display Control 1 |
JackB | 0:cc1fb45bc3ad | 26 | #define ILI9225_BLANK_PERIOD_CTRL1 (0x08u) // Blank Period Control |
JackB | 0:cc1fb45bc3ad | 27 | #define ILI9225_FRAME_CYCLE_CTRL (0x0Bu) // Frame Cycle Control |
JackB | 0:cc1fb45bc3ad | 28 | #define ILI9225_INTERFACE_CTRL (0x0Cu) // Interface Control |
JackB | 0:cc1fb45bc3ad | 29 | #define ILI9225_OSC_CTRL (0x0Fu) // Osc Control |
JackB | 0:cc1fb45bc3ad | 30 | #define ILI9225_POWER_CTRL1 (0x10u) // Power Control 1 |
JackB | 0:cc1fb45bc3ad | 31 | #define ILI9225_POWER_CTRL2 (0x11u) // Power Control 2 |
JackB | 0:cc1fb45bc3ad | 32 | #define ILI9225_POWER_CTRL3 (0x12u) // Power Control 3 |
JackB | 0:cc1fb45bc3ad | 33 | #define ILI9225_POWER_CTRL4 (0x13u) // Power Control 4 |
JackB | 0:cc1fb45bc3ad | 34 | #define ILI9225_POWER_CTRL5 (0x14u) // Power Control 5 |
JackB | 0:cc1fb45bc3ad | 35 | #define ILI9225_VCI_RECYCLING (0x15u) // VCI Recycling |
JackB | 0:cc1fb45bc3ad | 36 | #define ILI9225_RAM_ADDR_SET1 (0x20u) // Horizontal GRAM Address Set |
JackB | 0:cc1fb45bc3ad | 37 | #define ILI9225_RAM_ADDR_SET2 (0x21u) // Vertical GRAM Address Set |
JackB | 0:cc1fb45bc3ad | 38 | #define ILI9225_GRAM_DATA_REG (0x22u) // GRAM Data Register |
JackB | 0:cc1fb45bc3ad | 39 | #define ILI9225_GATE_SCAN_CTRL (0x30u) // Gate Scan Control Register |
JackB | 0:cc1fb45bc3ad | 40 | #define ILI9225_VERTICAL_SCROLL_CTRL1 (0x31u) // Vertical Scroll Control 1 Register |
JackB | 0:cc1fb45bc3ad | 41 | #define ILI9225_VERTICAL_SCROLL_CTRL2 (0x32u) // Vertical Scroll Control 2 Register |
JackB | 0:cc1fb45bc3ad | 42 | #define ILI9225_VERTICAL_SCROLL_CTRL3 (0x33u) // Vertical Scroll Control 3 Register |
JackB | 0:cc1fb45bc3ad | 43 | #define ILI9225_PARTIAL_DRIVING_POS1 (0x34u) // Partial Driving Position 1 Register |
JackB | 0:cc1fb45bc3ad | 44 | #define ILI9225_PARTIAL_DRIVING_POS2 (0x35u) // Partial Driving Position 2 Register |
JackB | 0:cc1fb45bc3ad | 45 | #define ILI9225_HORIZONTAL_WINDOW_ADDR1 (0x36u) // Horizontal Address Start Position |
JackB | 0:cc1fb45bc3ad | 46 | #define ILI9225_HORIZONTAL_WINDOW_ADDR2 (0x37u) // Horizontal Address End Position |
JackB | 0:cc1fb45bc3ad | 47 | #define ILI9225_VERTICAL_WINDOW_ADDR1 (0x38u) // Vertical Address Start Position |
JackB | 0:cc1fb45bc3ad | 48 | #define ILI9225_VERTICAL_WINDOW_ADDR2 (0x39u) // Vertical Address End Position |
JackB | 0:cc1fb45bc3ad | 49 | #define ILI9225_GAMMA_CTRL1 (0x50u) // Gamma Control 1 |
JackB | 0:cc1fb45bc3ad | 50 | #define ILI9225_GAMMA_CTRL2 (0x51u) // Gamma Control 2 |
JackB | 0:cc1fb45bc3ad | 51 | #define ILI9225_GAMMA_CTRL3 (0x52u) // Gamma Control 3 |
JackB | 0:cc1fb45bc3ad | 52 | #define ILI9225_GAMMA_CTRL4 (0x53u) // Gamma Control 4 |
JackB | 0:cc1fb45bc3ad | 53 | #define ILI9225_GAMMA_CTRL5 (0x54u) // Gamma Control 5 |
JackB | 0:cc1fb45bc3ad | 54 | #define ILI9225_GAMMA_CTRL6 (0x55u) // Gamma Control 6 |
JackB | 0:cc1fb45bc3ad | 55 | #define ILI9225_GAMMA_CTRL7 (0x56u) // Gamma Control 7 |
JackB | 0:cc1fb45bc3ad | 56 | #define ILI9225_GAMMA_CTRL8 (0x57u) // Gamma Control 8 |
JackB | 0:cc1fb45bc3ad | 57 | #define ILI9225_GAMMA_CTRL9 (0x58u) // Gamma Control 9 |
JackB | 0:cc1fb45bc3ad | 58 | #define ILI9225_GAMMA_CTRL10 (0x59u) // Gamma Control 10 |
JackB | 0:cc1fb45bc3ad | 59 | |
JackB | 0:cc1fb45bc3ad | 60 | #define ILI9225C_INVOFF 0x20 |
JackB | 0:cc1fb45bc3ad | 61 | #define ILI9225C_INVON 0x21 |
JackB | 0:cc1fb45bc3ad | 62 | |
JackB | 0:cc1fb45bc3ad | 63 | |
JackB | 0:cc1fb45bc3ad | 64 | /* RGB 24-bits color table definition (RGB888). */ |
JackB | 0:cc1fb45bc3ad | 65 | #define RGB888_RGB565(color) ((((color) >> 19) & 0x1f) << 11) | ((((color) >> 10) & 0x3f) << 5) | (((color) >> 3) & 0x1f) |
JackB | 0:cc1fb45bc3ad | 66 | |
JackB | 0:cc1fb45bc3ad | 67 | #define COLOR_BLACK RGB888_RGB565(0x000000u) |
JackB | 0:cc1fb45bc3ad | 68 | #define COLOR_WHITE RGB888_RGB565(0xFFFFFFu) |
JackB | 0:cc1fb45bc3ad | 69 | #define COLOR_BLUE RGB888_RGB565(0x0000FFu) |
JackB | 0:cc1fb45bc3ad | 70 | #define COLOR_GREEN RGB888_RGB565(0x00FF00u) |
JackB | 0:cc1fb45bc3ad | 71 | #define COLOR_RED RGB888_RGB565(0xFF0000u) |
JackB | 0:cc1fb45bc3ad | 72 | #define COLOR_NAVY RGB888_RGB565(0x000080u) |
JackB | 0:cc1fb45bc3ad | 73 | #define COLOR_DARKBLUE RGB888_RGB565(0x00008Bu) |
JackB | 0:cc1fb45bc3ad | 74 | #define COLOR_DARKGREEN RGB888_RGB565(0x006400u) |
JackB | 0:cc1fb45bc3ad | 75 | #define COLOR_DARKCYAN RGB888_RGB565(0x008B8Bu) |
JackB | 0:cc1fb45bc3ad | 76 | #define COLOR_CYAN RGB888_RGB565(0x00FFFFu) |
JackB | 0:cc1fb45bc3ad | 77 | #define COLOR_TURQUOISE RGB888_RGB565(0x40E0D0u) |
JackB | 0:cc1fb45bc3ad | 78 | #define COLOR_INDIGO RGB888_RGB565(0x4B0082u) |
JackB | 0:cc1fb45bc3ad | 79 | #define COLOR_DARKRED RGB888_RGB565(0x800000u) |
JackB | 0:cc1fb45bc3ad | 80 | #define COLOR_OLIVE RGB888_RGB565(0x808000u) |
JackB | 0:cc1fb45bc3ad | 81 | #define COLOR_GRAY RGB888_RGB565(0x808080u) |
JackB | 0:cc1fb45bc3ad | 82 | #define COLOR_SKYBLUE RGB888_RGB565(0x87CEEBu) |
JackB | 0:cc1fb45bc3ad | 83 | #define COLOR_BLUEVIOLET RGB888_RGB565(0x8A2BE2u) |
JackB | 0:cc1fb45bc3ad | 84 | #define COLOR_LIGHTGREEN RGB888_RGB565(0x90EE90u) |
JackB | 0:cc1fb45bc3ad | 85 | #define COLOR_DARKVIOLET RGB888_RGB565(0x9400D3u) |
JackB | 0:cc1fb45bc3ad | 86 | #define COLOR_YELLOWGREEN RGB888_RGB565(0x9ACD32u) |
JackB | 0:cc1fb45bc3ad | 87 | #define COLOR_BROWN RGB888_RGB565(0xA52A2Au) |
JackB | 0:cc1fb45bc3ad | 88 | #define COLOR_DARKGRAY RGB888_RGB565(0xA9A9A9u) |
JackB | 0:cc1fb45bc3ad | 89 | #define COLOR_SIENNA RGB888_RGB565(0xA0522Du) |
JackB | 0:cc1fb45bc3ad | 90 | #define COLOR_LIGHTBLUE RGB888_RGB565(0xADD8E6u) |
JackB | 0:cc1fb45bc3ad | 91 | #define COLOR_GREENYELLOW RGB888_RGB565(0xADFF2Fu) |
JackB | 0:cc1fb45bc3ad | 92 | #define COLOR_SILVER RGB888_RGB565(0xC0C0C0u) |
JackB | 0:cc1fb45bc3ad | 93 | #define COLOR_LIGHTGREY RGB888_RGB565(0xD3D3D3u) |
JackB | 0:cc1fb45bc3ad | 94 | #define COLOR_LIGHTCYAN RGB888_RGB565(0xE0FFFFu) |
JackB | 0:cc1fb45bc3ad | 95 | #define COLOR_VIOLET RGB888_RGB565(0xEE82EEu) |
JackB | 0:cc1fb45bc3ad | 96 | #define COLOR_AZUR RGB888_RGB565(0xF0FFFFu) |
JackB | 0:cc1fb45bc3ad | 97 | #define COLOR_BEIGE RGB888_RGB565(0xF5F5DCu) |
JackB | 0:cc1fb45bc3ad | 98 | #define COLOR_MAGENTA RGB888_RGB565(0xFF00FFu) |
JackB | 0:cc1fb45bc3ad | 99 | #define COLOR_TOMATO RGB888_RGB565(0xFF6347u) |
JackB | 0:cc1fb45bc3ad | 100 | #define COLOR_GOLD RGB888_RGB565(0xFFD700u) |
JackB | 0:cc1fb45bc3ad | 101 | #define COLOR_ORANGE RGB888_RGB565(0xFFA500u) |
JackB | 0:cc1fb45bc3ad | 102 | #define COLOR_SNOW RGB888_RGB565(0xFFFAFAu) |
JackB | 0:cc1fb45bc3ad | 103 | #define COLOR_YELLOW RGB888_RGB565(0xFFFF00u) |
JackB | 0:cc1fb45bc3ad | 104 | |
JackB | 0:cc1fb45bc3ad | 105 | /// Main and core class |
JackB | 0:cc1fb45bc3ad | 106 | class TFT_22_ILI9225 : public Stream { |
JackB | 0:cc1fb45bc3ad | 107 | |
JackB | 0:cc1fb45bc3ad | 108 | public: |
JackB | 0:cc1fb45bc3ad | 109 | |
JackB | 10:a640680b5309 | 110 | /** Constructor |
JackB | 10:a640680b5309 | 111 | * |
JackB | 10:a640680b5309 | 112 | */ |
JackB | 0:cc1fb45bc3ad | 113 | TFT_22_ILI9225(PinName sdi, PinName clk, PinName cs, PinName rs, PinName rst, PinName led, const char *name); |
JackB | 0:cc1fb45bc3ad | 114 | |
JackB | 10:a640680b5309 | 115 | /** Claim standard output |
JackB | 10:a640680b5309 | 116 | * |
JackB | 10:a640680b5309 | 117 | */ |
JackB | 0:cc1fb45bc3ad | 118 | virtual bool claim (FILE *stream); |
JackB | 0:cc1fb45bc3ad | 119 | |
JackB | 10:a640680b5309 | 120 | /** Initialization |
JackB | 10:a640680b5309 | 121 | * |
JackB | 10:a640680b5309 | 122 | */ |
JackB | 0:cc1fb45bc3ad | 123 | void init(void); |
JackB | 0:cc1fb45bc3ad | 124 | |
JackB | 10:a640680b5309 | 125 | /** Clear the screen |
JackB | 10:a640680b5309 | 126 | * |
JackB | 10:a640680b5309 | 127 | */ |
JackB | 0:cc1fb45bc3ad | 128 | void cls(void); |
JackB | 0:cc1fb45bc3ad | 129 | |
JackB | 10:a640680b5309 | 130 | /** Fill the screen with color |
JackB | 10:a640680b5309 | 131 | * |
JackB | 10:a640680b5309 | 132 | * @param color |
JackB | 10:a640680b5309 | 133 | * |
JackB | 10:a640680b5309 | 134 | */ |
JackB | 0:cc1fb45bc3ad | 135 | void fill(uint16_t color); |
JackB | 0:cc1fb45bc3ad | 136 | |
JackB | 10:a640680b5309 | 137 | /** Invert screen |
JackB | 10:a640680b5309 | 138 | * |
JackB | 10:a640680b5309 | 139 | * @param flag true to invert, false for normal screen |
JackB | 10:a640680b5309 | 140 | * |
JackB | 10:a640680b5309 | 141 | */ |
JackB | 0:cc1fb45bc3ad | 142 | void invert(bool flag); |
JackB | 0:cc1fb45bc3ad | 143 | |
JackB | 10:a640680b5309 | 144 | /** Set backlight brightness |
JackB | 10:a640680b5309 | 145 | * |
JackB | 10:a640680b5309 | 146 | * @param brightness |
JackB | 10:a640680b5309 | 147 | * |
JackB | 10:a640680b5309 | 148 | */ |
JackB | 10:a640680b5309 | 149 | void setBacklight(double brightness); |
JackB | 0:cc1fb45bc3ad | 150 | |
JackB | 10:a640680b5309 | 151 | /** Switch backlight off |
JackB | 10:a640680b5309 | 152 | * |
JackB | 10:a640680b5309 | 153 | */ |
JackB | 0:cc1fb45bc3ad | 154 | void setBacklightOff(void); |
JackB | 0:cc1fb45bc3ad | 155 | |
JackB | 10:a640680b5309 | 156 | /** Switch backlight on |
JackB | 10:a640680b5309 | 157 | * |
JackB | 10:a640680b5309 | 158 | */ |
JackB | 0:cc1fb45bc3ad | 159 | void setBacklightOn(void); |
JackB | 0:cc1fb45bc3ad | 160 | |
JackB | 10:a640680b5309 | 161 | /** Switch display on or off |
JackB | 10:a640680b5309 | 162 | * |
JackB | 10:a640680b5309 | 163 | * @param flag true=on, false=off |
JackB | 10:a640680b5309 | 164 | * |
JackB | 10:a640680b5309 | 165 | */ |
JackB | 0:cc1fb45bc3ad | 166 | void setDisplay(bool flag); |
JackB | 0:cc1fb45bc3ad | 167 | |
JackB | 10:a640680b5309 | 168 | /** Set orientation |
JackB | 10:a640680b5309 | 169 | * |
JackB | 10:a640680b5309 | 170 | * @param orientation orientation: |
JackB | 10:a640680b5309 | 171 | * 0=ILI9225_PORTRAIT_L : SD card at the left side |
JackB | 10:a640680b5309 | 172 | * 1=ILI9225_LANDSCAPE_B : SD card at the bottom side |
JackB | 10:a640680b5309 | 173 | * 2=ILI9225_PORTRAIT_R : SD card at the right side |
JackB | 10:a640680b5309 | 174 | * 3=ILI9225_LANDSCAPE_T : SD card at the top side |
JackB | 10:a640680b5309 | 175 | * |
JackB | 10:a640680b5309 | 176 | */ |
JackB | 0:cc1fb45bc3ad | 177 | void setOrientation(uint8_t orientation); |
JackB | 0:cc1fb45bc3ad | 178 | |
JackB | 10:a640680b5309 | 179 | /** Get orientation |
JackB | 10:a640680b5309 | 180 | * |
JackB | 10:a640680b5309 | 181 | * @return orientation orientation, 0=portrait, 1=right rotated landscape, 2=reverse portrait, 3=left rotated landscape |
JackB | 10:a640680b5309 | 182 | * |
JackB | 10:a640680b5309 | 183 | */ |
JackB | 0:cc1fb45bc3ad | 184 | uint8_t getOrientation(void); |
JackB | 0:cc1fb45bc3ad | 185 | |
JackB | 10:a640680b5309 | 186 | /** Font size, x-axis |
JackB | 10:a640680b5309 | 187 | * |
JackB | 10:a640680b5309 | 188 | * @return horizontal size of current font, in pixels |
JackB | 10:a640680b5309 | 189 | * |
JackB | 10:a640680b5309 | 190 | */ |
JackB | 0:cc1fb45bc3ad | 191 | uint8_t fontX(void); |
JackB | 0:cc1fb45bc3ad | 192 | |
JackB | 10:a640680b5309 | 193 | /** Font size, y-axis |
JackB | 10:a640680b5309 | 194 | * |
JackB | 10:a640680b5309 | 195 | * @return vertical size of current font, in pixels |
JackB | 10:a640680b5309 | 196 | * |
JackB | 10:a640680b5309 | 197 | */ |
JackB | 0:cc1fb45bc3ad | 198 | uint8_t fontY(void); |
JackB | 0:cc1fb45bc3ad | 199 | |
JackB | 10:a640680b5309 | 200 | /** Screen size, x-axis |
JackB | 10:a640680b5309 | 201 | * |
JackB | 10:a640680b5309 | 202 | * @return horizontal size of the screen, in pixels |
JackB | 10:a640680b5309 | 203 | * @note 219 means 0..219 coordinates (decimal) |
JackB | 10:a640680b5309 | 204 | * |
JackB | 10:a640680b5309 | 205 | */ |
JackB | 0:cc1fb45bc3ad | 206 | uint16_t maxX(void); |
JackB | 0:cc1fb45bc3ad | 207 | |
JackB | 10:a640680b5309 | 208 | /** Screen size, x-axis |
JackB | 10:a640680b5309 | 209 | * |
JackB | 10:a640680b5309 | 210 | * @return horizontal size of the screen, in pixels |
JackB | 10:a640680b5309 | 211 | * @note 220 means 220 pixels and thus 0..219 coordinates (decimal) |
JackB | 10:a640680b5309 | 212 | * |
JackB | 10:a640680b5309 | 213 | */ |
JackB | 0:cc1fb45bc3ad | 214 | uint16_t width(void); |
JackB | 0:cc1fb45bc3ad | 215 | |
JackB | 10:a640680b5309 | 216 | /** Screen size, y-axis |
JackB | 10:a640680b5309 | 217 | * |
JackB | 10:a640680b5309 | 218 | * @return vertical size of the screen, in pixels |
JackB | 10:a640680b5309 | 219 | * @note 175 means 0..175 coordinates (decimal) |
JackB | 10:a640680b5309 | 220 | * |
JackB | 10:a640680b5309 | 221 | */ |
JackB | 0:cc1fb45bc3ad | 222 | uint16_t maxY(void); |
JackB | 0:cc1fb45bc3ad | 223 | |
JackB | 10:a640680b5309 | 224 | /** Screen size, y-axis |
JackB | 10:a640680b5309 | 225 | * |
JackB | 10:a640680b5309 | 226 | * @return vertical size of the screen, in pixels |
JackB | 10:a640680b5309 | 227 | * @note 176 means 176 pixels and thus 0..175 coordinates (decimal) |
JackB | 10:a640680b5309 | 228 | * |
JackB | 10:a640680b5309 | 229 | */ |
JackB | 0:cc1fb45bc3ad | 230 | uint16_t height(void); |
JackB | 0:cc1fb45bc3ad | 231 | |
JackB | 6:0f26c28b9bc0 | 232 | // Graphics functions |
JackB | 0:cc1fb45bc3ad | 233 | |
JackB | 10:a640680b5309 | 234 | /** Draw pixel |
JackB | 10:a640680b5309 | 235 | * |
JackB | 10:a640680b5309 | 236 | * @param x1 point coordinate, x-axis |
JackB | 10:a640680b5309 | 237 | * @param y1 point coordinate, y-axis |
JackB | 10:a640680b5309 | 238 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 239 | * |
JackB | 10:a640680b5309 | 240 | */ |
JackB | 6:0f26c28b9bc0 | 241 | void pixel(uint16_t x1, uint16_t y1, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 242 | |
JackB | 10:a640680b5309 | 243 | /** Draw line, rectangle coordinates |
JackB | 10:a640680b5309 | 244 | * |
JackB | 10:a640680b5309 | 245 | * @param x1 top left coordinate, x-axis |
JackB | 10:a640680b5309 | 246 | * @param y1 top left coordinate, y-axis |
JackB | 10:a640680b5309 | 247 | * @param x2 bottom right coordinate, x-axis |
JackB | 10:a640680b5309 | 248 | * @param y2 bottom right coordinate, y-axis |
JackB | 10:a640680b5309 | 249 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 250 | * |
JackB | 10:a640680b5309 | 251 | */ |
JackB | 5:dad648238df3 | 252 | void line(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 253 | |
JackB | 10:a640680b5309 | 254 | /** Draw hline, rectangle coordinates |
JackB | 10:a640680b5309 | 255 | * |
JackB | 10:a640680b5309 | 256 | * @param x1 top left coordinate, x-axis |
JackB | 10:a640680b5309 | 257 | * @param x2 bottom right coordinate, x-axis |
JackB | 10:a640680b5309 | 258 | * @param y bottom right coordinate, y-axis |
JackB | 10:a640680b5309 | 259 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 260 | * |
JackB | 10:a640680b5309 | 261 | */ |
JackB | 9:680f6c9940b3 | 262 | void hline(uint16_t x1, uint16_t x2, uint16_t y, uint16_t color); |
JackB | 7:2616ae4dd315 | 263 | |
JackB | 10:a640680b5309 | 264 | /** Draw vline, rectangle coordinates |
JackB | 10:a640680b5309 | 265 | * |
JackB | 10:a640680b5309 | 266 | * @param x top left coordinate, x-axis |
JackB | 10:a640680b5309 | 267 | * @param y1 top left coordinate, y-axis |
JackB | 10:a640680b5309 | 268 | * @param y2 bottom right coordinate, y-axis |
JackB | 10:a640680b5309 | 269 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 270 | * |
JackB | 10:a640680b5309 | 271 | */ |
JackB | 9:680f6c9940b3 | 272 | void vline(uint16_t x, uint16_t y1, uint16_t y2, uint16_t color); |
JackB | 7:2616ae4dd315 | 273 | |
JackB | 10:a640680b5309 | 274 | /** Draw rectangle, rectangle coordinates |
JackB | 10:a640680b5309 | 275 | * |
JackB | 10:a640680b5309 | 276 | * @param x1 top left coordinate, x-axis |
JackB | 10:a640680b5309 | 277 | * @param y1 top left coordinate, y-axis |
JackB | 10:a640680b5309 | 278 | * @param x2 bottom right coordinate, x-axis |
JackB | 10:a640680b5309 | 279 | * @param y2 bottom right coordinate, y-axis |
JackB | 10:a640680b5309 | 280 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 281 | * |
JackB | 10:a640680b5309 | 282 | */ |
JackB | 5:dad648238df3 | 283 | void rect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 284 | |
JackB | 10:a640680b5309 | 285 | /** Draw solid rectangle, rectangle coordinates |
JackB | 10:a640680b5309 | 286 | * |
JackB | 10:a640680b5309 | 287 | * @param x1 top left coordinate, x-axis |
JackB | 10:a640680b5309 | 288 | * @param y1 top left coordinate, y-axis |
JackB | 10:a640680b5309 | 289 | * @param x2 bottom right coordinate, x-axis |
JackB | 10:a640680b5309 | 290 | * @param y2 bottom right coordinate, y-axis |
JackB | 10:a640680b5309 | 291 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 292 | * |
JackB | 10:a640680b5309 | 293 | */ |
JackB | 5:dad648238df3 | 294 | void fillrect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 295 | |
JackB | 10:a640680b5309 | 296 | /** Draw circle |
JackB | 10:a640680b5309 | 297 | * |
JackB | 10:a640680b5309 | 298 | * @param x0 center, point coordinate, x-axis |
JackB | 10:a640680b5309 | 299 | * @param y0 center, point coordinate, y-axis |
JackB | 10:a640680b5309 | 300 | * @param radius radius |
JackB | 10:a640680b5309 | 301 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 302 | * |
JackB | 10:a640680b5309 | 303 | */ |
JackB | 6:0f26c28b9bc0 | 304 | void circle(uint16_t x0, uint16_t y0, uint16_t radius, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 305 | |
JackB | 10:a640680b5309 | 306 | /** Draw solid circle |
JackB | 10:a640680b5309 | 307 | * |
JackB | 10:a640680b5309 | 308 | * @param x0 center, point coordinate, x-axis |
JackB | 10:a640680b5309 | 309 | * @param y0 center, point coordinate, y-axis |
JackB | 10:a640680b5309 | 310 | * @param radius radius |
JackB | 10:a640680b5309 | 311 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 312 | * |
JackB | 10:a640680b5309 | 313 | */ |
JackB | 6:0f26c28b9bc0 | 314 | void fillcircle(uint8_t x0, uint8_t y0, uint8_t radius, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 315 | |
JackB | 10:a640680b5309 | 316 | /** Draw triangle, triangle coordinates |
JackB | 10:a640680b5309 | 317 | * |
JackB | 10:a640680b5309 | 318 | * @param x1 corner 1 coordinate, x-axis |
JackB | 10:a640680b5309 | 319 | * @param y1 corner 1 coordinate, y-axis |
JackB | 10:a640680b5309 | 320 | * @param x2 corner 2 coordinate, x-axis |
JackB | 10:a640680b5309 | 321 | * @param y2 corner 2 coordinate, y-axis |
JackB | 10:a640680b5309 | 322 | * @param x3 corner 3 coordinate, x-axis |
JackB | 10:a640680b5309 | 323 | * @param y3 corner 3 coordinate, y-axis |
JackB | 10:a640680b5309 | 324 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 325 | * |
JackB | 10:a640680b5309 | 326 | */ |
JackB | 5:dad648238df3 | 327 | void triangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 328 | |
JackB | 10:a640680b5309 | 329 | /** Draw solid triangle, triangle coordinates |
JackB | 10:a640680b5309 | 330 | * |
JackB | 10:a640680b5309 | 331 | * @param x1 corner 1 coordinate, x-axis |
JackB | 10:a640680b5309 | 332 | * @param y1 corner 1 coordinate, y-axis |
JackB | 10:a640680b5309 | 333 | * @param x2 corner 2 coordinate, x-axis |
JackB | 10:a640680b5309 | 334 | * @param y2 corner 2 coordinate, y-axis |
JackB | 10:a640680b5309 | 335 | * @param x3 corner 3 coordinate, x-axis |
JackB | 10:a640680b5309 | 336 | * @param y3 corner 3 coordinate, y-axis |
JackB | 10:a640680b5309 | 337 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 338 | * |
JackB | 10:a640680b5309 | 339 | */ |
JackB | 5:dad648238df3 | 340 | void filltriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color); |
JackB | 0:cc1fb45bc3ad | 341 | |
JackB | 10:a640680b5309 | 342 | /** Draw line/filled rectangle, rectangle coordinates |
JackB | 10:a640680b5309 | 343 | * |
JackB | 10:a640680b5309 | 344 | * @param x1 top left coordinate, x-axis |
JackB | 10:a640680b5309 | 345 | * @param y1 top left coordinate, y-axis |
JackB | 10:a640680b5309 | 346 | * @param x2 bottom right coordinate, x-axis |
JackB | 10:a640680b5309 | 347 | * @param y2 bottom right coordinate, y-axis |
JackB | 10:a640680b5309 | 348 | * @param rad defines the redius of the circle |
JackB | 10:a640680b5309 | 349 | * @param fill fill yes or no |
JackB | 10:a640680b5309 | 350 | * @param color 16-bit color |
JackB | 10:a640680b5309 | 351 | * |
JackB | 10:a640680b5309 | 352 | */ |
JackB | 8:a569bc50b552 | 353 | void roundrect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t rad, bool fill, uint16_t color); |
JackB | 8:a569bc50b552 | 354 | |
JackB | 10:a640680b5309 | 355 | /** Calculate 16-bit color from 8-bit Red-Green-Blue components |
JackB | 10:a640680b5309 | 356 | * |
JackB | 10:a640680b5309 | 357 | * @param red red component, 0x00..0xff |
JackB | 10:a640680b5309 | 358 | * @param green green component, 0x00..0xff |
JackB | 10:a640680b5309 | 359 | * @param blue blue component, 0x00..0xff |
JackB | 10:a640680b5309 | 360 | * @return 16-bit color |
JackB | 10:a640680b5309 | 361 | * |
JackB | 10:a640680b5309 | 362 | */ |
JackB | 6:0f26c28b9bc0 | 363 | uint16_t setColor(uint8_t red, uint8_t green, uint8_t blue); |
JackB | 6:0f26c28b9bc0 | 364 | |
JackB | 10:a640680b5309 | 365 | /** Calculate 8-bit Red-Green-Blue components from 16-bit color |
JackB | 10:a640680b5309 | 366 | * |
JackB | 10:a640680b5309 | 367 | * @param rgb 16-bit color |
JackB | 10:a640680b5309 | 368 | * @param red red component, 0x00..0xff |
JackB | 10:a640680b5309 | 369 | * @param green green component, 0x00..0xff |
JackB | 10:a640680b5309 | 370 | * @param blue blue component, 0x00..0xff |
JackB | 10:a640680b5309 | 371 | * |
JackB | 10:a640680b5309 | 372 | */ |
JackB | 6:0f26c28b9bc0 | 373 | void splitColor(uint16_t rgb, uint8_t &red, uint8_t &green, uint8_t &blue); |
JackB | 6:0f26c28b9bc0 | 374 | |
JackB | 10:a640680b5309 | 375 | /** Set current font |
JackB | 10:a640680b5309 | 376 | * |
JackB | 10:a640680b5309 | 377 | * @param font Font name |
JackB | 10:a640680b5309 | 378 | * |
JackB | 10:a640680b5309 | 379 | */ |
JackB | 0:cc1fb45bc3ad | 380 | void setFont(uint8_t* font); |
JackB | 0:cc1fb45bc3ad | 381 | |
JackB | 6:0f26c28b9bc0 | 382 | /** put a char on the screen |
JackB | 6:0f26c28b9bc0 | 383 | * |
JackB | 6:0f26c28b9bc0 | 384 | * @param value char to print |
JackB | 6:0f26c28b9bc0 | 385 | * @returns printed char |
JackB | 6:0f26c28b9bc0 | 386 | * |
JackB | 6:0f26c28b9bc0 | 387 | */ |
JackB | 6:0f26c28b9bc0 | 388 | virtual int putc(int value); |
JackB | 0:cc1fb45bc3ad | 389 | |
JackB | 6:0f26c28b9bc0 | 390 | /** draw a character on given position out of the active font to the TFT |
JackB | 6:0f26c28b9bc0 | 391 | * |
JackB | 6:0f26c28b9bc0 | 392 | * @param x x-position of char (top left) |
JackB | 6:0f26c28b9bc0 | 393 | * @param y y-position |
JackB | 6:0f26c28b9bc0 | 394 | * @param c char to print |
JackB | 6:0f26c28b9bc0 | 395 | * |
JackB | 6:0f26c28b9bc0 | 396 | */ |
JackB | 0:cc1fb45bc3ad | 397 | void character(int x, int y, int c); |
JackB | 0:cc1fb45bc3ad | 398 | |
JackB | 10:a640680b5309 | 399 | /** Set text foreground color |
JackB | 10:a640680b5309 | 400 | * |
JackB | 10:a640680b5309 | 401 | * @param color |
JackB | 10:a640680b5309 | 402 | * |
JackB | 10:a640680b5309 | 403 | */ |
JackB | 10:a640680b5309 | 404 | void foreground(uint16_t color); |
JackB | 10:a640680b5309 | 405 | |
JackB | 10:a640680b5309 | 406 | /** Set text background color |
JackB | 10:a640680b5309 | 407 | * |
JackB | 10:a640680b5309 | 408 | * @param color |
JackB | 10:a640680b5309 | 409 | * |
JackB | 10:a640680b5309 | 410 | */ |
JackB | 10:a640680b5309 | 411 | void background(uint16_t color); |
JackB | 0:cc1fb45bc3ad | 412 | |
JackB | 10:a640680b5309 | 413 | /** Set grapical cursor position |
JackB | 10:a640680b5309 | 414 | * |
JackB | 10:a640680b5309 | 415 | * @param x |
JackB | 10:a640680b5309 | 416 | * @param y |
JackB | 10:a640680b5309 | 417 | * |
JackB | 10:a640680b5309 | 418 | */ |
JackB | 0:cc1fb45bc3ad | 419 | void locate(int x, int y); |
JackB | 10:a640680b5309 | 420 | |
JackB | 10:a640680b5309 | 421 | /** Set text cursor position |
JackB | 10:a640680b5309 | 422 | * |
JackB | 10:a640680b5309 | 423 | * @param x |
JackB | 10:a640680b5309 | 424 | * @param y |
JackB | 10:a640680b5309 | 425 | * |
JackB | 10:a640680b5309 | 426 | */ |
JackB | 0:cc1fb45bc3ad | 427 | void gotoxy(int x, int y); |
JackB | 10:a640680b5309 | 428 | |
JackB | 10:a640680b5309 | 429 | /** Set text cursor at 0,0 |
JackB | 10:a640680b5309 | 430 | * |
JackB | 10:a640680b5309 | 431 | */ |
JackB | 0:cc1fb45bc3ad | 432 | void home(void); |
JackB | 10:a640680b5309 | 433 | |
JackB | 10:a640680b5309 | 434 | /** Set spacing in pixels between text lines |
JackB | 10:a640680b5309 | 435 | * |
JackB | 10:a640680b5309 | 436 | * @param line_spacing spacing in pixels between text lines |
JackB | 10:a640680b5309 | 437 | * |
JackB | 10:a640680b5309 | 438 | */ |
JackB | 0:cc1fb45bc3ad | 439 | void linespacing(int line_spacing); |
JackB | 0:cc1fb45bc3ad | 440 | |
JackB | 0:cc1fb45bc3ad | 441 | /** calculate the max number of char in a line |
JackB | 0:cc1fb45bc3ad | 442 | * |
JackB | 0:cc1fb45bc3ad | 443 | * @returns max columns |
JackB | 0:cc1fb45bc3ad | 444 | * depends on actual font size |
JackB | 0:cc1fb45bc3ad | 445 | * |
JackB | 0:cc1fb45bc3ad | 446 | */ |
JackB | 0:cc1fb45bc3ad | 447 | virtual int columns(void); |
JackB | 0:cc1fb45bc3ad | 448 | |
JackB | 0:cc1fb45bc3ad | 449 | /** calculate the max number of columns |
JackB | 0:cc1fb45bc3ad | 450 | * |
JackB | 0:cc1fb45bc3ad | 451 | * @returns max column |
JackB | 0:cc1fb45bc3ad | 452 | * depends on actual font size |
JackB | 0:cc1fb45bc3ad | 453 | * |
JackB | 0:cc1fb45bc3ad | 454 | */ |
JackB | 0:cc1fb45bc3ad | 455 | virtual int rows(void); |
JackB | 0:cc1fb45bc3ad | 456 | |
JackB | 10:a640680b5309 | 457 | /** Make an ascii string from an unicode string |
JackB | 10:a640680b5309 | 458 | * |
JackB | 10:a640680b5309 | 459 | * @param uni_str |
JackB | 10:a640680b5309 | 460 | * @param ascii_str |
JackB | 10:a640680b5309 | 461 | * |
JackB | 10:a640680b5309 | 462 | */ |
JackB | 0:cc1fb45bc3ad | 463 | void unicode2ascii(char *uni_str, char *ascii_str); |
JackB | 0:cc1fb45bc3ad | 464 | |
JackB | 0:cc1fb45bc3ad | 465 | void window (unsigned int x, unsigned int y, unsigned int w, unsigned int h); |
JackB | 0:cc1fb45bc3ad | 466 | |
JackB | 0:cc1fb45bc3ad | 467 | |
JackB | 0:cc1fb45bc3ad | 468 | private: |
JackB | 0:cc1fb45bc3ad | 469 | SPI spi; |
JackB | 0:cc1fb45bc3ad | 470 | |
JackB | 0:cc1fb45bc3ad | 471 | unsigned char* font; |
JackB | 0:cc1fb45bc3ad | 472 | unsigned int char_x; |
JackB | 0:cc1fb45bc3ad | 473 | unsigned int char_y; |
JackB | 0:cc1fb45bc3ad | 474 | unsigned int char_line_spacing; |
JackB | 0:cc1fb45bc3ad | 475 | |
JackB | 0:cc1fb45bc3ad | 476 | // colours |
JackB | 0:cc1fb45bc3ad | 477 | uint16_t _foreground; |
JackB | 0:cc1fb45bc3ad | 478 | uint16_t _background; |
JackB | 0:cc1fb45bc3ad | 479 | |
JackB | 10:a640680b5309 | 480 | /** Swap two values |
JackB | 10:a640680b5309 | 481 | * |
JackB | 10:a640680b5309 | 482 | * @param a b |
JackB | 10:a640680b5309 | 483 | * @param a b |
JackB | 10:a640680b5309 | 484 | * |
JackB | 10:a640680b5309 | 485 | */ |
JackB | 0:cc1fb45bc3ad | 486 | void _swap(uint16_t &a, uint16_t &b); |
JackB | 10:a640680b5309 | 487 | |
JackB | 10:a640680b5309 | 488 | /** Maximize window to entire screen |
JackB | 10:a640680b5309 | 489 | * |
JackB | 10:a640680b5309 | 490 | */ |
JackB | 0:cc1fb45bc3ad | 491 | void _setWindowMax(void); |
JackB | 10:a640680b5309 | 492 | |
JackB | 10:a640680b5309 | 493 | /** Set window |
JackB | 10:a640680b5309 | 494 | * |
JackB | 10:a640680b5309 | 495 | * @param x0 |
JackB | 10:a640680b5309 | 496 | * @param y0 |
JackB | 10:a640680b5309 | 497 | * @param x1 |
JackB | 10:a640680b5309 | 498 | * @param y1 |
JackB | 10:a640680b5309 | 499 | * |
JackB | 10:a640680b5309 | 500 | */ |
JackB | 0:cc1fb45bc3ad | 501 | void _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); |
JackB | 10:a640680b5309 | 502 | |
JackB | 10:a640680b5309 | 503 | /** Set coordinates |
JackB | 10:a640680b5309 | 504 | * |
JackB | 10:a640680b5309 | 505 | * @param x |
JackB | 10:a640680b5309 | 506 | * @param y |
JackB | 10:a640680b5309 | 507 | * |
JackB | 10:a640680b5309 | 508 | */ |
JackB | 10:a640680b5309 | 509 | void _orientCoordinates(uint16_t &x, uint16_t &y); |
JackB | 10:a640680b5309 | 510 | |
JackB | 10:a640680b5309 | 511 | /** Write register |
JackB | 10:a640680b5309 | 512 | * |
JackB | 10:a640680b5309 | 513 | * @param uint16_t register |
JackB | 10:a640680b5309 | 514 | * @param uint16_t data |
JackB | 10:a640680b5309 | 515 | * |
JackB | 10:a640680b5309 | 516 | */ |
JackB | 0:cc1fb45bc3ad | 517 | void _writeRegister(uint16_t reg, uint16_t data); |
JackB | 0:cc1fb45bc3ad | 518 | |
JackB | 10:a640680b5309 | 519 | /** Start writing data |
JackB | 10:a640680b5309 | 520 | * |
JackB | 10:a640680b5309 | 521 | */ |
JackB | 0:cc1fb45bc3ad | 522 | void _startData(void); |
JackB | 10:a640680b5309 | 523 | |
JackB | 10:a640680b5309 | 524 | /** End writing data |
JackB | 10:a640680b5309 | 525 | * |
JackB | 10:a640680b5309 | 526 | */ |
JackB | 0:cc1fb45bc3ad | 527 | void _endData(void); |
JackB | 10:a640680b5309 | 528 | |
JackB | 10:a640680b5309 | 529 | /** Write data |
JackB | 10:a640680b5309 | 530 | * |
JackB | 10:a640680b5309 | 531 | * @param uint16_t data |
JackB | 10:a640680b5309 | 532 | * |
JackB | 10:a640680b5309 | 533 | */ |
JackB | 0:cc1fb45bc3ad | 534 | void _writeData(uint16_t data); |
JackB | 10:a640680b5309 | 535 | |
JackB | 10:a640680b5309 | 536 | /** Write a command |
JackB | 10:a640680b5309 | 537 | * |
JackB | 10:a640680b5309 | 538 | * @param HI |
JackB | 10:a640680b5309 | 539 | * @param LO |
JackB | 10:a640680b5309 | 540 | * |
JackB | 10:a640680b5309 | 541 | */ |
JackB | 0:cc1fb45bc3ad | 542 | void _writeCommand(uint8_t HI, uint8_t LO); |
JackB | 0:cc1fb45bc3ad | 543 | |
JackB | 0:cc1fb45bc3ad | 544 | float _brightness; |
JackB | 0:cc1fb45bc3ad | 545 | |
JackB | 9:680f6c9940b3 | 546 | uint16_t _entryMode; |
JackB | 9:680f6c9940b3 | 547 | |
JackB | 0:cc1fb45bc3ad | 548 | uint16_t _maxX, _maxY; |
JackB | 0:cc1fb45bc3ad | 549 | |
JackB | 0:cc1fb45bc3ad | 550 | DigitalOut _rst; |
JackB | 0:cc1fb45bc3ad | 551 | DigitalOut _rs; |
JackB | 0:cc1fb45bc3ad | 552 | DigitalOut _cs; |
JackB | 0:cc1fb45bc3ad | 553 | |
JackB | 0:cc1fb45bc3ad | 554 | uint8_t _orientation; |
JackB | 0:cc1fb45bc3ad | 555 | |
JackB | 0:cc1fb45bc3ad | 556 | PwmOut _led; |
JackB | 0:cc1fb45bc3ad | 557 | |
JackB | 0:cc1fb45bc3ad | 558 | // character location |
JackB | 0:cc1fb45bc3ad | 559 | uint16_t _column; |
JackB | 0:cc1fb45bc3ad | 560 | uint16_t _row; |
JackB | 0:cc1fb45bc3ad | 561 | char *_path; |
JackB | 0:cc1fb45bc3ad | 562 | |
JackB | 0:cc1fb45bc3ad | 563 | protected: |
JackB | 0:cc1fb45bc3ad | 564 | //used by printf - supply a new _putc virtual function for the new device |
JackB | 0:cc1fb45bc3ad | 565 | virtual int _putc(int c) { |
JackB | 0:cc1fb45bc3ad | 566 | putc(c); //your new LCD put to print an ASCII character on LCD |
JackB | 0:cc1fb45bc3ad | 567 | return 0; |
JackB | 0:cc1fb45bc3ad | 568 | }; |
JackB | 0:cc1fb45bc3ad | 569 | //assuming no reads from LCD |
JackB | 0:cc1fb45bc3ad | 570 | virtual int _getc() { |
JackB | 0:cc1fb45bc3ad | 571 | return -1; |
JackB | 0:cc1fb45bc3ad | 572 | } |
JackB | 0:cc1fb45bc3ad | 573 | |
JackB | 0:cc1fb45bc3ad | 574 | }; |
JackB | 0:cc1fb45bc3ad | 575 | |
JackB | 0:cc1fb45bc3ad | 576 | #endif |