Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Adafruit_GFX by
Adafruit_SSD1351.h@17:56015e4834e6, 2016-02-24 (annotated)
- Committer:
- Dzhafarkhanov
- Date:
- Wed Feb 24 12:24:42 2016 +0000
- Revision:
- 17:56015e4834e6
- Parent:
- Adafruit_SSD1306.h@15:77feec1c0684
SSD1351;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Dzhafarkhanov | 17:56015e4834e6 | 1 | /*************************************************** |
| Dzhafarkhanov | 17:56015e4834e6 | 2 | This is a library for the 1.5" & 1.27" 16-bit Color OLEDs |
| Dzhafarkhanov | 17:56015e4834e6 | 3 | with SSD1331 driver chip |
| nkhorman | 0:c3dcd4c4983a | 4 | |
| nkhorman | 0:c3dcd4c4983a | 5 | Pick one up today in the adafruit shop! |
| Dzhafarkhanov | 17:56015e4834e6 | 6 | ------> http://www.adafruit.com/products/1431 |
| Dzhafarkhanov | 17:56015e4834e6 | 7 | ------> http://www.adafruit.com/products/1673 |
| nkhorman | 0:c3dcd4c4983a | 8 | |
| Dzhafarkhanov | 17:56015e4834e6 | 9 | These displays use SPI to communicate, 4 or 5 pins are required to |
| Dzhafarkhanov | 17:56015e4834e6 | 10 | interface |
| Dzhafarkhanov | 17:56015e4834e6 | 11 | Adafruit invests time and resources providing this open source code, |
| Dzhafarkhanov | 17:56015e4834e6 | 12 | please support Adafruit and open-source hardware by purchasing |
| Dzhafarkhanov | 17:56015e4834e6 | 13 | products from Adafruit! |
| nkhorman | 0:c3dcd4c4983a | 14 | |
| Dzhafarkhanov | 17:56015e4834e6 | 15 | Written by Limor Fried/Ladyada for Adafruit Industries. |
| Dzhafarkhanov | 17:56015e4834e6 | 16 | BSD license, all text above must be included in any redistribution |
| Dzhafarkhanov | 17:56015e4834e6 | 17 | ****************************************************/ |
| nkhorman | 0:c3dcd4c4983a | 18 | |
| Dzhafarkhanov | 17:56015e4834e6 | 19 | |
| nkhorman | 0:c3dcd4c4983a | 20 | |
| Dzhafarkhanov | 17:56015e4834e6 | 21 | //#ifndef _ADAFRUIT_SSD1351_H_ |
| Dzhafarkhanov | 17:56015e4834e6 | 22 | //#define _ADAFRUIT_SSD1351_H_ |
| nkhorman | 0:c3dcd4c4983a | 23 | |
| nkhorman | 0:c3dcd4c4983a | 24 | #include "mbed.h" |
| nkhorman | 0:c3dcd4c4983a | 25 | #include "Adafruit_GFX.h" |
| nkhorman | 0:c3dcd4c4983a | 26 | |
| nkhorman | 9:ddb97c9850a2 | 27 | #include <vector> |
| nkhorman | 9:ddb97c9850a2 | 28 | #include <algorithm> |
| nkhorman | 0:c3dcd4c4983a | 29 | |
| Dzhafarkhanov | 17:56015e4834e6 | 30 | |
| Dzhafarkhanov | 17:56015e4834e6 | 31 | |
| Dzhafarkhanov | 17:56015e4834e6 | 32 | |
| Dzhafarkhanov | 17:56015e4834e6 | 33 | |
| Dzhafarkhanov | 17:56015e4834e6 | 34 | |
| Dzhafarkhanov | 17:56015e4834e6 | 35 | /* some 16bit RGB color definitions */ |
| Dzhafarkhanov | 17:56015e4834e6 | 36 | enum Color{ |
| Dzhafarkhanov | 17:56015e4834e6 | 37 | Black = 0x0000, /* 0, 0, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 38 | Navy = 0x000F, /* 0, 0, 128 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 39 | DarkGreen = 0x03E0, /* 0, 128, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 40 | DarkCyan = 0x03EF, /* 0, 128, 128 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 41 | Maroon = 0x7800, /* 128, 0, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 42 | Purple = 0x780F, /* 128, 0, 128 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 43 | Olive = 0x7BE0, /* 128, 128, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 44 | LightGrey = 0xC618, /* 192, 192, 192 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 45 | DarkGrey = 0x7BEF, /* 128, 128, 128 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 46 | Blue = 0x001F, /* 0, 0, 255 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 47 | Green = 0x07E0, /* 0, 255, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 48 | Cyan = 0x07FF, /* 0, 255, 255 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 49 | Red = 0xF800, /* 255, 0, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 50 | Magenta = 0xF81F, /* 255, 0, 255 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 51 | Yellow = 0xFFE0, /* 255, 255, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 52 | White = 0xFFFF, /* 255, 255, 255 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 53 | Orange = 0xFD20, /* 255, 165, 0 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 54 | GreenYellow = 0xAFE5, /* 173, 255, 47 */ |
| Dzhafarkhanov | 17:56015e4834e6 | 55 | Pink = 0xF81F |
| Dzhafarkhanov | 17:56015e4834e6 | 56 | }; |
| Dzhafarkhanov | 17:56015e4834e6 | 57 | |
| Dzhafarkhanov | 17:56015e4834e6 | 58 | |
| nkhorman | 9:ddb97c9850a2 | 59 | // A DigitalOut sub-class that provides a constructed default state |
| nkhorman | 9:ddb97c9850a2 | 60 | class DigitalOut2 : public DigitalOut |
| nkhorman | 9:ddb97c9850a2 | 61 | { |
| nkhorman | 9:ddb97c9850a2 | 62 | public: |
| nkhorman | 9:ddb97c9850a2 | 63 | DigitalOut2(PinName pin, bool active = false) : DigitalOut(pin) { write(active); }; |
| nkhorman | 9:ddb97c9850a2 | 64 | DigitalOut2& operator= (int value) { write(value); return *this; }; |
| nkhorman | 9:ddb97c9850a2 | 65 | DigitalOut2& operator= (DigitalOut2& rhs) { write(rhs.read()); return *this; }; |
| nkhorman | 9:ddb97c9850a2 | 66 | operator int() { return read(); }; |
| nkhorman | 9:ddb97c9850a2 | 67 | }; |
| Neal Horman |
6:1be3e3b46eb7 | 68 | |
| Dzhafarkhanov | 17:56015e4834e6 | 69 | |
| nkhorman | 0:c3dcd4c4983a | 70 | |
| Dzhafarkhanov | 17:56015e4834e6 | 71 | |
| Dzhafarkhanov | 17:56015e4834e6 | 72 | /** The pure base class for the SSD1351 display driver. |
| nkhorman | 11:86909e6db3c8 | 73 | * |
| Dzhafarkhanov | 17:56015e4834e6 | 74 | |
| nkhorman | 11:86909e6db3c8 | 75 | */ |
| Dzhafarkhanov | 17:56015e4834e6 | 76 | class Adafruit_SSD1351 : public Adafruit_GFX |
| nkhorman | 0:c3dcd4c4983a | 77 | { |
| nkhorman | 9:ddb97c9850a2 | 78 | public: |
| Dzhafarkhanov | 17:56015e4834e6 | 79 | Adafruit_SSD1351(PinName RST, uint8_t rawHeight = 96, uint8_t rawWidth = 128) |
| nkhorman | 9:ddb97c9850a2 | 80 | : Adafruit_GFX(rawWidth,rawHeight) |
| nkhorman | 9:ddb97c9850a2 | 81 | , rst(RST,false) |
| nkhorman | 11:86909e6db3c8 | 82 | { |
| Dzhafarkhanov | 17:56015e4834e6 | 83 | |
| Dzhafarkhanov | 17:56015e4834e6 | 84 | |
| Dzhafarkhanov | 17:56015e4834e6 | 85 | |
| nkhorman | 11:86909e6db3c8 | 86 | }; |
| nkhorman | 9:ddb97c9850a2 | 87 | |
| Dzhafarkhanov | 17:56015e4834e6 | 88 | void begin(); |
| Dzhafarkhanov | 17:56015e4834e6 | 89 | void goTo(int x, int y); |
| Dzhafarkhanov | 17:56015e4834e6 | 90 | uint16_t Color565(uint8_t r, uint8_t g, uint8_t b); |
| Dzhafarkhanov | 17:56015e4834e6 | 91 | virtual void fillScreen(uint16_t fillcolor); |
| Dzhafarkhanov | 17:56015e4834e6 | 92 | virtual void rawFillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t fillcolor); |
| Dzhafarkhanov | 17:56015e4834e6 | 93 | void fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t fillcolor); |
| Dzhafarkhanov | 17:56015e4834e6 | 94 | void rawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); |
| Dzhafarkhanov | 17:56015e4834e6 | 95 | void rawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); |
| Dzhafarkhanov | 17:56015e4834e6 | 96 | virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); |
| Dzhafarkhanov | 17:56015e4834e6 | 97 | virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); |
| Dzhafarkhanov | 17:56015e4834e6 | 98 | void setContrastControl(uint8_t contrast); |
| Dzhafarkhanov | 17:56015e4834e6 | 99 | |
| Dzhafarkhanov | 17:56015e4834e6 | 100 | |
| Dzhafarkhanov | 17:56015e4834e6 | 101 | virtual void invert(bool v); |
| Dzhafarkhanov | 17:56015e4834e6 | 102 | |
| nkhorman | 11:86909e6db3c8 | 103 | |
| nkhorman | 11:86909e6db3c8 | 104 | // These must be implemented in the derived transport driver |
| Dzhafarkhanov | 17:56015e4834e6 | 105 | virtual void writeCommand(uint8_t c) = 0; |
| Dzhafarkhanov | 17:56015e4834e6 | 106 | virtual void writeData(uint8_t c) = 0; |
| nkhorman | 11:86909e6db3c8 | 107 | virtual void drawPixel(int16_t x, int16_t y, uint16_t color); |
| nkhorman | 11:86909e6db3c8 | 108 | |
| nkhorman | 9:ddb97c9850a2 | 109 | |
| nkhorman | 9:ddb97c9850a2 | 110 | protected: |
| Dzhafarkhanov | 17:56015e4834e6 | 111 | |
| nkhorman | 9:ddb97c9850a2 | 112 | DigitalOut2 rst; |
| nkhorman | 9:ddb97c9850a2 | 113 | |
| Dzhafarkhanov | 17:56015e4834e6 | 114 | |
| Dzhafarkhanov | 17:56015e4834e6 | 115 | |
| nkhorman | 9:ddb97c9850a2 | 116 | }; |
| nkhorman | 9:ddb97c9850a2 | 117 | |
| nkhorman | 11:86909e6db3c8 | 118 | |
| Dzhafarkhanov | 17:56015e4834e6 | 119 | /** This is the SPI SSD1351 display driver transport class |
| nkhorman | 11:86909e6db3c8 | 120 | * |
| nkhorman | 11:86909e6db3c8 | 121 | */ |
| Dzhafarkhanov | 17:56015e4834e6 | 122 | class Adafruit_SSD1351_Spi : public Adafruit_SSD1351 |
| nkhorman | 9:ddb97c9850a2 | 123 | { |
| nkhorman | 9:ddb97c9850a2 | 124 | public: |
| Dzhafarkhanov | 17:56015e4834e6 | 125 | /** Create a SSD1351 SPI transport display driver instance with the specified DC, RST, and CS pins, as well as the display dimentions |
| nkhorman | 11:86909e6db3c8 | 126 | * |
| nkhorman | 11:86909e6db3c8 | 127 | * Required parameters |
| nkhorman | 11:86909e6db3c8 | 128 | * @param spi - a reference to an initialized SPI object |
| nkhorman | 11:86909e6db3c8 | 129 | * @param DC (Data/Command) pin name |
| nkhorman | 11:86909e6db3c8 | 130 | * @param RST (Reset) pin name |
| nkhorman | 11:86909e6db3c8 | 131 | * @param CS (Chip Select) pin name |
| nkhorman | 11:86909e6db3c8 | 132 | * |
| nkhorman | 11:86909e6db3c8 | 133 | * Optional parameters |
| Dzhafarkhanov | 17:56015e4834e6 | 134 | * @param rawHeight - the vertical number of pixels for the display, defaults to 96 |
| nkhorman | 11:86909e6db3c8 | 135 | * @param rawWidth - the horizonal number of pixels for the display, defaults to 128 |
| nkhorman | 11:86909e6db3c8 | 136 | */ |
| Dzhafarkhanov | 17:56015e4834e6 | 137 | Adafruit_SSD1351_Spi(SPI &spi, PinName DC, PinName RST, PinName CS, uint8_t rawHieght = 96, uint8_t rawWidth = 128) |
| Dzhafarkhanov | 17:56015e4834e6 | 138 | : Adafruit_SSD1351(RST, rawHieght, rawWidth) |
| nkhorman | 9:ddb97c9850a2 | 139 | , cs(CS,true) |
| Dzhafarkhanov | 17:56015e4834e6 | 140 | , dc(DC,false) |
| nkhorman | 9:ddb97c9850a2 | 141 | , mspi(spi) |
| nkhorman | 9:ddb97c9850a2 | 142 | { |
| nkhorman | 9:ddb97c9850a2 | 143 | begin(); |
| Dzhafarkhanov | 17:56015e4834e6 | 144 | |
| Dzhafarkhanov | 17:56015e4834e6 | 145 | |
| nkhorman | 9:ddb97c9850a2 | 146 | }; |
| nkhorman | 9:ddb97c9850a2 | 147 | |
| Dzhafarkhanov | 17:56015e4834e6 | 148 | virtual void writeCommand(uint8_t c) |
| nkhorman | 9:ddb97c9850a2 | 149 | { |
| Dzhafarkhanov | 17:56015e4834e6 | 150 | |
| Dzhafarkhanov | 17:56015e4834e6 | 151 | dc = 0; |
| nkhorman | 9:ddb97c9850a2 | 152 | cs = 0; |
| nkhorman | 9:ddb97c9850a2 | 153 | mspi.write(c); |
| nkhorman | 9:ddb97c9850a2 | 154 | cs = 1; |
| nkhorman | 9:ddb97c9850a2 | 155 | }; |
| nkhorman | 9:ddb97c9850a2 | 156 | |
| Dzhafarkhanov | 17:56015e4834e6 | 157 | virtual void writeData(uint8_t c) |
| nkhorman | 9:ddb97c9850a2 | 158 | { |
| Dzhafarkhanov | 17:56015e4834e6 | 159 | |
| Dzhafarkhanov | 17:56015e4834e6 | 160 | dc = 1; |
| Dzhafarkhanov | 17:56015e4834e6 | 161 | cs = 0; |
| Dzhafarkhanov | 17:56015e4834e6 | 162 | |
| Dzhafarkhanov | 17:56015e4834e6 | 163 | mspi.write(c); |
| Dzhafarkhanov | 17:56015e4834e6 | 164 | |
| Dzhafarkhanov | 17:56015e4834e6 | 165 | cs = 1; |
| nkhorman | 9:ddb97c9850a2 | 166 | }; |
| nkhorman | 9:ddb97c9850a2 | 167 | |
| Dzhafarkhanov | 17:56015e4834e6 | 168 | |
| Dzhafarkhanov | 17:56015e4834e6 | 169 | protected: |
| Dzhafarkhanov | 17:56015e4834e6 | 170 | |
| nkhorman | 9:ddb97c9850a2 | 171 | DigitalOut2 cs, dc; |
| nkhorman | 9:ddb97c9850a2 | 172 | SPI &mspi; |
| nkhorman | 9:ddb97c9850a2 | 173 | }; |
| nkhorman | 9:ddb97c9850a2 | 174 |
