Dmitry Dzhafarkhanov / Adafruit_GFX

Fork of Adafruit_GFX by Neal Horman

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?

UserRevisionLine numberNew 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