Eric Johnson / Mbed 2 deprecated SSD1306-I2C

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SSD1306-Library.h Source File

SSD1306-Library.h

00001 /*
00002  * SSD1306-Libary.h
00003  *
00004  *  Created on: Jan 1, 2017
00005  *      Author: johnsone
00006  */
00007 
00008 #ifndef SOURCE_SSD1306_LIBARY_H_
00009 #define SOURCE_SSD1306_LIBARY_H_
00010 
00011 #include "Adafruit_GFX.h"
00012 
00013 #include <stdint.h>
00014 
00015 #define SSD1306_LCDWIDTH                  128
00016 #define SSD1306_LCDHEIGHT                 64
00017 
00018 #define BLACK 0
00019 #define WHITE 1
00020 #define INVERSE 2
00021 
00022 #define SSD1306_SETCONTRAST 0x81
00023 #define SSD1306_DISPLAYALLON_RESUME 0xA4
00024 #define SSD1306_DISPLAYALLON 0xA5
00025 #define SSD1306_NORMALDISPLAY 0xA6
00026 #define SSD1306_INVERTDISPLAY 0xA7
00027 #define SSD1306_DISPLAYOFF 0xAE
00028 #define SSD1306_DISPLAYON 0xAF
00029 
00030 #define SSD1306_SETDISPLAYOFFSET 0xD3
00031 #define SSD1306_SETCOMPINS 0xDA
00032 
00033 #define SSD1306_SETVCOMDETECT 0xDB
00034 
00035 #define SSD1306_SETDISPLAYCLOCKDIV 0xD5
00036 #define SSD1306_SETPRECHARGE 0xD9
00037 
00038 #define SSD1306_SETMULTIPLEX 0xA8
00039 
00040 #define SSD1306_SETLOWCOLUMN 0x00
00041 #define SSD1306_SETHIGHCOLUMN 0x10
00042 
00043 #define SSD1306_SETSTARTLINE 0x40
00044 
00045 #define SSD1306_MEMORYMODE 0x20
00046 #define SSD1306_COLUMNADDR 0x21
00047 #define SSD1306_PAGEADDR   0x22
00048 
00049 #define SSD1306_COMSCANINC 0xC0
00050 #define SSD1306_COMSCANDEC 0xC8
00051 
00052 #define SSD1306_SEGREMAP 0xA0
00053 
00054 #define SSD1306_CHARGEPUMP 0x8D
00055 
00056 // Scrolling #defines
00057 #define SSD1306_ACTIVATE_SCROLL 0x2F
00058 #define SSD1306_DEACTIVATE_SCROLL 0x2E
00059 #define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3
00060 #define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26
00061 #define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27
00062 #define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29
00063 #define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A
00064 
00065 
00066 class SSD1306 : public Adafruit_GFX {
00067   public:
00068     SSD1306(int16_t w=SSD1306_LCDWIDTH, int16_t h=SSD1306_LCDHEIGHT);
00069 
00070     void drawPixel(int16_t x, int16_t y, uint16_t color);
00071 
00072     void hw_setup();
00073 
00074     void begin(bool reset=true);
00075     void display(void);
00076 
00077     void clearDisplay(void);
00078     void invertDisplay(uint8_t i);
00079     void startscrollleft(uint8_t start, uint8_t stop);
00080     void startscrollright(uint8_t start, uint8_t stop);
00081     void startscrolldiagright(uint8_t start, uint8_t stop);
00082     void startscrolldiagleft(uint8_t start, uint8_t stop);
00083     void stopscroll(void);
00084     void dim(bool dim);
00085     void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
00086     void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
00087 
00088 
00089   protected:
00090   int16_t
00091      _width, _height; // Display w/h as modified by current rotation
00092 
00093    uint8_t
00094      textsize,
00095      rotation;
00096 
00097   private:
00098     void _sendData(const uint8_t *blk, uint32_t len, bool isData);
00099     void sendCommands(const uint8_t *blk, uint32_t len);
00100     void sendData(const uint8_t *blk, uint32_t len);
00101 
00102     //void ssd1306_command(uint8_t c);
00103 
00104     void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color);
00105     void drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color);
00106 
00107     void _scroll(uint8_t mode, uint8_t start, uint8_t stop);
00108 };
00109 
00110 
00111 
00112 #endif /* SOURCE_SSD1306_LIBARY_H_ */