Aitendo OLED device driver library.
Dependents: AitendoOLED_TestProgram
AitendoOLED.cpp@1:4b819d5ea905, 2010-12-19 (annotated)
- Committer:
- shintamainjp
- Date:
- Sun Dec 19 07:11:08 2010 +0000
- Revision:
- 1:4b819d5ea905
- Parent:
- 0:5062b7730235
- Child:
- 2:74c60a959299
Bug fixed.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:5062b7730235 | 1 | /** |
shintamainjp | 0:5062b7730235 | 2 | * ============================================================================= |
shintamainjp | 0:5062b7730235 | 3 | * Aitendo OLED device driver library. (Version 0.0.1) |
shintamainjp | 0:5062b7730235 | 4 | * |
shintamainjp | 0:5062b7730235 | 5 | * [The product] |
shintamainjp | 0:5062b7730235 | 6 | * OLED-2P-095BWNN-SPI : http://www.aitendo.co.jp/product/2099 |
shintamainjp | 0:5062b7730235 | 7 | * ALO-095BWNN-J9 : http://www.aitendo.co.jp/product/1449 |
shintamainjp | 0:5062b7730235 | 8 | * |
shintamainjp | 0:5062b7730235 | 9 | * [References] |
shintamainjp | 0:5062b7730235 | 10 | * http://serdisplib.sourceforge.net/ser/doc/Treiber_IC-SSD1332_OLED_96x64_COLOR.pdf |
shintamainjp | 0:5062b7730235 | 11 | * ============================================================================= |
shintamainjp | 0:5062b7730235 | 12 | * Copyright (c) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 0:5062b7730235 | 13 | * |
shintamainjp | 0:5062b7730235 | 14 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
shintamainjp | 0:5062b7730235 | 15 | * of this software and associated documentation files (the "Software"), to deal |
shintamainjp | 0:5062b7730235 | 16 | * in the Software without restriction, including without limitation the rights |
shintamainjp | 0:5062b7730235 | 17 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
shintamainjp | 0:5062b7730235 | 18 | * copies of the Software, and to permit persons to whom the Software is |
shintamainjp | 0:5062b7730235 | 19 | * furnished to do so, subject to the following conditions: |
shintamainjp | 0:5062b7730235 | 20 | * |
shintamainjp | 0:5062b7730235 | 21 | * The above copyright notice and this permission notice shall be included in |
shintamainjp | 0:5062b7730235 | 22 | * all copies or substantial portions of the Software. |
shintamainjp | 0:5062b7730235 | 23 | * |
shintamainjp | 0:5062b7730235 | 24 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
shintamainjp | 0:5062b7730235 | 25 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
shintamainjp | 0:5062b7730235 | 26 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
shintamainjp | 0:5062b7730235 | 27 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
shintamainjp | 0:5062b7730235 | 28 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
shintamainjp | 0:5062b7730235 | 29 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
shintamainjp | 0:5062b7730235 | 30 | * THE SOFTWARE. |
shintamainjp | 0:5062b7730235 | 31 | * ============================================================================= |
shintamainjp | 0:5062b7730235 | 32 | */ |
shintamainjp | 0:5062b7730235 | 33 | #include "AitendoOLED.h" |
shintamainjp | 0:5062b7730235 | 34 | |
shintamainjp | 0:5062b7730235 | 35 | #define RES_ENA() io_res = 0 |
shintamainjp | 0:5062b7730235 | 36 | #define RES_DIS() io_res = 1 |
shintamainjp | 0:5062b7730235 | 37 | #define CS_ENA() io_cs = 0 |
shintamainjp | 0:5062b7730235 | 38 | #define CS_DIS() io_cs = 1 |
shintamainjp | 0:5062b7730235 | 39 | #define DC_CMD() io_dc = 0 |
shintamainjp | 0:5062b7730235 | 40 | #define DC_DAT() io_dc = 1 |
shintamainjp | 0:5062b7730235 | 41 | #define SPI_WRITE(a) io_spi.write((a)) |
shintamainjp | 0:5062b7730235 | 42 | #define SPI_READ() io_spi.write(0x00) |
shintamainjp | 0:5062b7730235 | 43 | #define swap(a,b) {int c=a;a=b;b=c;} |
shintamainjp | 0:5062b7730235 | 44 | #define waitDone() while(1) {uint8_t s = readStatusRegister();if ((s & 0x80) != 0) {break;}} |
shintamainjp | 0:5062b7730235 | 45 | |
shintamainjp | 0:5062b7730235 | 46 | /** |
shintamainjp | 0:5062b7730235 | 47 | * Create. |
shintamainjp | 0:5062b7730235 | 48 | * |
shintamainjp | 0:5062b7730235 | 49 | * @param pin_mosi MOSI. |
shintamainjp | 0:5062b7730235 | 50 | * @param pin miso MISO. |
shintamainjp | 0:5062b7730235 | 51 | * @param pin_sclk SCLK. |
shintamainjp | 0:5062b7730235 | 52 | * @param pin_res RES. |
shintamainjp | 0:5062b7730235 | 53 | * @param pin_cs CS. |
shintamainjp | 0:5062b7730235 | 54 | * @param pin_dc DC. |
shintamainjp | 0:5062b7730235 | 55 | */ |
shintamainjp | 0:5062b7730235 | 56 | AitendoOLED::AitendoOLED( |
shintamainjp | 0:5062b7730235 | 57 | PinName pin_mosi, |
shintamainjp | 0:5062b7730235 | 58 | PinName pin_miso, |
shintamainjp | 0:5062b7730235 | 59 | PinName pin_sclk, |
shintamainjp | 0:5062b7730235 | 60 | PinName pin_res, |
shintamainjp | 0:5062b7730235 | 61 | PinName pin_cs, |
shintamainjp | 0:5062b7730235 | 62 | PinName pin_dc) |
shintamainjp | 0:5062b7730235 | 63 | : |
shintamainjp | 0:5062b7730235 | 64 | io_spi(pin_mosi, pin_miso, pin_sclk), |
shintamainjp | 0:5062b7730235 | 65 | io_res(pin_res), |
shintamainjp | 0:5062b7730235 | 66 | io_cs(pin_cs), |
shintamainjp | 0:5062b7730235 | 67 | io_dc(pin_dc) { |
shintamainjp | 0:5062b7730235 | 68 | io_spi.format(8, 0); |
shintamainjp | 0:5062b7730235 | 69 | #if 0 |
shintamainjp | 0:5062b7730235 | 70 | io_spi.frequency(4000000); |
shintamainjp | 0:5062b7730235 | 71 | #else |
shintamainjp | 0:5062b7730235 | 72 | io_spi.frequency(40000000); |
shintamainjp | 0:5062b7730235 | 73 | #endif |
shintamainjp | 0:5062b7730235 | 74 | reset(); |
shintamainjp | 0:5062b7730235 | 75 | } |
shintamainjp | 0:5062b7730235 | 76 | |
shintamainjp | 0:5062b7730235 | 77 | /** |
shintamainjp | 0:5062b7730235 | 78 | * Dispose. |
shintamainjp | 0:5062b7730235 | 79 | */ |
shintamainjp | 0:5062b7730235 | 80 | AitendoOLED::~AitendoOLED() { |
shintamainjp | 0:5062b7730235 | 81 | } |
shintamainjp | 0:5062b7730235 | 82 | |
shintamainjp | 0:5062b7730235 | 83 | /** |
shintamainjp | 0:5062b7730235 | 84 | * Draw pixel. |
shintamainjp | 0:5062b7730235 | 85 | * |
shintamainjp | 0:5062b7730235 | 86 | * @param x X. |
shintamainjp | 0:5062b7730235 | 87 | * @param y Y. |
shintamainjp | 0:5062b7730235 | 88 | * @param c Color. |
shintamainjp | 0:5062b7730235 | 89 | */ |
shintamainjp | 0:5062b7730235 | 90 | void AitendoOLED::drawPixel(int x, int y, Color c) { |
shintamainjp | 0:5062b7730235 | 91 | setColumnAddress(x, x); |
shintamainjp | 0:5062b7730235 | 92 | setRowAddress(y, y); |
shintamainjp | 0:5062b7730235 | 93 | c.b = c.b >> 3; |
shintamainjp | 0:5062b7730235 | 94 | c.g = c.g >> 2; |
shintamainjp | 0:5062b7730235 | 95 | c.r = c.r >> 3; |
shintamainjp | 0:5062b7730235 | 96 | writeData((((c.b << 3) & 0xF8) | ((c.g >> 3) & 0x07))); |
shintamainjp | 0:5062b7730235 | 97 | writeData((((c.g << 5) & 0xE0) | ((c.r >> 0) & 0x1F))); |
shintamainjp | 0:5062b7730235 | 98 | } |
shintamainjp | 0:5062b7730235 | 99 | |
shintamainjp | 0:5062b7730235 | 100 | /** |
shintamainjp | 0:5062b7730235 | 101 | * Draw line. |
shintamainjp | 0:5062b7730235 | 102 | * |
shintamainjp | 0:5062b7730235 | 103 | * @param x1 X1. |
shintamainjp | 0:5062b7730235 | 104 | * @param y1 Y1. |
shintamainjp | 0:5062b7730235 | 105 | * @param x2 X2. |
shintamainjp | 0:5062b7730235 | 106 | * @param y2 Y2. |
shintamainjp | 0:5062b7730235 | 107 | * @param c Color. |
shintamainjp | 0:5062b7730235 | 108 | */ |
shintamainjp | 0:5062b7730235 | 109 | void AitendoOLED::drawLine(int x1, int y1, int x2, int y2, Color c) { |
shintamainjp | 0:5062b7730235 | 110 | #if 0 |
shintamainjp | 0:5062b7730235 | 111 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 112 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 113 | SPI_WRITE(0x21); |
shintamainjp | 0:5062b7730235 | 114 | SPI_WRITE(x1); |
shintamainjp | 0:5062b7730235 | 115 | SPI_WRITE(y1); |
shintamainjp | 0:5062b7730235 | 116 | SPI_WRITE(x2); |
shintamainjp | 0:5062b7730235 | 117 | SPI_WRITE(y2); |
shintamainjp | 1:4b819d5ea905 | 118 | SPI_WRITE(c.b >> 3); |
shintamainjp | 1:4b819d5ea905 | 119 | SPI_WRITE(c.g >> 2); |
shintamainjp | 1:4b819d5ea905 | 120 | SPI_WRITE(c.r >> 3); |
shintamainjp | 0:5062b7730235 | 121 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 122 | waitDone(); |
shintamainjp | 0:5062b7730235 | 123 | #else |
shintamainjp | 0:5062b7730235 | 124 | /* |
shintamainjp | 0:5062b7730235 | 125 | * Bresenham's line algorithm |
shintamainjp | 0:5062b7730235 | 126 | */ |
shintamainjp | 0:5062b7730235 | 127 | bool steep = abs(y2 - y1) > abs(x2 - x1); |
shintamainjp | 0:5062b7730235 | 128 | if (steep) { |
shintamainjp | 0:5062b7730235 | 129 | swap(x1, y1); |
shintamainjp | 0:5062b7730235 | 130 | swap(x2, y2); |
shintamainjp | 0:5062b7730235 | 131 | } |
shintamainjp | 0:5062b7730235 | 132 | if (x1 > x2) { |
shintamainjp | 0:5062b7730235 | 133 | swap(x1, x2); |
shintamainjp | 0:5062b7730235 | 134 | swap(y1, y2); |
shintamainjp | 0:5062b7730235 | 135 | } |
shintamainjp | 0:5062b7730235 | 136 | int deltax = x2 - x1; |
shintamainjp | 0:5062b7730235 | 137 | int deltay = abs(y2 - y1); |
shintamainjp | 0:5062b7730235 | 138 | int error = deltax / 2; |
shintamainjp | 0:5062b7730235 | 139 | int ystep; |
shintamainjp | 0:5062b7730235 | 140 | int y = y1; |
shintamainjp | 0:5062b7730235 | 141 | if (y1 < y2) { |
shintamainjp | 0:5062b7730235 | 142 | ystep = 1; |
shintamainjp | 0:5062b7730235 | 143 | } else { |
shintamainjp | 0:5062b7730235 | 144 | ystep = -1; |
shintamainjp | 0:5062b7730235 | 145 | } |
shintamainjp | 0:5062b7730235 | 146 | for (int x = x1; x <= x2; x++) { |
shintamainjp | 0:5062b7730235 | 147 | if (steep) { |
shintamainjp | 0:5062b7730235 | 148 | drawPixel(y, x, c); |
shintamainjp | 0:5062b7730235 | 149 | } else { |
shintamainjp | 0:5062b7730235 | 150 | drawPixel(x, y, c); |
shintamainjp | 0:5062b7730235 | 151 | } |
shintamainjp | 0:5062b7730235 | 152 | error = error - deltay; |
shintamainjp | 0:5062b7730235 | 153 | if (error < 0) { |
shintamainjp | 0:5062b7730235 | 154 | y = y + ystep; |
shintamainjp | 0:5062b7730235 | 155 | error = error + deltax; |
shintamainjp | 0:5062b7730235 | 156 | } |
shintamainjp | 0:5062b7730235 | 157 | } |
shintamainjp | 0:5062b7730235 | 158 | #endif |
shintamainjp | 0:5062b7730235 | 159 | } |
shintamainjp | 0:5062b7730235 | 160 | |
shintamainjp | 0:5062b7730235 | 161 | /** |
shintamainjp | 0:5062b7730235 | 162 | * Fill box. |
shintamainjp | 0:5062b7730235 | 163 | * |
shintamainjp | 0:5062b7730235 | 164 | * @param x1 X1. |
shintamainjp | 0:5062b7730235 | 165 | * @param y1 Y1. |
shintamainjp | 0:5062b7730235 | 166 | * @param x2 X2. |
shintamainjp | 0:5062b7730235 | 167 | * @param y2 Y2. |
shintamainjp | 0:5062b7730235 | 168 | * @param c1 Color1. |
shintamainjp | 0:5062b7730235 | 169 | * @param c2 Color2. |
shintamainjp | 0:5062b7730235 | 170 | */ |
shintamainjp | 0:5062b7730235 | 171 | void AitendoOLED::fillBox(int x1, int y1, int x2, int y2, Color c1, Color c2) { |
shintamainjp | 0:5062b7730235 | 172 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 173 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 174 | SPI_WRITE(0x22); |
shintamainjp | 0:5062b7730235 | 175 | SPI_WRITE(x1); |
shintamainjp | 0:5062b7730235 | 176 | SPI_WRITE(y1); |
shintamainjp | 0:5062b7730235 | 177 | SPI_WRITE(x2); |
shintamainjp | 0:5062b7730235 | 178 | SPI_WRITE(y2); |
shintamainjp | 1:4b819d5ea905 | 179 | SPI_WRITE(c1.b >> 3); |
shintamainjp | 1:4b819d5ea905 | 180 | SPI_WRITE(c1.g >> 2); |
shintamainjp | 1:4b819d5ea905 | 181 | SPI_WRITE(c1.r >> 3); |
shintamainjp | 1:4b819d5ea905 | 182 | SPI_WRITE(c2.b >> 3); |
shintamainjp | 1:4b819d5ea905 | 183 | SPI_WRITE(c2.g >> 2); |
shintamainjp | 1:4b819d5ea905 | 184 | SPI_WRITE(c2.r >> 3); |
shintamainjp | 0:5062b7730235 | 185 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 186 | waitDone(); |
shintamainjp | 0:5062b7730235 | 187 | } |
shintamainjp | 0:5062b7730235 | 188 | |
shintamainjp | 0:5062b7730235 | 189 | /** |
shintamainjp | 0:5062b7730235 | 190 | * Copy. |
shintamainjp | 0:5062b7730235 | 191 | * |
shintamainjp | 0:5062b7730235 | 192 | * @param x1 X1. |
shintamainjp | 0:5062b7730235 | 193 | * @param y1 Y1. |
shintamainjp | 0:5062b7730235 | 194 | * @param x2 X2. |
shintamainjp | 0:5062b7730235 | 195 | * @param y2 Y2. |
shintamainjp | 0:5062b7730235 | 196 | * @param nx X of the destination. |
shintamainjp | 0:5062b7730235 | 197 | * @param ny Y of the destination. |
shintamainjp | 0:5062b7730235 | 198 | */ |
shintamainjp | 0:5062b7730235 | 199 | void AitendoOLED::copy(int x1, int y1, int x2, int y2, int nx, int ny) { |
shintamainjp | 0:5062b7730235 | 200 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 201 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 202 | SPI_WRITE(0x23); |
shintamainjp | 0:5062b7730235 | 203 | SPI_WRITE(x1); |
shintamainjp | 0:5062b7730235 | 204 | SPI_WRITE(y1); |
shintamainjp | 0:5062b7730235 | 205 | SPI_WRITE(x2); |
shintamainjp | 0:5062b7730235 | 206 | SPI_WRITE(y2); |
shintamainjp | 0:5062b7730235 | 207 | SPI_WRITE(nx); |
shintamainjp | 0:5062b7730235 | 208 | SPI_WRITE(ny); |
shintamainjp | 0:5062b7730235 | 209 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 210 | waitDone(); |
shintamainjp | 0:5062b7730235 | 211 | } |
shintamainjp | 0:5062b7730235 | 212 | |
shintamainjp | 0:5062b7730235 | 213 | /** |
shintamainjp | 0:5062b7730235 | 214 | * Darker. |
shintamainjp | 0:5062b7730235 | 215 | * |
shintamainjp | 0:5062b7730235 | 216 | * @param x1 X1. |
shintamainjp | 0:5062b7730235 | 217 | * @param y1 Y1. |
shintamainjp | 0:5062b7730235 | 218 | * @param x2 X2. |
shintamainjp | 0:5062b7730235 | 219 | * @param y2 Y2. |
shintamainjp | 0:5062b7730235 | 220 | */ |
shintamainjp | 0:5062b7730235 | 221 | void AitendoOLED::darker(int x1, int y1, int x2, int y2) { |
shintamainjp | 0:5062b7730235 | 222 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 223 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 224 | SPI_WRITE(0x24); |
shintamainjp | 0:5062b7730235 | 225 | SPI_WRITE(x1); |
shintamainjp | 0:5062b7730235 | 226 | SPI_WRITE(y1); |
shintamainjp | 0:5062b7730235 | 227 | SPI_WRITE(x2); |
shintamainjp | 0:5062b7730235 | 228 | SPI_WRITE(y2); |
shintamainjp | 0:5062b7730235 | 229 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 230 | waitDone(); |
shintamainjp | 0:5062b7730235 | 231 | } |
shintamainjp | 0:5062b7730235 | 232 | |
shintamainjp | 0:5062b7730235 | 233 | /** |
shintamainjp | 0:5062b7730235 | 234 | * Clear. |
shintamainjp | 0:5062b7730235 | 235 | * |
shintamainjp | 0:5062b7730235 | 236 | * @param x1 X1. |
shintamainjp | 0:5062b7730235 | 237 | * @param y1 Y1. |
shintamainjp | 0:5062b7730235 | 238 | * @param x2 X2. |
shintamainjp | 0:5062b7730235 | 239 | * @param y2 Y2. |
shintamainjp | 0:5062b7730235 | 240 | */ |
shintamainjp | 0:5062b7730235 | 241 | void AitendoOLED::clear(int x1, int y1, int x2, int y2) { |
shintamainjp | 0:5062b7730235 | 242 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 243 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 244 | SPI_WRITE(0x25); |
shintamainjp | 0:5062b7730235 | 245 | SPI_WRITE(x1); |
shintamainjp | 0:5062b7730235 | 246 | SPI_WRITE(y1); |
shintamainjp | 0:5062b7730235 | 247 | SPI_WRITE(x2); |
shintamainjp | 0:5062b7730235 | 248 | SPI_WRITE(y2); |
shintamainjp | 0:5062b7730235 | 249 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 250 | waitDone(); |
shintamainjp | 0:5062b7730235 | 251 | } |
shintamainjp | 0:5062b7730235 | 252 | |
shintamainjp | 0:5062b7730235 | 253 | /** |
shintamainjp | 0:5062b7730235 | 254 | * Reset. |
shintamainjp | 0:5062b7730235 | 255 | */ |
shintamainjp | 0:5062b7730235 | 256 | void AitendoOLED::reset() { |
shintamainjp | 0:5062b7730235 | 257 | |
shintamainjp | 0:5062b7730235 | 258 | RES_ENA(); |
shintamainjp | 0:5062b7730235 | 259 | wait_ms(200); |
shintamainjp | 0:5062b7730235 | 260 | RES_DIS(); |
shintamainjp | 0:5062b7730235 | 261 | wait_ms(200); |
shintamainjp | 0:5062b7730235 | 262 | |
shintamainjp | 0:5062b7730235 | 263 | setDisplayOnOff(false); |
shintamainjp | 0:5062b7730235 | 264 | setRowAddress(0, 63); |
shintamainjp | 0:5062b7730235 | 265 | setColumnAddress(0, 95); |
shintamainjp | 0:5062b7730235 | 266 | setRemapAndDataFormat(0x70); |
shintamainjp | 0:5062b7730235 | 267 | setDisplayStartLine(0); |
shintamainjp | 0:5062b7730235 | 268 | setDisplayOffset(0); |
shintamainjp | 0:5062b7730235 | 269 | setDisplayMode(AitendoOLED::NormalDisplay); |
shintamainjp | 0:5062b7730235 | 270 | setMultiplexRatio(0x3f); |
shintamainjp | 0:5062b7730235 | 271 | setMasterCurrentControl(0x8f); |
shintamainjp | 0:5062b7730235 | 272 | setPowerSavingMode(0x00); |
shintamainjp | 0:5062b7730235 | 273 | setPhasePeriod(0x74); |
shintamainjp | 0:5062b7730235 | 274 | setDisplayClockDivideRatio(0xD0); |
shintamainjp | 0:5062b7730235 | 275 | setSecondPreChargeSpeedForColorA(0x80); |
shintamainjp | 0:5062b7730235 | 276 | setSecondPreChargeSpeedForColorB(0x80); |
shintamainjp | 0:5062b7730235 | 277 | setSecondPreChargeSpeedForColorC(0x80); |
shintamainjp | 0:5062b7730235 | 278 | setPreChargeLevelForColorA(0x3F); |
shintamainjp | 0:5062b7730235 | 279 | setPreChargeLevelForColorB(0x3F); |
shintamainjp | 0:5062b7730235 | 280 | setPreChargeLevelForColorC(0x3F); |
shintamainjp | 0:5062b7730235 | 281 | setVCOMH(0x3E); |
shintamainjp | 0:5062b7730235 | 282 | setMasterCurrentControl(0x0F); |
shintamainjp | 0:5062b7730235 | 283 | // A:Blue, B:Green, C:Red |
shintamainjp | 0:5062b7730235 | 284 | setContrastForColorA(0x80); |
shintamainjp | 0:5062b7730235 | 285 | setContrastForColorB(0x80); |
shintamainjp | 0:5062b7730235 | 286 | setContrastForColorC(0x80); |
shintamainjp | 0:5062b7730235 | 287 | setMode(true, false); |
shintamainjp | 0:5062b7730235 | 288 | setDisplayOnOff(true); |
shintamainjp | 0:5062b7730235 | 289 | } |
shintamainjp | 0:5062b7730235 | 290 | |
shintamainjp | 0:5062b7730235 | 291 | /** |
shintamainjp | 0:5062b7730235 | 292 | * Write data. |
shintamainjp | 0:5062b7730235 | 293 | * |
shintamainjp | 0:5062b7730235 | 294 | * @param data Data. |
shintamainjp | 0:5062b7730235 | 295 | */ |
shintamainjp | 0:5062b7730235 | 296 | void AitendoOLED::writeData(uint8_t data) { |
shintamainjp | 0:5062b7730235 | 297 | DC_DAT(); |
shintamainjp | 0:5062b7730235 | 298 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 299 | SPI_WRITE(data); |
shintamainjp | 0:5062b7730235 | 300 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 301 | } |
shintamainjp | 0:5062b7730235 | 302 | |
shintamainjp | 0:5062b7730235 | 303 | /** |
shintamainjp | 0:5062b7730235 | 304 | * Set mode. |
shintamainjp | 0:5062b7730235 | 305 | * |
shintamainjp | 0:5062b7730235 | 306 | * @param fillrect Fill the rectangle. |
shintamainjp | 0:5062b7730235 | 307 | * @param revcopy Reverse copy. |
shintamainjp | 0:5062b7730235 | 308 | */ |
shintamainjp | 0:5062b7730235 | 309 | void AitendoOLED::setMode(bool fillrect, bool revcopy) { |
shintamainjp | 0:5062b7730235 | 310 | uint8_t val = 0x00; |
shintamainjp | 0:5062b7730235 | 311 | if (fillrect) { |
shintamainjp | 0:5062b7730235 | 312 | val |= 1 << 0; |
shintamainjp | 0:5062b7730235 | 313 | } |
shintamainjp | 0:5062b7730235 | 314 | if (revcopy) { |
shintamainjp | 0:5062b7730235 | 315 | val |= 1 << 4; |
shintamainjp | 0:5062b7730235 | 316 | } |
shintamainjp | 0:5062b7730235 | 317 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 318 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 319 | SPI_WRITE(0x26); |
shintamainjp | 0:5062b7730235 | 320 | SPI_WRITE(val); |
shintamainjp | 0:5062b7730235 | 321 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 322 | } |
shintamainjp | 0:5062b7730235 | 323 | |
shintamainjp | 0:5062b7730235 | 324 | /** |
shintamainjp | 0:5062b7730235 | 325 | * Set column address. |
shintamainjp | 0:5062b7730235 | 326 | * |
shintamainjp | 0:5062b7730235 | 327 | * @param start Start address. (0-95) |
shintamainjp | 0:5062b7730235 | 328 | * @param end End address. (0-95) |
shintamainjp | 0:5062b7730235 | 329 | */ |
shintamainjp | 0:5062b7730235 | 330 | void AitendoOLED::setColumnAddress(int start, int end) { |
shintamainjp | 0:5062b7730235 | 331 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 332 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 333 | SPI_WRITE(0x15); |
shintamainjp | 0:5062b7730235 | 334 | SPI_WRITE(start); |
shintamainjp | 0:5062b7730235 | 335 | SPI_WRITE(end); |
shintamainjp | 0:5062b7730235 | 336 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 337 | } |
shintamainjp | 0:5062b7730235 | 338 | |
shintamainjp | 0:5062b7730235 | 339 | /** |
shintamainjp | 0:5062b7730235 | 340 | * Set row address. |
shintamainjp | 0:5062b7730235 | 341 | * |
shintamainjp | 0:5062b7730235 | 342 | * @param start Start address. (0-63) |
shintamainjp | 0:5062b7730235 | 343 | * @param end End address. (0-63) |
shintamainjp | 0:5062b7730235 | 344 | */ |
shintamainjp | 0:5062b7730235 | 345 | void AitendoOLED::setRowAddress(int start, int end) { |
shintamainjp | 0:5062b7730235 | 346 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 347 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 348 | SPI_WRITE(0x75); |
shintamainjp | 0:5062b7730235 | 349 | SPI_WRITE(start); |
shintamainjp | 0:5062b7730235 | 350 | SPI_WRITE(end); |
shintamainjp | 0:5062b7730235 | 351 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 352 | } |
shintamainjp | 0:5062b7730235 | 353 | |
shintamainjp | 0:5062b7730235 | 354 | /** |
shintamainjp | 0:5062b7730235 | 355 | * Set contrast for Color A. |
shintamainjp | 0:5062b7730235 | 356 | * |
shintamainjp | 0:5062b7730235 | 357 | * @param contrast Contrast. (Default:0x80) |
shintamainjp | 0:5062b7730235 | 358 | */ |
shintamainjp | 0:5062b7730235 | 359 | void AitendoOLED::setContrastForColorA(int contrast) { |
shintamainjp | 0:5062b7730235 | 360 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 361 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 362 | SPI_WRITE(0x81); |
shintamainjp | 0:5062b7730235 | 363 | SPI_WRITE(contrast); |
shintamainjp | 0:5062b7730235 | 364 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 365 | } |
shintamainjp | 0:5062b7730235 | 366 | |
shintamainjp | 0:5062b7730235 | 367 | /** |
shintamainjp | 0:5062b7730235 | 368 | * Set contrast for Color B. |
shintamainjp | 0:5062b7730235 | 369 | * |
shintamainjp | 0:5062b7730235 | 370 | * @param contrast Contrast. (Default:0x80) |
shintamainjp | 0:5062b7730235 | 371 | */ |
shintamainjp | 0:5062b7730235 | 372 | void AitendoOLED::setContrastForColorB(int contrast) { |
shintamainjp | 0:5062b7730235 | 373 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 374 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 375 | SPI_WRITE(0x82); |
shintamainjp | 0:5062b7730235 | 376 | SPI_WRITE(contrast); |
shintamainjp | 0:5062b7730235 | 377 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 378 | } |
shintamainjp | 0:5062b7730235 | 379 | |
shintamainjp | 0:5062b7730235 | 380 | /** |
shintamainjp | 0:5062b7730235 | 381 | * Set contrast for Color C. |
shintamainjp | 0:5062b7730235 | 382 | * |
shintamainjp | 0:5062b7730235 | 383 | * @param contrast Contrast. (Default:0x80) |
shintamainjp | 0:5062b7730235 | 384 | */ |
shintamainjp | 0:5062b7730235 | 385 | void AitendoOLED::setContrastForColorC(int contrast) { |
shintamainjp | 0:5062b7730235 | 386 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 387 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 388 | SPI_WRITE(0x83); |
shintamainjp | 0:5062b7730235 | 389 | SPI_WRITE(contrast); |
shintamainjp | 0:5062b7730235 | 390 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 391 | } |
shintamainjp | 0:5062b7730235 | 392 | |
shintamainjp | 0:5062b7730235 | 393 | /** |
shintamainjp | 0:5062b7730235 | 394 | * Set master current control value. |
shintamainjp | 0:5062b7730235 | 395 | * |
shintamainjp | 0:5062b7730235 | 396 | * @param current Current value. (0x00-0x0F) |
shintamainjp | 0:5062b7730235 | 397 | */ |
shintamainjp | 0:5062b7730235 | 398 | void AitendoOLED::setMasterCurrentControl(int current) { |
shintamainjp | 0:5062b7730235 | 399 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 400 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 401 | SPI_WRITE(0x87); |
shintamainjp | 0:5062b7730235 | 402 | SPI_WRITE(current); |
shintamainjp | 0:5062b7730235 | 403 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 404 | } |
shintamainjp | 0:5062b7730235 | 405 | |
shintamainjp | 0:5062b7730235 | 406 | /** |
shintamainjp | 0:5062b7730235 | 407 | * Set remapping mode and the data format. |
shintamainjp | 0:5062b7730235 | 408 | * |
shintamainjp | 0:5062b7730235 | 409 | * @param mode See the document. |
shintamainjp | 0:5062b7730235 | 410 | */ |
shintamainjp | 0:5062b7730235 | 411 | void AitendoOLED::setRemapAndDataFormat(int mode) { |
shintamainjp | 0:5062b7730235 | 412 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 413 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 414 | SPI_WRITE(0xA0); |
shintamainjp | 0:5062b7730235 | 415 | SPI_WRITE(mode); |
shintamainjp | 0:5062b7730235 | 416 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 417 | } |
shintamainjp | 0:5062b7730235 | 418 | |
shintamainjp | 0:5062b7730235 | 419 | /** |
shintamainjp | 0:5062b7730235 | 420 | * Set display start line. |
shintamainjp | 0:5062b7730235 | 421 | * |
shintamainjp | 0:5062b7730235 | 422 | * @param line Start line number. (0-63) |
shintamainjp | 0:5062b7730235 | 423 | */ |
shintamainjp | 0:5062b7730235 | 424 | void AitendoOLED::setDisplayStartLine(int line) { |
shintamainjp | 0:5062b7730235 | 425 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 426 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 427 | SPI_WRITE(0xA1); |
shintamainjp | 0:5062b7730235 | 428 | SPI_WRITE(line); |
shintamainjp | 0:5062b7730235 | 429 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 430 | } |
shintamainjp | 0:5062b7730235 | 431 | |
shintamainjp | 0:5062b7730235 | 432 | /** |
shintamainjp | 0:5062b7730235 | 433 | * Set display offset line. |
shintamainjp | 0:5062b7730235 | 434 | * |
shintamainjp | 0:5062b7730235 | 435 | * @param offset Offset line number. (0-63) |
shintamainjp | 0:5062b7730235 | 436 | */ |
shintamainjp | 0:5062b7730235 | 437 | void AitendoOLED::setDisplayOffset(int offset) { |
shintamainjp | 0:5062b7730235 | 438 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 439 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 440 | SPI_WRITE(0xA2); |
shintamainjp | 0:5062b7730235 | 441 | SPI_WRITE(offset); |
shintamainjp | 0:5062b7730235 | 442 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 443 | } |
shintamainjp | 0:5062b7730235 | 444 | |
shintamainjp | 0:5062b7730235 | 445 | /** |
shintamainjp | 0:5062b7730235 | 446 | * Set display mode. |
shintamainjp | 0:5062b7730235 | 447 | * |
shintamainjp | 0:5062b7730235 | 448 | * @param mode Display mode. |
shintamainjp | 0:5062b7730235 | 449 | */ |
shintamainjp | 0:5062b7730235 | 450 | void AitendoOLED::setDisplayMode(DisplayMode mode) { |
shintamainjp | 0:5062b7730235 | 451 | int val = 0; |
shintamainjp | 0:5062b7730235 | 452 | switch (mode) { |
shintamainjp | 0:5062b7730235 | 453 | case NormalDisplay: |
shintamainjp | 0:5062b7730235 | 454 | val = 0xA4; |
shintamainjp | 0:5062b7730235 | 455 | break; |
shintamainjp | 0:5062b7730235 | 456 | case EntireDisplayOn: |
shintamainjp | 0:5062b7730235 | 457 | val = 0xA5; |
shintamainjp | 0:5062b7730235 | 458 | break; |
shintamainjp | 0:5062b7730235 | 459 | case EntireDisplayOff: |
shintamainjp | 0:5062b7730235 | 460 | val = 0xA6; |
shintamainjp | 0:5062b7730235 | 461 | break; |
shintamainjp | 0:5062b7730235 | 462 | case InverseDisplay: |
shintamainjp | 0:5062b7730235 | 463 | val = 0xA7; |
shintamainjp | 0:5062b7730235 | 464 | break; |
shintamainjp | 0:5062b7730235 | 465 | default: |
shintamainjp | 0:5062b7730235 | 466 | break; |
shintamainjp | 0:5062b7730235 | 467 | } |
shintamainjp | 0:5062b7730235 | 468 | if (val != 0) { |
shintamainjp | 0:5062b7730235 | 469 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 470 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 471 | SPI_WRITE(val); |
shintamainjp | 0:5062b7730235 | 472 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 473 | } |
shintamainjp | 0:5062b7730235 | 474 | } |
shintamainjp | 0:5062b7730235 | 475 | |
shintamainjp | 0:5062b7730235 | 476 | /** |
shintamainjp | 0:5062b7730235 | 477 | * Set multiplex ratio. |
shintamainjp | 0:5062b7730235 | 478 | * |
shintamainjp | 0:5062b7730235 | 479 | * @param ratio Ratio. |
shintamainjp | 0:5062b7730235 | 480 | */ |
shintamainjp | 0:5062b7730235 | 481 | void AitendoOLED::setMultiplexRatio(int ratio) { |
shintamainjp | 0:5062b7730235 | 482 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 483 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 484 | SPI_WRITE(0xA8); |
shintamainjp | 0:5062b7730235 | 485 | SPI_WRITE(ratio); |
shintamainjp | 0:5062b7730235 | 486 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 487 | } |
shintamainjp | 0:5062b7730235 | 488 | |
shintamainjp | 0:5062b7730235 | 489 | /** |
shintamainjp | 0:5062b7730235 | 490 | * Set display on/off. |
shintamainjp | 0:5062b7730235 | 491 | * |
shintamainjp | 0:5062b7730235 | 492 | * @param on On. |
shintamainjp | 0:5062b7730235 | 493 | */ |
shintamainjp | 0:5062b7730235 | 494 | void AitendoOLED::setDisplayOnOff(bool on) { |
shintamainjp | 0:5062b7730235 | 495 | if (on) { |
shintamainjp | 0:5062b7730235 | 496 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 497 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 498 | SPI_WRITE(0xAF); |
shintamainjp | 0:5062b7730235 | 499 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 500 | } else { |
shintamainjp | 0:5062b7730235 | 501 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 502 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 503 | SPI_WRITE(0xAE); |
shintamainjp | 0:5062b7730235 | 504 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 505 | } |
shintamainjp | 0:5062b7730235 | 506 | } |
shintamainjp | 0:5062b7730235 | 507 | |
shintamainjp | 0:5062b7730235 | 508 | /** |
shintamainjp | 0:5062b7730235 | 509 | * Set gray scale table. |
shintamainjp | 0:5062b7730235 | 510 | * |
shintamainjp | 0:5062b7730235 | 511 | * @param p A pointer to the look up table. |
shintamainjp | 0:5062b7730235 | 512 | */ |
shintamainjp | 0:5062b7730235 | 513 | void AitendoOLED::setGrayScaleTable(gray_scale_table_t *p) { |
shintamainjp | 0:5062b7730235 | 514 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 515 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 516 | SPI_WRITE(0xB8); |
shintamainjp | 0:5062b7730235 | 517 | for (int i = 0; i < 32; i++) { |
shintamainjp | 0:5062b7730235 | 518 | SPI_WRITE(p->data[i]); |
shintamainjp | 0:5062b7730235 | 519 | } |
shintamainjp | 0:5062b7730235 | 520 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 521 | } |
shintamainjp | 0:5062b7730235 | 522 | |
shintamainjp | 0:5062b7730235 | 523 | /** |
shintamainjp | 0:5062b7730235 | 524 | * NOP. |
shintamainjp | 0:5062b7730235 | 525 | */ |
shintamainjp | 0:5062b7730235 | 526 | void AitendoOLED::nop() { |
shintamainjp | 0:5062b7730235 | 527 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 528 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 529 | SPI_WRITE(0xE3); |
shintamainjp | 0:5062b7730235 | 530 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 531 | } |
shintamainjp | 0:5062b7730235 | 532 | |
shintamainjp | 0:5062b7730235 | 533 | /** |
shintamainjp | 0:5062b7730235 | 534 | * Set power saving mode. |
shintamainjp | 0:5062b7730235 | 535 | * |
shintamainjp | 0:5062b7730235 | 536 | * @param value Value. (0x00:None, 0x12:power saving) |
shintamainjp | 0:5062b7730235 | 537 | */ |
shintamainjp | 0:5062b7730235 | 538 | void AitendoOLED::setPowerSavingMode(int value) { |
shintamainjp | 0:5062b7730235 | 539 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 540 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 541 | SPI_WRITE(0xB0); |
shintamainjp | 0:5062b7730235 | 542 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 543 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 544 | } |
shintamainjp | 0:5062b7730235 | 545 | |
shintamainjp | 0:5062b7730235 | 546 | /** |
shintamainjp | 0:5062b7730235 | 547 | * Set phase period. |
shintamainjp | 0:5062b7730235 | 548 | * |
shintamainjp | 0:5062b7730235 | 549 | * @param value Value. (Default:0x74) |
shintamainjp | 0:5062b7730235 | 550 | */ |
shintamainjp | 0:5062b7730235 | 551 | void AitendoOLED::setPhasePeriod(int value) { |
shintamainjp | 0:5062b7730235 | 552 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 553 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 554 | SPI_WRITE(0xB1); |
shintamainjp | 0:5062b7730235 | 555 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 556 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 557 | } |
shintamainjp | 0:5062b7730235 | 558 | |
shintamainjp | 0:5062b7730235 | 559 | /** |
shintamainjp | 0:5062b7730235 | 560 | * Set display clock divide ratio. |
shintamainjp | 0:5062b7730235 | 561 | * |
shintamainjp | 0:5062b7730235 | 562 | * @param value Value. (Default:0x00) |
shintamainjp | 0:5062b7730235 | 563 | */ |
shintamainjp | 0:5062b7730235 | 564 | void AitendoOLED::setDisplayClockDivideRatio(int value) { |
shintamainjp | 0:5062b7730235 | 565 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 566 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 567 | SPI_WRITE(0xB3); |
shintamainjp | 0:5062b7730235 | 568 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 569 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 570 | } |
shintamainjp | 0:5062b7730235 | 571 | |
shintamainjp | 0:5062b7730235 | 572 | /** |
shintamainjp | 0:5062b7730235 | 573 | * Set second pre-charge speed for color A. |
shintamainjp | 0:5062b7730235 | 574 | * |
shintamainjp | 0:5062b7730235 | 575 | * @param value Value. |
shintamainjp | 0:5062b7730235 | 576 | */ |
shintamainjp | 0:5062b7730235 | 577 | void AitendoOLED::setSecondPreChargeSpeedForColorA(int value) { |
shintamainjp | 0:5062b7730235 | 578 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 579 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 580 | SPI_WRITE(0x8A); |
shintamainjp | 0:5062b7730235 | 581 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 582 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 583 | } |
shintamainjp | 0:5062b7730235 | 584 | |
shintamainjp | 0:5062b7730235 | 585 | /** |
shintamainjp | 0:5062b7730235 | 586 | * Set second pre-charge speed for color B. |
shintamainjp | 0:5062b7730235 | 587 | * |
shintamainjp | 0:5062b7730235 | 588 | * @param value Value. |
shintamainjp | 0:5062b7730235 | 589 | */ |
shintamainjp | 0:5062b7730235 | 590 | void AitendoOLED::setSecondPreChargeSpeedForColorB(int value) { |
shintamainjp | 0:5062b7730235 | 591 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 592 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 593 | SPI_WRITE(0x8B); |
shintamainjp | 0:5062b7730235 | 594 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 595 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 596 | } |
shintamainjp | 0:5062b7730235 | 597 | |
shintamainjp | 0:5062b7730235 | 598 | /** |
shintamainjp | 0:5062b7730235 | 599 | * Set second pre-charge speed for color C. |
shintamainjp | 0:5062b7730235 | 600 | * |
shintamainjp | 0:5062b7730235 | 601 | * @param value Value. |
shintamainjp | 0:5062b7730235 | 602 | */ |
shintamainjp | 0:5062b7730235 | 603 | void AitendoOLED::setSecondPreChargeSpeedForColorC(int value) { |
shintamainjp | 0:5062b7730235 | 604 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 605 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 606 | SPI_WRITE(0x8C); |
shintamainjp | 0:5062b7730235 | 607 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 608 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 609 | } |
shintamainjp | 0:5062b7730235 | 610 | |
shintamainjp | 0:5062b7730235 | 611 | /** |
shintamainjp | 0:5062b7730235 | 612 | * Set pre charge level for color A. |
shintamainjp | 0:5062b7730235 | 613 | * |
shintamainjp | 0:5062b7730235 | 614 | * @param value The value. |
shintamainjp | 0:5062b7730235 | 615 | */ |
shintamainjp | 0:5062b7730235 | 616 | void AitendoOLED::setPreChargeLevelForColorA(int value) { |
shintamainjp | 0:5062b7730235 | 617 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 618 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 619 | SPI_WRITE(0xBB); |
shintamainjp | 0:5062b7730235 | 620 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 621 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 622 | } |
shintamainjp | 0:5062b7730235 | 623 | |
shintamainjp | 0:5062b7730235 | 624 | /** |
shintamainjp | 0:5062b7730235 | 625 | * Set pre charge level for color B. |
shintamainjp | 0:5062b7730235 | 626 | * |
shintamainjp | 0:5062b7730235 | 627 | * @param value The value. |
shintamainjp | 0:5062b7730235 | 628 | */ |
shintamainjp | 0:5062b7730235 | 629 | void AitendoOLED::setPreChargeLevelForColorB(int value) { |
shintamainjp | 0:5062b7730235 | 630 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 631 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 632 | SPI_WRITE(0xBC); |
shintamainjp | 0:5062b7730235 | 633 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 634 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 635 | } |
shintamainjp | 0:5062b7730235 | 636 | |
shintamainjp | 0:5062b7730235 | 637 | /** |
shintamainjp | 0:5062b7730235 | 638 | * Set pre charge level for color C. |
shintamainjp | 0:5062b7730235 | 639 | * |
shintamainjp | 0:5062b7730235 | 640 | * @param value The value. |
shintamainjp | 0:5062b7730235 | 641 | */ |
shintamainjp | 0:5062b7730235 | 642 | void AitendoOLED::setPreChargeLevelForColorC(int value) { |
shintamainjp | 0:5062b7730235 | 643 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 644 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 645 | SPI_WRITE(0xBD); |
shintamainjp | 0:5062b7730235 | 646 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 647 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 648 | } |
shintamainjp | 0:5062b7730235 | 649 | |
shintamainjp | 0:5062b7730235 | 650 | /** |
shintamainjp | 0:5062b7730235 | 651 | * Set VCOMH. |
shintamainjp | 0:5062b7730235 | 652 | * |
shintamainjp | 0:5062b7730235 | 653 | * @param value VCOMH value. (0x00:0.43 * Vref, 0x3F:0x83 * Vref) |
shintamainjp | 0:5062b7730235 | 654 | */ |
shintamainjp | 0:5062b7730235 | 655 | void AitendoOLED::setVCOMH(int value) { |
shintamainjp | 0:5062b7730235 | 656 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 657 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 658 | SPI_WRITE(0xBE); |
shintamainjp | 0:5062b7730235 | 659 | SPI_WRITE(value); |
shintamainjp | 0:5062b7730235 | 660 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 661 | } |
shintamainjp | 0:5062b7730235 | 662 | |
shintamainjp | 0:5062b7730235 | 663 | /** |
shintamainjp | 0:5062b7730235 | 664 | * Read the status register. |
shintamainjp | 0:5062b7730235 | 665 | * |
shintamainjp | 0:5062b7730235 | 666 | * @return the value. |
shintamainjp | 0:5062b7730235 | 667 | */ |
shintamainjp | 0:5062b7730235 | 668 | uint8_t AitendoOLED::readStatusRegister() { |
shintamainjp | 0:5062b7730235 | 669 | uint8_t s; |
shintamainjp | 0:5062b7730235 | 670 | DC_CMD(); |
shintamainjp | 0:5062b7730235 | 671 | CS_ENA(); |
shintamainjp | 0:5062b7730235 | 672 | s = SPI_READ(); |
shintamainjp | 0:5062b7730235 | 673 | CS_DIS(); |
shintamainjp | 0:5062b7730235 | 674 | return s; |
shintamainjp | 0:5062b7730235 | 675 | } |