1

Dependents:   BLE_TemperatureObserver

Committer:
JojoS
Date:
Mon Jul 24 21:32:55 2017 +0200
Revision:
22:818c271c30fa
add driver for UC1601S display

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JojoS 22:818c271c30fa 1 /*********************************************************************
JojoS 22:818c271c30fa 2 This is a library for our Monochrome OLEDs based on SSD1306 drivers
JojoS 22:818c271c30fa 3
JojoS 22:818c271c30fa 4 Pick one up today in the adafruit shop!
JojoS 22:818c271c30fa 5 ------> http://www.adafruit.com/category/63_98
JojoS 22:818c271c30fa 6
JojoS 22:818c271c30fa 7 These displays use SPI to communicate, 4 or 5 pins are required to
JojoS 22:818c271c30fa 8 interface
JojoS 22:818c271c30fa 9
JojoS 22:818c271c30fa 10 Adafruit invests time and resources providing this open source code,
JojoS 22:818c271c30fa 11 please support Adafruit and open-source hardware by purchasing
JojoS 22:818c271c30fa 12 products from Adafruit!
JojoS 22:818c271c30fa 13
JojoS 22:818c271c30fa 14 Written by Limor Fried/Ladyada for Adafruit Industries.
JojoS 22:818c271c30fa 15 BSD license, check license.txt for more information
JojoS 22:818c271c30fa 16 All text above, and the splash screen below must be included in any redistribution
JojoS 22:818c271c30fa 17 *********************************************************************/
JojoS 22:818c271c30fa 18
JojoS 22:818c271c30fa 19 /*
JojoS 22:818c271c30fa 20 * Modified by JojoS 03/07/2015
JojoS 22:818c271c30fa 21 * add flipVertical option to constructor
JojoS 22:818c271c30fa 22 * add use of 'rst' is optional, maybe NC in constructor
JojoS 22:818c271c30fa 23 * add command SSD1306_SETPAGESTARTADDRESS to reset page start address (important when no hardware reset is uesed)
JojoS 22:818c271c30fa 24 */
JojoS 22:818c271c30fa 25
JojoS 22:818c271c30fa 26 #include "mbed.h"
JojoS 22:818c271c30fa 27 #include "Adafruit_UC1601S.h"
JojoS 22:818c271c30fa 28
JojoS 22:818c271c30fa 29 Adafruit_UC1601S::Adafruit_UC1601S(PinName reset, uint8_t rawHeight, uint8_t rawWidth, bool flipVertical)
JojoS 22:818c271c30fa 30 : Adafruit_GFX(rawWidth, rawHeight)
JojoS 22:818c271c30fa 31 , _reset(reset, false)
JojoS 22:818c271c30fa 32 , _flipVertical(flipVertical)
JojoS 22:818c271c30fa 33 {
JojoS 22:818c271c30fa 34 // display memory is organized in 1 byte = 8 columns
JojoS 22:818c271c30fa 35 int heightBytes = rawHeight / 8;
JojoS 22:818c271c30fa 36 if (rawHeight % 8) // correction if height is not byte aligned
JojoS 22:818c271c30fa 37 heightBytes++;
JojoS 22:818c271c30fa 38 buffer.resize(rawWidth * heightBytes);
JojoS 22:818c271c30fa 39 }
JojoS 22:818c271c30fa 40
JojoS 22:818c271c30fa 41 void Adafruit_UC1601S::begin() {
JojoS 22:818c271c30fa 42 if (_reset.is_connected()) {// reset input is not present on every UC1601S display board, so usage is optional
JojoS 22:818c271c30fa 43 _reset = 1;
JojoS 22:818c271c30fa 44 // VDD (3.3V) goes high at start, lets just chill for a ms
JojoS 22:818c271c30fa 45 wait_ms(1);
JojoS 22:818c271c30fa 46 // bring reset low
JojoS 22:818c271c30fa 47 _reset = 0;
JojoS 22:818c271c30fa 48 // wait 10ms
JojoS 22:818c271c30fa 49 wait_ms(10);
JojoS 22:818c271c30fa 50 // bring out of reset
JojoS 22:818c271c30fa 51 _reset = 1;
JojoS 22:818c271c30fa 52 // turn on VCC (9V?)
JojoS 22:818c271c30fa 53 }
JojoS 22:818c271c30fa 54
JojoS 22:818c271c30fa 55 command(LCD_SET_TEMP_COMP | 0b00); // Set Temperature Comp. TC[1:0]
JojoS 22:818c271c30fa 56 command(LCD_SET_POWER_CTRL | 0b110); // Set Power Control PC[2:0]
JojoS 22:818c271c30fa 57 command(LCD_SET_LINE_ADDR | 0); // Set Scroll Line SL[5:0]
JojoS 22:818c271c30fa 58 command(LCD_SET_BIAS); // Set VBIAS Potentiometer (Double byte command)
JojoS 22:818c271c30fa 59 command(0xC0); // BIAS value
JojoS 22:818c271c30fa 60 command(LCD_SET_PARTITIAL_CTRL | 0);
JojoS 22:818c271c30fa 61 command(LCD_SET_RAM_ADDRESS_CTRL | 0b001); //
JojoS 22:818c271c30fa 62 command(LCD_SET_FRAME_RATE | 0); // Framerate 0: 80 fps 1: 100 fps
JojoS 22:818c271c30fa 63 command(LCD_SET_MAPPING_CTRL | (_flipVertical ? 0b000 : 0b100));// flip vertical / horizontal
JojoS 22:818c271c30fa 64 command(LCD_SET_BIAS_RATIO | 0); // 0: 6 1: 7 2: 8 3: 9
JojoS 22:818c271c30fa 65 command(LCD_SET_COM_END);
JojoS 22:818c271c30fa 66 command(21); // Rows - 1
JojoS 22:818c271c30fa 67 command(LCD_ENABLE_DISPLAY | 1); // enable display)
JojoS 22:818c271c30fa 68 }
JojoS 22:818c271c30fa 69
JojoS 22:818c271c30fa 70 // Set a single pixel
JojoS 22:818c271c30fa 71 void Adafruit_UC1601S::drawPixel(int16_t x, int16_t y, uint16_t color) {
JojoS 22:818c271c30fa 72 if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
JojoS 22:818c271c30fa 73 return;
JojoS 22:818c271c30fa 74
JojoS 22:818c271c30fa 75 // check rotation, move pixel around if necessary
JojoS 22:818c271c30fa 76 switch (getRotation()) {
JojoS 22:818c271c30fa 77 case 1:
JojoS 22:818c271c30fa 78 swap(x, y);
JojoS 22:818c271c30fa 79 x = _rawWidth - x - 1;
JojoS 22:818c271c30fa 80 break;
JojoS 22:818c271c30fa 81 case 2:
JojoS 22:818c271c30fa 82 x = _rawWidth - x - 1;
JojoS 22:818c271c30fa 83 y = _rawHeight - y - 1;
JojoS 22:818c271c30fa 84 break;
JojoS 22:818c271c30fa 85 case 3:
JojoS 22:818c271c30fa 86 swap(x, y);
JojoS 22:818c271c30fa 87 y = _rawHeight - y - 1;
JojoS 22:818c271c30fa 88 break;
JojoS 22:818c271c30fa 89 }
JojoS 22:818c271c30fa 90
JojoS 22:818c271c30fa 91 // x is which column
JojoS 22:818c271c30fa 92 if (color == WHITE)
JojoS 22:818c271c30fa 93 buffer[x + (y / 8) * _rawWidth] |= _BV((y % 8));
JojoS 22:818c271c30fa 94 else
JojoS 22:818c271c30fa 95 // else black
JojoS 22:818c271c30fa 96 buffer[x + (y / 8) * _rawWidth] &= ~_BV((y % 8));
JojoS 22:818c271c30fa 97 }
JojoS 22:818c271c30fa 98
JojoS 22:818c271c30fa 99 void Adafruit_UC1601S::invertDisplay(bool i) {
JojoS 22:818c271c30fa 100 command(i ? LCD_INVERT_DISPLAY | 1 : LCD_INVERT_DISPLAY);
JojoS 22:818c271c30fa 101 }
JojoS 22:818c271c30fa 102
JojoS 22:818c271c30fa 103 void Adafruit_UC1601S::flipVertical(bool flip) {
JojoS 22:818c271c30fa 104 _flipVertical = flip;
JojoS 22:818c271c30fa 105 if (flip) {
JojoS 22:818c271c30fa 106 command(LCD_SET_MAPPING_CTRL | 0b000);// flip vertical / horizontal
JojoS 22:818c271c30fa 107 command(LCD_SET_RAM_ADDRESS_CTRL | 0b101); //
JojoS 22:818c271c30fa 108 command(LCD_SET_COM_END);
JojoS 22:818c271c30fa 109 command(21); // Rows - 1
JojoS 22:818c271c30fa 110 } else {
JojoS 22:818c271c30fa 111 command(LCD_SET_MAPPING_CTRL | 0b100);// flip vertical / horizontal
JojoS 22:818c271c30fa 112 command(LCD_SET_RAM_ADDRESS_CTRL | 0b001); //
JojoS 22:818c271c30fa 113 command(LCD_SET_COM_END);
JojoS 22:818c271c30fa 114 command(21); // Rows - 1
JojoS 22:818c271c30fa 115 }
JojoS 22:818c271c30fa 116 }
JojoS 22:818c271c30fa 117
JojoS 22:818c271c30fa 118 // Send the display buffer out to the display
JojoS 22:818c271c30fa 119 void Adafruit_UC1601S::display(void) {
JojoS 22:818c271c30fa 120 sendDisplayBuffer();
JojoS 22:818c271c30fa 121 }
JojoS 22:818c271c30fa 122
JojoS 22:818c271c30fa 123 // Clear the display buffer. Requires a display() call at some point afterwards
JojoS 22:818c271c30fa 124 void Adafruit_UC1601S::clearDisplay(void) {
JojoS 22:818c271c30fa 125 std::fill(buffer.begin(), buffer.end(), 0);
JojoS 22:818c271c30fa 126 }
JojoS 22:818c271c30fa 127
JojoS 22:818c271c30fa 128 void Adafruit_UC1601S::splash(void) {
JojoS 22:818c271c30fa 129 #ifndef NO_SPLASH_ADAFRUIT
JojoS 22:818c271c30fa 130 const uint8_t adaFruitLogo[64 * 128 / 8] = {
JojoS 22:818c271c30fa 131 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
JojoS 22:818c271c30fa 135 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 136 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 140 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80,
JojoS 22:818c271c30fa 142 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF,
JojoS 22:818c271c30fa 143 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
JojoS 22:818c271c30fa 144 0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80,
JojoS 22:818c271c30fa 145 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8,
JojoS 22:818c271c30fa 146 0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 147 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80,
JojoS 22:818c271c30fa 148 0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01,
JojoS 22:818c271c30fa 150 0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF,
JojoS 22:818c271c30fa 151 0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00,
JojoS 22:818c271c30fa 152 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF,
JojoS 22:818c271c30fa 153 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF,
JojoS 22:818c271c30fa 154 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 155 0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F,
JojoS 22:818c271c30fa 156 0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC,
JojoS 22:818c271c30fa 157 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03,
JojoS 22:818c271c30fa 158 0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01,
JojoS 22:818c271c30fa 159 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00,
JojoS 22:818c271c30fa 160 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
JojoS 22:818c271c30fa 161 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03,
JojoS 22:818c271c30fa 162 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 163 // 128x32^^^ 128x64vvv
JojoS 22:818c271c30fa 164 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F,
JojoS 22:818c271c30fa 165 0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF,
JojoS 22:818c271c30fa 166 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 0x00, 0x00,
JojoS 22:818c271c30fa 167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 168 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00,
JojoS 22:818c271c30fa 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 172 0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F,
JojoS 22:818c271c30fa 173 0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0,
JojoS 22:818c271c30fa 174 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00,
JojoS 22:818c271c30fa 175 0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E,
JojoS 22:818c271c30fa 176 0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC,
JojoS 22:818c271c30fa 177 0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06,
JojoS 22:818c271c30fa 178 0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8,
JojoS 22:818c271c30fa 179 0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80,
JojoS 22:818c271c30fa 180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 181 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03,
JojoS 22:818c271c30fa 182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00,
JojoS 22:818c271c30fa 183 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C,
JojoS 22:818c271c30fa 184 0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F,
JojoS 22:818c271c30fa 185 0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00,
JojoS 22:818c271c30fa 186 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07,
JojoS 22:818c271c30fa 187 0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07,
JojoS 22:818c271c30fa 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
JojoS 22:818c271c30fa 195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
JojoS 22:818c271c30fa 196 };
JojoS 22:818c271c30fa 197
JojoS 22:818c271c30fa 198 std::copy(
JojoS 22:818c271c30fa 199 &adaFruitLogo[0]
JojoS 22:818c271c30fa 200 , &adaFruitLogo[0] + (_rawHeight == 32 ? sizeof(adaFruitLogo)/2 : sizeof(adaFruitLogo))
JojoS 22:818c271c30fa 201 , buffer.begin()
JojoS 22:818c271c30fa 202 );
JojoS 22:818c271c30fa 203 #endif
JojoS 22:818c271c30fa 204 }
JojoS 22:818c271c30fa 205
JojoS 22:818c271c30fa 206 /*
JojoS 22:818c271c30fa 207 *
JojoS 22:818c271c30fa 208 * I2C specific implementation
JojoS 22:818c271c30fa 209 *
JojoS 22:818c271c30fa 210 */
JojoS 22:818c271c30fa 211
JojoS 22:818c271c30fa 212 Adafruit_UC1601S_I2c::Adafruit_UC1601S_I2c(I2C &i2c, PinName reset,
JojoS 22:818c271c30fa 213 uint8_t i2cAddress, uint8_t rawHeight,
JojoS 22:818c271c30fa 214 uint8_t rawWidth, bool flipVertical) :
JojoS 22:818c271c30fa 215 Adafruit_UC1601S(reset, rawHeight, rawWidth, flipVertical), mi2c(i2c), mi2cAddress(
JojoS 22:818c271c30fa 216 i2cAddress) {
JojoS 22:818c271c30fa 217 begin();
JojoS 22:818c271c30fa 218 splash();
JojoS 22:818c271c30fa 219 display();
JojoS 22:818c271c30fa 220 }
JojoS 22:818c271c30fa 221
JojoS 22:818c271c30fa 222 void Adafruit_UC1601S_I2c::sendDisplayBuffer() {
JojoS 22:818c271c30fa 223 command(LCD_SET_PAGE_ADDR | 0);
JojoS 22:818c271c30fa 224 command(LCD_SET_COLUMN_ADDR_LSB | 0);
JojoS 22:818c271c30fa 225 command(LCD_SET_COLUMN_ADDR_MSB | 0);
JojoS 22:818c271c30fa 226
JojoS 22:818c271c30fa 227 data(&buffer[0], buffer.size());
JojoS 22:818c271c30fa 228 }
JojoS 22:818c271c30fa 229
JojoS 22:818c271c30fa 230 void Adafruit_UC1601S_I2c::command(uint8_t c) {
JojoS 22:818c271c30fa 231 mi2c.write(mi2cAddress, (const char*) &c, 1);
JojoS 22:818c271c30fa 232 }
JojoS 22:818c271c30fa 233
JojoS 22:818c271c30fa 234 void Adafruit_UC1601S_I2c::data(const uint8_t *c, int count) {
JojoS 22:818c271c30fa 235 mi2c.write(mi2cAddress + 2, (const char*) c, count);
JojoS 22:818c271c30fa 236 }
JojoS 22:818c271c30fa 237