Final

Dependencies:   IRremote HCSR04 TB6612FNG

Committer:
eunmango
Date:
Sun Jun 16 04:51:51 2019 +0000
Revision:
97:59d348745d96
s

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eunmango 97:59d348745d96 1 /*
eunmango 97:59d348745d96 2 * SSD1306-Libary.h
eunmango 97:59d348745d96 3 *
eunmango 97:59d348745d96 4 * Created on: Jan 1, 2017
eunmango 97:59d348745d96 5 * Author: johnsone
eunmango 97:59d348745d96 6 */
eunmango 97:59d348745d96 7
eunmango 97:59d348745d96 8 #ifndef SOURCE_SSD1306_LIBARY_H_
eunmango 97:59d348745d96 9 #define SOURCE_SSD1306_LIBARY_H_
eunmango 97:59d348745d96 10
eunmango 97:59d348745d96 11 #include "Adafruit_GFX.h"
eunmango 97:59d348745d96 12
eunmango 97:59d348745d96 13 #include <stdint.h>
eunmango 97:59d348745d96 14
eunmango 97:59d348745d96 15 #define SSD1306_LCDWIDTH 128
eunmango 97:59d348745d96 16 #define SSD1306_LCDHEIGHT 64
eunmango 97:59d348745d96 17
eunmango 97:59d348745d96 18 #define BLACK 0
eunmango 97:59d348745d96 19 #define WHITE 1
eunmango 97:59d348745d96 20 #define INVERSE 2
eunmango 97:59d348745d96 21
eunmango 97:59d348745d96 22 #define SSD1306_SETCONTRAST 0x81
eunmango 97:59d348745d96 23 #define SSD1306_DISPLAYALLON_RESUME 0xA4
eunmango 97:59d348745d96 24 #define SSD1306_DISPLAYALLON 0xA5
eunmango 97:59d348745d96 25 #define SSD1306_NORMALDISPLAY 0xA6
eunmango 97:59d348745d96 26 #define SSD1306_INVERTDISPLAY 0xA7
eunmango 97:59d348745d96 27 #define SSD1306_DISPLAYOFF 0xAE
eunmango 97:59d348745d96 28 #define SSD1306_DISPLAYON 0xAF
eunmango 97:59d348745d96 29
eunmango 97:59d348745d96 30 #define SSD1306_SETDISPLAYOFFSET 0xD3
eunmango 97:59d348745d96 31 #define SSD1306_SETCOMPINS 0xDA
eunmango 97:59d348745d96 32
eunmango 97:59d348745d96 33 #define SSD1306_SETVCOMDETECT 0xDB
eunmango 97:59d348745d96 34
eunmango 97:59d348745d96 35 #define SSD1306_SETDISPLAYCLOCKDIV 0xD5
eunmango 97:59d348745d96 36 #define SSD1306_SETPRECHARGE 0xD9
eunmango 97:59d348745d96 37
eunmango 97:59d348745d96 38 #define SSD1306_SETMULTIPLEX 0xA8
eunmango 97:59d348745d96 39
eunmango 97:59d348745d96 40 #define SSD1306_SETLOWCOLUMN 0x00
eunmango 97:59d348745d96 41 #define SSD1306_SETHIGHCOLUMN 0x10
eunmango 97:59d348745d96 42
eunmango 97:59d348745d96 43 #define SSD1306_SETSTARTLINE 0x40
eunmango 97:59d348745d96 44
eunmango 97:59d348745d96 45 #define SSD1306_MEMORYMODE 0x20
eunmango 97:59d348745d96 46 #define SSD1306_COLUMNADDR 0x21
eunmango 97:59d348745d96 47 #define SSD1306_PAGEADDR 0x22
eunmango 97:59d348745d96 48
eunmango 97:59d348745d96 49 #define SSD1306_COMSCANINC 0xC0
eunmango 97:59d348745d96 50 #define SSD1306_COMSCANDEC 0xC8
eunmango 97:59d348745d96 51
eunmango 97:59d348745d96 52 #define SSD1306_SEGREMAP 0xA0
eunmango 97:59d348745d96 53
eunmango 97:59d348745d96 54 #define SSD1306_CHARGEPUMP 0x8D
eunmango 97:59d348745d96 55
eunmango 97:59d348745d96 56 // Scrolling #defines
eunmango 97:59d348745d96 57 #define SSD1306_ACTIVATE_SCROLL 0x2F
eunmango 97:59d348745d96 58 #define SSD1306_DEACTIVATE_SCROLL 0x2E
eunmango 97:59d348745d96 59 #define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3
eunmango 97:59d348745d96 60 #define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26
eunmango 97:59d348745d96 61 #define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27
eunmango 97:59d348745d96 62 #define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29
eunmango 97:59d348745d96 63 #define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A
eunmango 97:59d348745d96 64
eunmango 97:59d348745d96 65
eunmango 97:59d348745d96 66 class SSD1306 : public Adafruit_GFX {
eunmango 97:59d348745d96 67 public:
eunmango 97:59d348745d96 68 SSD1306(int16_t w=SSD1306_LCDWIDTH, int16_t h=SSD1306_LCDHEIGHT);
eunmango 97:59d348745d96 69
eunmango 97:59d348745d96 70 void drawPixel(int16_t x, int16_t y, uint16_t color);
eunmango 97:59d348745d96 71
eunmango 97:59d348745d96 72 void hw_setup();
eunmango 97:59d348745d96 73
eunmango 97:59d348745d96 74 void begin(bool reset=true);
eunmango 97:59d348745d96 75 void display(void);
eunmango 97:59d348745d96 76
eunmango 97:59d348745d96 77 void clearDisplay(void);
eunmango 97:59d348745d96 78 void invertDisplay(uint8_t i);
eunmango 97:59d348745d96 79 void startscrollleft(uint8_t start, uint8_t stop);
eunmango 97:59d348745d96 80 void startscrollright(uint8_t start, uint8_t stop);
eunmango 97:59d348745d96 81 void startscrolldiagright(uint8_t start, uint8_t stop);
eunmango 97:59d348745d96 82 void startscrolldiagleft(uint8_t start, uint8_t stop);
eunmango 97:59d348745d96 83 void stopscroll(void);
eunmango 97:59d348745d96 84 void dim(bool dim);
eunmango 97:59d348745d96 85 void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
eunmango 97:59d348745d96 86 void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
eunmango 97:59d348745d96 87
eunmango 97:59d348745d96 88
eunmango 97:59d348745d96 89 protected:
eunmango 97:59d348745d96 90 int16_t
eunmango 97:59d348745d96 91 _width, _height; // Display w/h as modified by current rotation
eunmango 97:59d348745d96 92
eunmango 97:59d348745d96 93 uint8_t
eunmango 97:59d348745d96 94 textsize,
eunmango 97:59d348745d96 95 rotation;
eunmango 97:59d348745d96 96
eunmango 97:59d348745d96 97 private:
eunmango 97:59d348745d96 98 void _sendData(const uint8_t *blk, uint32_t len, bool isData);
eunmango 97:59d348745d96 99 void sendCommands(const uint8_t *blk, uint32_t len);
eunmango 97:59d348745d96 100 void sendData(const uint8_t *blk, uint32_t len);
eunmango 97:59d348745d96 101
eunmango 97:59d348745d96 102 //void ssd1306_command(uint8_t c);
eunmango 97:59d348745d96 103
eunmango 97:59d348745d96 104 void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color);
eunmango 97:59d348745d96 105 void drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color);
eunmango 97:59d348745d96 106
eunmango 97:59d348745d96 107 void _scroll(uint8_t mode, uint8_t start, uint8_t stop);
eunmango 97:59d348745d96 108 };
eunmango 97:59d348745d96 109
eunmango 97:59d348745d96 110
eunmango 97:59d348745d96 111
eunmango 97:59d348745d96 112 #endif /* SOURCE_SSD1306_LIBARY_H_ */