4Dsystems Oled library

Dependents:   RDA5807M-FM-Radio

Committer:
star297
Date:
Thu Jan 08 12:01:58 2015 +0000
Revision:
0:0e93e95bab96
Update baud rate defines

Who changed what in which revision?

UserRevisionLine numberNew contents of line
star297 0:0e93e95bab96 1 // mbed library for 4DSystems uOLED-32028-P1T
star297 0:0e93e95bab96 2 #include "mbed.h"
star297 0:0e93e95bab96 3 #include "OLED32028P1T.h"
star297 0:0e93e95bab96 4
star297 0:0e93e95bab96 5 OLED32028P1T::OLED32028P1T(PinName serialTx, PinName serialRx, PinName resetPin) : s(serialTx, serialRx), reset(resetPin){
star297 0:0e93e95bab96 6 s.baud(BAUDRATE);
star297 0:0e93e95bab96 7 while (s.readable()) {
star297 0:0e93e95bab96 8 s.getc();
star297 0:0e93e95bab96 9 } }
star297 0:0e93e95bab96 10 // Initialise OLED display and redifine baud faster baud rate.
star297 0:0e93e95bab96 11 void OLED32028P1T::init(){
star297 0:0e93e95bab96 12 resetDisplay();
star297 0:0e93e95bab96 13 s.putc(0x55); // send byte for OLED to autodetect baudrate
star297 0:0e93e95bab96 14 getResponse();
star297 0:0e93e95bab96 15 s.putc (0x51); // send code to display to change baud rate
star297 0:0e93e95bab96 16 #if defined(TARGET_KL05Z)
star297 0:0e93e95bab96 17 s.putc (0x0E); // send new display baud rate from list below, upto 128k
star297 0:0e93e95bab96 18 #elif defined(TARGET_KL25Z)
star297 0:0e93e95bab96 19 s.putc (0x0E); // send new display baud rate from list below, upto 128k
star297 0:0e93e95bab96 20 #else
star297 0:0e93e95bab96 21 s.putc (0x0F); // send new display baud rate from list below, maximun 282353
star297 0:0e93e95bab96 22 #endif
star297 0:0e93e95bab96 23 /*
star297 0:0e93e95bab96 24 00hex : 110 Baud
star297 0:0e93e95bab96 25 01hex : 300 Baud
star297 0:0e93e95bab96 26 02hex : 600 Baud
star297 0:0e93e95bab96 27 03hex : 1200 Baud
star297 0:0e93e95bab96 28 04hex : 2400 Baud
star297 0:0e93e95bab96 29 05hex : 4800 Baud
star297 0:0e93e95bab96 30 06hex : 9600 Baud
star297 0:0e93e95bab96 31 07hex : 14400 Baud
star297 0:0e93e95bab96 32 08hex : 19200 Baud
star297 0:0e93e95bab96 33 09hex : 31250 Baud
star297 0:0e93e95bab96 34 0Ahex : 38400 Baud
star297 0:0e93e95bab96 35 0Bhex : 56000 Baud
star297 0:0e93e95bab96 36 0Chex : 57600 Baud
star297 0:0e93e95bab96 37 0Dhex : 115200 Baud
star297 0:0e93e95bab96 38 0Ehex : 128000 Baud (It is actually 129032Baud)
star297 0:0e93e95bab96 39 0Fhex : 256000 Baud (It is actually 282353Baud)
star297 0:0e93e95bab96 40 10hex : 128000 Baud
star297 0:0e93e95bab96 41 11hex : 256000 Baud
star297 0:0e93e95bab96 42 */
star297 0:0e93e95bab96 43 wait_ms(10);
star297 0:0e93e95bab96 44 #undef BAUDRATE
star297 0:0e93e95bab96 45 #if defined(TARGET_KL05Z)
star297 0:0e93e95bab96 46 #define BAUDRATE 129032 // ***** set matching new display baud rate, upto 128k *****
star297 0:0e93e95bab96 47 #elif defined(TARGET_KL25Z)
star297 0:0e93e95bab96 48 #define BAUDRATE 129032 // ***** set matching new display baud rate, upto 128k *****
star297 0:0e93e95bab96 49 # else
star297 0:0e93e95bab96 50 #define BAUDRATE 282353 // ***** set matching new display baud rate, maximum 282353 *****
star297 0:0e93e95bab96 51 #endif
star297 0:0e93e95bab96 52 s.baud(BAUDRATE);
star297 0:0e93e95bab96 53 while (s.readable()) {
star297 0:0e93e95bab96 54 s.getc();
star297 0:0e93e95bab96 55 } }
star297 0:0e93e95bab96 56 void OLED32028P1T::resetDisplay(){
star297 0:0e93e95bab96 57 reset = 0;
star297 0:0e93e95bab96 58 wait_ms(200);
star297 0:0e93e95bab96 59 reset = 1;
star297 0:0e93e95bab96 60 wait_ms(1000);
star297 0:0e93e95bab96 61 }
star297 0:0e93e95bab96 62 void OLED32028P1T::displayControl(int mode, int value){
star297 0:0e93e95bab96 63 s.putc(0x59);
star297 0:0e93e95bab96 64 s.putc(mode);
star297 0:0e93e95bab96 65 s.putc(value);
star297 0:0e93e95bab96 66 getResponse();
star297 0:0e93e95bab96 67 }
star297 0:0e93e95bab96 68 void OLED32028P1T::displayOff(){
star297 0:0e93e95bab96 69 s.putc(0x59);
star297 0:0e93e95bab96 70 s.putc(0x01);
star297 0:0e93e95bab96 71 s.putc(0x00);
star297 0:0e93e95bab96 72 getResponse();
star297 0:0e93e95bab96 73 }
star297 0:0e93e95bab96 74 void OLED32028P1T::displayOn(){
star297 0:0e93e95bab96 75 s.putc(0x59);
star297 0:0e93e95bab96 76 s.putc(0x01);
star297 0:0e93e95bab96 77 s.putc(0x01);
star297 0:0e93e95bab96 78 getResponse();
star297 0:0e93e95bab96 79 }
star297 0:0e93e95bab96 80 void OLED32028P1T::displaySleep(){
star297 0:0e93e95bab96 81 s.putc(0x5A);
star297 0:0e93e95bab96 82 s.putc(0x02);
star297 0:0e93e95bab96 83 s.putc(0xFF);
star297 0:0e93e95bab96 84 while (!s.readable()){}
star297 0:0e93e95bab96 85
star297 0:0e93e95bab96 86 }
star297 0:0e93e95bab96 87 void OLED32028P1T::getResponse(){
star297 0:0e93e95bab96 88 char response = 0x15;
star297 0:0e93e95bab96 89 lastCount = 0;
star297 0:0e93e95bab96 90 NAKCount = 0;
star297 0:0e93e95bab96 91 while (!s.readable() || response == 0x15) {
star297 0:0e93e95bab96 92 wait_ms(1);
star297 0:0e93e95bab96 93 lastCount++;
star297 0:0e93e95bab96 94 if (s.readable()) {
star297 0:0e93e95bab96 95 response = s.getc(); // Read response
star297 0:0e93e95bab96 96 if (response == 0x06) {
star297 0:0e93e95bab96 97 return;
star297 0:0e93e95bab96 98 } else if (response == 0x15) {
star297 0:0e93e95bab96 99 NAKCount++;
star297 0:0e93e95bab96 100 } } } }
star297 0:0e93e95bab96 101 int OLED32028P1T::toRGB(int red, int green, int blue){
star297 0:0e93e95bab96 102 int outR = ((red * 31) / 255);
star297 0:0e93e95bab96 103 int outG = ((green * 63) / 255);
star297 0:0e93e95bab96 104 int outB = ((blue * 31) / 255);
star297 0:0e93e95bab96 105 return (outR << 11) | (outG << 5) | outB;
star297 0:0e93e95bab96 106 }
star297 0:0e93e95bab96 107 void OLED32028P1T::clear(){
star297 0:0e93e95bab96 108 s.putc(0x45);
star297 0:0e93e95bab96 109 getResponse();
star297 0:0e93e95bab96 110 _row = 0;
star297 0:0e93e95bab96 111 _column = 0;
star297 0:0e93e95bab96 112 }
star297 0:0e93e95bab96 113 void OLED32028P1T::drawPixel(int x, int y, int color){
star297 0:0e93e95bab96 114 s.putc(0x50);
star297 0:0e93e95bab96 115 s.putc(x >> 8);
star297 0:0e93e95bab96 116 s.putc(x & 0xFF);
star297 0:0e93e95bab96 117 s.putc(y >> 8);
star297 0:0e93e95bab96 118 s.putc(y & 0xFF);
star297 0:0e93e95bab96 119 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 120 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 121 getResponse();
star297 0:0e93e95bab96 122 }
star297 0:0e93e95bab96 123 void OLED32028P1T::drawLine(int x1, int y1, int x2, int y2, int color){
star297 0:0e93e95bab96 124 s.putc(0x4C); // Line
star297 0:0e93e95bab96 125 s.putc(x1 >> 8);
star297 0:0e93e95bab96 126 s.putc(x1 & 0xFF);
star297 0:0e93e95bab96 127 s.putc(y1 >> 8);
star297 0:0e93e95bab96 128 s.putc(y1 & 0xFF);
star297 0:0e93e95bab96 129 s.putc(x2 >> 8);
star297 0:0e93e95bab96 130 s.putc(x2 & 0xFF);
star297 0:0e93e95bab96 131 s.putc(y2 >> 8);
star297 0:0e93e95bab96 132 s.putc(y2 & 0xFF);
star297 0:0e93e95bab96 133 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 134 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 135 getResponse();
star297 0:0e93e95bab96 136 }
star297 0:0e93e95bab96 137 void OLED32028P1T::drawRectangle(int x, int y, int width, int height, int color){
star297 0:0e93e95bab96 138 s.putc(0x72);
star297 0:0e93e95bab96 139 s.putc(x >> 8);
star297 0:0e93e95bab96 140 s.putc(x & 0xFF);
star297 0:0e93e95bab96 141 s.putc(y >> 8);
star297 0:0e93e95bab96 142 s.putc(y & 0xFF);
star297 0:0e93e95bab96 143 s.putc(x+width >> 8);
star297 0:0e93e95bab96 144 s.putc(x+width & 0xFF);
star297 0:0e93e95bab96 145 s.putc(y+height >> 8);
star297 0:0e93e95bab96 146 s.putc(y+height & 0xFF);
star297 0:0e93e95bab96 147 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 148 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 149 getResponse();
star297 0:0e93e95bab96 150 }
star297 0:0e93e95bab96 151 void OLED32028P1T::drawCircle(int x, int y, int radius, int color){
star297 0:0e93e95bab96 152 s.putc(0x43);
star297 0:0e93e95bab96 153 s.putc(0);
star297 0:0e93e95bab96 154 s.putc(x);
star297 0:0e93e95bab96 155 s.putc(0);
star297 0:0e93e95bab96 156 s.putc(y);
star297 0:0e93e95bab96 157 s.putc(0);
star297 0:0e93e95bab96 158 s.putc(radius);
star297 0:0e93e95bab96 159 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 160 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 161 getResponse();
star297 0:0e93e95bab96 162 }
star297 0:0e93e95bab96 163 void OLED32028P1T::setFontSize(int fontSize){
star297 0:0e93e95bab96 164 s.putc(0x46);
star297 0:0e93e95bab96 165 s.putc(fontSize);
star297 0:0e93e95bab96 166 _fontSize = fontSize;
star297 0:0e93e95bab96 167 getResponse();
star297 0:0e93e95bab96 168 }
star297 0:0e93e95bab96 169 void OLED32028P1T::setFontColor(int fontColor){
star297 0:0e93e95bab96 170 _fontColor = fontColor;
star297 0:0e93e95bab96 171 }
star297 0:0e93e95bab96 172 void OLED32028P1T::setPenSize(int penSize){
star297 0:0e93e95bab96 173 s.putc(0x70);
star297 0:0e93e95bab96 174 s.putc(penSize);
star297 0:0e93e95bab96 175 _penSize = penSize;
star297 0:0e93e95bab96 176 getResponse();
star297 0:0e93e95bab96 177 }
star297 0:0e93e95bab96 178 void OLED32028P1T::setTextBackgroundType(int textBackgroundType){
star297 0:0e93e95bab96 179 s.putc(0x4F);
star297 0:0e93e95bab96 180 s.putc(textBackgroundType);
star297 0:0e93e95bab96 181 getResponse();
star297 0:0e93e95bab96 182 }
star297 0:0e93e95bab96 183 void OLED32028P1T::setBackgroundColor(int color){
star297 0:0e93e95bab96 184 s.putc(0x42);
star297 0:0e93e95bab96 185 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 186 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 187 getResponse();
star297 0:0e93e95bab96 188 }
star297 0:0e93e95bab96 189 void OLED32028P1T::drawText(int column, int row, int font_size, char *mytext, int color){
star297 0:0e93e95bab96 190 s.putc(0x73);
star297 0:0e93e95bab96 191 // Adjust to center of the screen (26 Columns at font size 0)
star297 0:0e93e95bab96 192 //int newCol = 13 - (strlen(mytext)/2);
star297 0:0e93e95bab96 193 //printByte(newCol); // column
star297 0:0e93e95bab96 194 s.putc(column); // column
star297 0:0e93e95bab96 195 s.putc(row); // row
star297 0:0e93e95bab96 196 s.putc(font_size); // font size (0 = 5x7 font, 1 = 8x8 font, 2 = 8x12 font, 3 = 12x16)
star297 0:0e93e95bab96 197 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 198 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 199 for (int i = 0; i < strlen(mytext); i++) {
star297 0:0e93e95bab96 200 s.putc(mytext[i]); // character to write
star297 0:0e93e95bab96 201 }
star297 0:0e93e95bab96 202 s.putc(0x00); // string terminator (always 0x00)
star297 0:0e93e95bab96 203 getResponse();
star297 0:0e93e95bab96 204 }
star297 0:0e93e95bab96 205 void OLED32028P1T::drawTextGraphic(int x, int y, int font_size, char *mytext, int width, int height, int color){
star297 0:0e93e95bab96 206 s.putc(0x53);
star297 0:0e93e95bab96 207 s.putc(x >> 8); //MSB
star297 0:0e93e95bab96 208 s.putc(x & 0xFF); //LSB
star297 0:0e93e95bab96 209 s.putc(y >> 8); // MSB
star297 0:0e93e95bab96 210 s.putc(y & 0xFF); //LSB
star297 0:0e93e95bab96 211 s.putc(font_size); // font size (0 = 5x7 font, 1 = 8x8 font, 2 = 8x12 font, 3 = 12x16)
star297 0:0e93e95bab96 212 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 213 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 214 s.putc(width); // character width
star297 0:0e93e95bab96 215 s.putc(height); // character height
star297 0:0e93e95bab96 216 for (int i = 0; i < strlen(mytext); i++) {
star297 0:0e93e95bab96 217 s.putc(mytext[i]); // character to write
star297 0:0e93e95bab96 218 }
star297 0:0e93e95bab96 219 s.putc(0x00); // string terminator (always 0x00)
star297 0:0e93e95bab96 220 getResponse();
star297 0:0e93e95bab96 221 }
star297 0:0e93e95bab96 222 void OLED32028P1T::drawSingleChar(int column, int row, int theChar, int color){
star297 0:0e93e95bab96 223 s.putc(0x54);
star297 0:0e93e95bab96 224 s.putc(theChar);
star297 0:0e93e95bab96 225 s.putc(column);
star297 0:0e93e95bab96 226 s.putc(row);
star297 0:0e93e95bab96 227 s.putc(color >> 8); // MSB
star297 0:0e93e95bab96 228 s.putc(color & 0xFF); // LSB
star297 0:0e93e95bab96 229 getResponse();
star297 0:0e93e95bab96 230 }
star297 0:0e93e95bab96 231 char OLED32028P1T::getPenSize(){
star297 0:0e93e95bab96 232 return _penSize;
star297 0:0e93e95bab96 233 }
star297 0:0e93e95bab96 234 void OLED32028P1T::drawTextButton(int up_down, int x, int y, int button_colour, int font, int string_colour, int width, int height, char *mytext){
star297 0:0e93e95bab96 235 s.putc(0x62);
star297 0:0e93e95bab96 236 s.putc(up_down);
star297 0:0e93e95bab96 237 s.putc(x >> 8);
star297 0:0e93e95bab96 238 s.putc(x & 0xFF);
star297 0:0e93e95bab96 239 s.putc(y >> 8);
star297 0:0e93e95bab96 240 s.putc(y & 0xFF);
star297 0:0e93e95bab96 241 s.putc(button_colour >> 8);
star297 0:0e93e95bab96 242 s.putc(button_colour & 0xFF);
star297 0:0e93e95bab96 243 s.putc(font);
star297 0:0e93e95bab96 244 s.putc(string_colour >> 8);
star297 0:0e93e95bab96 245 s.putc(string_colour & 0xFF);
star297 0:0e93e95bab96 246 s.putc(width);
star297 0:0e93e95bab96 247 s.putc(height);
star297 0:0e93e95bab96 248 for (int i = 0; i < strlen(mytext); i++) {
star297 0:0e93e95bab96 249 s.putc(mytext[i]); // characters to write
star297 0:0e93e95bab96 250 }
star297 0:0e93e95bab96 251 s.putc(0x00);
star297 0:0e93e95bab96 252 getResponse();
star297 0:0e93e95bab96 253 }
star297 0:0e93e95bab96 254 void OLED32028P1T::enableTouch(){
star297 0:0e93e95bab96 255 s.putc(0x59); // display control command
star297 0:0e93e95bab96 256 s.putc(0x05); // Touch Control
star297 0:0e93e95bab96 257 s.putc(0x00); // enable Touch
star297 0:0e93e95bab96 258 getResponse();
star297 0:0e93e95bab96 259 }
star297 0:0e93e95bab96 260 void OLED32028P1T::disableTouch(){
star297 0:0e93e95bab96 261 s.putc(0x59); // display control command
star297 0:0e93e95bab96 262 s.putc(0x05); // Touch Control
star297 0:0e93e95bab96 263 s.putc(0x01); // disable Touch
star297 0:0e93e95bab96 264 getResponse();
star297 0:0e93e95bab96 265 }
star297 0:0e93e95bab96 266 unsigned char OLED32028P1T::getTouch(int *xbuffer, int *ybuffer){ //Touch Press on the screen, if return=1, touch coordinates are stored on the buffer[]
star297 0:0e93e95bab96 267
star297 0:0e93e95bab96 268 //xbuffer=0;ybuffer=0;
star297 0:0e93e95bab96 269 s.putc(0x6F);
star297 0:0e93e95bab96 270 s.putc(0x04);
star297 0:0e93e95bab96 271 xbuffer[0]=s.getc();
star297 0:0e93e95bab96 272 xbuffer[0]=xbuffer[0]<<8;
star297 0:0e93e95bab96 273 xbuffer[0]|=s.getc();
star297 0:0e93e95bab96 274 ybuffer[0]=s.getc();
star297 0:0e93e95bab96 275 ybuffer[0]=ybuffer[0]<<8;
star297 0:0e93e95bab96 276 ybuffer[0]|=s.getc();
star297 0:0e93e95bab96 277
star297 0:0e93e95bab96 278 if(xbuffer[0] != 0){
star297 0:0e93e95bab96 279 s.putc(0x6F);
star297 0:0e93e95bab96 280 s.putc(0x05);
star297 0:0e93e95bab96 281 xbuffer[0]=s.getc();
star297 0:0e93e95bab96 282 xbuffer[0]=xbuffer[0]<<8;
star297 0:0e93e95bab96 283 xbuffer[0]|=s.getc();
star297 0:0e93e95bab96 284 ybuffer[0]=s.getc();
star297 0:0e93e95bab96 285 ybuffer[0]=ybuffer[0]<<8;
star297 0:0e93e95bab96 286 ybuffer[0]|=s.getc();
star297 0:0e93e95bab96 287 return 1;
star297 0:0e93e95bab96 288 }else{
star297 0:0e93e95bab96 289 return 0;
star297 0:0e93e95bab96 290 }
star297 0:0e93e95bab96 291 }
star297 0:0e93e95bab96 292 unsigned char OLED32028P1T::getTouchPress(int *xbuffer, int *ybuffer){ //Touch Release on the screen, if return=1, touch coordinates are stored on the buffer[]
star297 0:0e93e95bab96 293 s.putc(0x6F);
star297 0:0e93e95bab96 294 s.putc(0x01);
star297 0:0e93e95bab96 295 xbuffer[0]=s.getc();
star297 0:0e93e95bab96 296 xbuffer[0]=xbuffer[0]<<8;
star297 0:0e93e95bab96 297 xbuffer[0]|=s.getc();
star297 0:0e93e95bab96 298 ybuffer[0]=s.getc();
star297 0:0e93e95bab96 299 ybuffer[0]=ybuffer[0]<<8;
star297 0:0e93e95bab96 300 ybuffer[0]|=s.getc();
star297 0:0e93e95bab96 301
star297 0:0e93e95bab96 302 if(xbuffer[0] != 0){
star297 0:0e93e95bab96 303 s.putc(0x6F);
star297 0:0e93e95bab96 304 s.putc(0x05);
star297 0:0e93e95bab96 305 xbuffer[0]=s.getc();
star297 0:0e93e95bab96 306 xbuffer[0]=xbuffer[0]<<8;
star297 0:0e93e95bab96 307 xbuffer[0]|=s.getc();
star297 0:0e93e95bab96 308 ybuffer[0]=s.getc();
star297 0:0e93e95bab96 309 ybuffer[0]=ybuffer[0]<<8;
star297 0:0e93e95bab96 310 ybuffer[0]|=s.getc();
star297 0:0e93e95bab96 311 return 1;
star297 0:0e93e95bab96 312 }else{
star297 0:0e93e95bab96 313 return 0;
star297 0:0e93e95bab96 314 }
star297 0:0e93e95bab96 315 }
star297 0:0e93e95bab96 316 unsigned char OLED32028P1T::getTouchRelease(int *xbuffer, int *ybuffer){ //Touch Release on the screen, if return=1, touch coordinates are stored on the buffer[]
star297 0:0e93e95bab96 317 s.putc(0x6F);
star297 0:0e93e95bab96 318 s.putc(0x02);
star297 0:0e93e95bab96 319 xbuffer[0]=s.getc();
star297 0:0e93e95bab96 320 xbuffer[0]=xbuffer[0]<<8;
star297 0:0e93e95bab96 321 xbuffer[0]|=s.getc();
star297 0:0e93e95bab96 322 ybuffer[0]=s.getc();
star297 0:0e93e95bab96 323 ybuffer[0]=ybuffer[0]<<8;
star297 0:0e93e95bab96 324 ybuffer[0]|=s.getc();
star297 0:0e93e95bab96 325
star297 0:0e93e95bab96 326 if(xbuffer[0] != 0){
star297 0:0e93e95bab96 327 s.putc(0x6F);
star297 0:0e93e95bab96 328 s.putc(0x05);
star297 0:0e93e95bab96 329 xbuffer[0]=s.getc();
star297 0:0e93e95bab96 330 xbuffer[0]=xbuffer[0]<<8;
star297 0:0e93e95bab96 331 xbuffer[0]|=s.getc();
star297 0:0e93e95bab96 332 ybuffer[0]=s.getc();
star297 0:0e93e95bab96 333 ybuffer[0]=ybuffer[0]<<8;
star297 0:0e93e95bab96 334 ybuffer[0]|=s.getc();
star297 0:0e93e95bab96 335 return 1;
star297 0:0e93e95bab96 336 }else{
star297 0:0e93e95bab96 337 return 0;
star297 0:0e93e95bab96 338 }
star297 0:0e93e95bab96 339 }
star297 0:0e93e95bab96 340 void OLED32028P1T::setTouchArea(int x1, int y1 , int x2, int y2) { // define touch area
star297 0:0e93e95bab96 341 char command[9]= "";int i;
star297 0:0e93e95bab96 342 command[0] = (0x75);
star297 0:0e93e95bab96 343 command[1] = (x1 >> 8) & 0xFF;
star297 0:0e93e95bab96 344 command[2] = x1 & 0xFF;
star297 0:0e93e95bab96 345 command[3] = (y1 >> 8) & 0xFF;
star297 0:0e93e95bab96 346 command[4] = y1 & 0xFF;
star297 0:0e93e95bab96 347 command[5] = (x2 >> 8) & 0xFF;
star297 0:0e93e95bab96 348 command[6] = x2 & 0xFF;
star297 0:0e93e95bab96 349 command[7] = (y2 >> 8) & 0xFF;
star297 0:0e93e95bab96 350 command[8] = y2 & 0xFF;
star297 0:0e93e95bab96 351 for (i = 0; i < 9; i++) s.putc(command[i]);
star297 0:0e93e95bab96 352 getResponse();
star297 0:0e93e95bab96 353 }
star297 0:0e93e95bab96 354 void OLED32028P1T::resetTouchArea(){
star297 0:0e93e95bab96 355 s.putc(0x59); // display control command
star297 0:0e93e95bab96 356 s.putc(0x05); // Touch Control
star297 0:0e93e95bab96 357 s.putc(0x02); // reset Touch Area to whole screen
star297 0:0e93e95bab96 358 getResponse();
star297 0:0e93e95bab96 359 }
star297 0:0e93e95bab96 360 void OLED32028P1T::waitTouch(int x){
star297 0:0e93e95bab96 361 s.putc(0x77); // wait Touch command
star297 0:0e93e95bab96 362 s.putc(x >> 8); // MSB
star297 0:0e93e95bab96 363 s.putc(x & 0xFF); // LSB
star297 0:0e93e95bab96 364 getResponse();
star297 0:0e93e95bab96 365 }
star297 0:0e93e95bab96 366 unsigned char OLED32028P1T::stringSD(int x1, int y1, int x2, int y2, int colour, unsigned char font, unsigned char fill, int BS, int BR, char name[]){
star297 0:0e93e95bab96 367 //Draw a String from a text file contained on the micro SD card on the screen
star297 0:0e93e95bab96 368 unsigned char counter=0;
star297 0:0e93e95bab96 369 s.putc('S');
star297 0:0e93e95bab96 370 s.putc('S'); //from SD
star297 0:0e93e95bab96 371 s.putc(x1>>8);
star297 0:0e93e95bab96 372 s.putc(x1);
star297 0:0e93e95bab96 373 s.putc(y1>>8);
star297 0:0e93e95bab96 374 s.putc(y1);
star297 0:0e93e95bab96 375 s.putc(x2>>8);
star297 0:0e93e95bab96 376 s.putc(x2);
star297 0:0e93e95bab96 377 s.putc(y2>>8);
star297 0:0e93e95bab96 378 s.putc(y2);
star297 0:0e93e95bab96 379 s.putc(colour>>8);
star297 0:0e93e95bab96 380 s.putc(colour);
star297 0:0e93e95bab96 381 s.putc(font);
star297 0:0e93e95bab96 382 s.putc(fill);
star297 0:0e93e95bab96 383 s.putc(BS>>8);
star297 0:0e93e95bab96 384 s.putc(BS);
star297 0:0e93e95bab96 385 s.putc(BR>>8);
star297 0:0e93e95bab96 386 s.putc(BR);
star297 0:0e93e95bab96 387 while(1){
star297 0:0e93e95bab96 388 s.putc(name[counter]);
star297 0:0e93e95bab96 389 if(name[counter]==0x00){
star297 0:0e93e95bab96 390 break;
star297 0:0e93e95bab96 391 }
star297 0:0e93e95bab96 392 counter++;
star297 0:0e93e95bab96 393 }
star297 0:0e93e95bab96 394 return s.getc();
star297 0:0e93e95bab96 395 }
star297 0:0e93e95bab96 396 unsigned char OLED32028P1T::imageSD(int x, int y, char name[]){
star297 0:0e93e95bab96 397 //Draw an Image contained on the micro SD card on the screen, top left corner coordinates
star297 0:0e93e95bab96 398 unsigned char counter=0;
star297 0:0e93e95bab96 399 s.putc('I');
star297 0:0e93e95bab96 400 s.putc('S'); //from SD
star297 0:0e93e95bab96 401 s.putc(x>>8);
star297 0:0e93e95bab96 402 s.putc(x);
star297 0:0e93e95bab96 403 s.putc(y>>8);
star297 0:0e93e95bab96 404 s.putc(y);
star297 0:0e93e95bab96 405 while(1){
star297 0:0e93e95bab96 406 s.putc(name[counter]);
star297 0:0e93e95bab96 407 if(name[counter]==0x00){
star297 0:0e93e95bab96 408 break;
star297 0:0e93e95bab96 409 }
star297 0:0e93e95bab96 410 counter++;
star297 0:0e93e95bab96 411 }
star297 0:0e93e95bab96 412 return s.getc();
star297 0:0e93e95bab96 413 }
star297 0:0e93e95bab96 414 int OLED32028P1T::_putc(int value){
star297 0:0e93e95bab96 415 if (value == '\n') {
star297 0:0e93e95bab96 416 _column = 0;
star297 0:0e93e95bab96 417 _row++;
star297 0:0e93e95bab96 418 if(_row >= rows()) {
star297 0:0e93e95bab96 419 _row = 0;
star297 0:0e93e95bab96 420 }
star297 0:0e93e95bab96 421 } else {
star297 0:0e93e95bab96 422 drawSingleChar(_column, _row, value, _fontColor);
star297 0:0e93e95bab96 423 wait_ms(1); //TODO: why is this needed?
star297 0:0e93e95bab96 424 _column++;
star297 0:0e93e95bab96 425 if (_column >= columns()) {
star297 0:0e93e95bab96 426 _column = 0;
star297 0:0e93e95bab96 427 _row++;
star297 0:0e93e95bab96 428 if(_row >= rows()) {
star297 0:0e93e95bab96 429 _row = 0;
star297 0:0e93e95bab96 430 } } }
star297 0:0e93e95bab96 431 return value;
star297 0:0e93e95bab96 432 }
star297 0:0e93e95bab96 433 void OLED32028P1T::locate(int column, int row){
star297 0:0e93e95bab96 434 _column = column;
star297 0:0e93e95bab96 435 _row = row;
star297 0:0e93e95bab96 436 }
star297 0:0e93e95bab96 437 int OLED32028P1T::rows(){
star297 0:0e93e95bab96 438 return 30;
star297 0:0e93e95bab96 439 }
star297 0:0e93e95bab96 440 int OLED32028P1T::columns(){
star297 0:0e93e95bab96 441 return 55;
star297 0:0e93e95bab96 442 }
star297 0:0e93e95bab96 443 int OLED32028P1T::_getc(){
star297 0:0e93e95bab96 444 return -1;
star297 0:0e93e95bab96 445 }