diff options
Diffstat (limited to 'peripheral/libupm/src/lcd/ssd1306.h')
-rw-r--r-- | peripheral/libupm/src/lcd/ssd1306.h | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/peripheral/libupm/src/lcd/ssd1306.h b/peripheral/libupm/src/lcd/ssd1306.h deleted file mode 100644 index e1fbc46..0000000 --- a/peripheral/libupm/src/lcd/ssd1306.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Author: Marc Graham <marc@m2ag.net> - * Copyright (c) 2015 Intel Corporation - * - * Adapted from ssd1308 library. - * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com> - * Copyright (c) 2014 Intel Corporation. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#pragma once - -#include <string> -#include <mraa/i2c.hpp> -#include "lcd.h" -#include "ssd.h" - -namespace upm -{ -const uint8_t DISPLAY_CMD_SET_NORMAL_1306 = 0xA6; -const uint8_t SSD1306_SETCONTRAST = 0x81; -const uint8_t SSD1306_DISPLAYALLON_RESUME =0xA4; -const uint8_t SSD1306_DISPLAYALLON = 0xA5; -const uint8_t DISPLAY_CMD_SET_INVERT_1306 = 0xA7; - -const uint8_t SSD1306_SETDISPLAYOFFSET =0xD3; -const uint8_t SSD1306_SETCOMPINS = 0xDA; - -const uint8_t SSD1306_SETVCOMDETECT = 0xDB; - -const uint8_t SSD1306_SETDISPLAYCLOCKDIV = 0xD5; -const uint8_t SSD1306_SETPRECHARGE = 0xD9; - -const uint8_t SSD1306_SETMULTIPLEX = 0xA8; - -const uint8_t SSD1306_SETLOWCOLUM = 0x00; -const uint8_t SSD1306_SETHIGHCOLUMN = 0x10; - -const uint8_t SSD1306_SETSTARTLINE = 0x40; - -const uint8_t SSD1306_MEMORYMODE = 0x20; -const uint8_t SSD1306_COLUMNADDR = 0x21; -const uint8_t SSD1306_PAGEADDR = 0x22; - -const uint8_t SSD1306_COMSCANINC = 0xC0; -const uint8_t SSD1306_COMSCANDEC = 0xC8; - -const uint8_t SSD1306_SEGREMAP = 0xA0; - -const uint8_t SSD1306_CHARGEPUMP = 0x8D; - -const uint8_t SSD1306_EXTERNALVCC = 0x1; -const uint8_t SSD1306_SWITCHCAPVCC = 0x2; - -// Scrolling const uint8_t s -const uint8_t SSD1306_ACTIVATE_SCROLL = 0x2F; -const uint8_t SSD1306_DEACTIVATE_SCROLL = 0x2E; -const uint8_t SSD1306_SET_VERTICAL_SCROLL_AREA = 0xA3; -const uint8_t SSD1306_RIGHT_HORIZONTAL_SCROLL = 0x26; -const uint8_t SSD1306_LEFT_HORIZONTAL_SCROLL = 0x27; -const uint8_t SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL = 0x29; -const uint8_t SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL = 0x2A; - -const uint8_t SSD1306_BLACK = 0; -const uint8_t SSD1306_WHITE = 1; -const uint8_t SSD1306_LCDWIDTH = 128; -const uint8_t SSD1306_LCDHEIGHT = 64; - -/** - * @library i2clcd - * @sensor ssd1306 - * @comname SSD1306 OLED Display - * @altname Adafruit SSD1306 OLED Display 0.96" - * @type display - * @man adafruit - * @web https://www.adafruit.com/datasheets/SSD1306.pdf - * @web http://www.farnell.com/datasheets/609753.pdf - * @con i2c - * - * @brief API for SSD1306 I2C-controlled OLED displays - * - * SSD1306 is a 128x64 dot-matrix OLED/PLED segment driver with a - * controller. This device is available from many suppliers for a - * very low cost. This implementation was tested using a generic - * SSD1306 device from eBay. - * - * @image html ssd1306.jpeg - * @snippet ssd1306-oled.cxx Interesting - */ -class SSD1306 : public LCD -{ - public: - /** - * SSD1306 constructor; calls libmraa initialisation functions - * - * @param bus I2C bus to use - * @param address Slave address the LCD is registered on - */ - SSD1306(int bus, int address = 0x3C); - /** - * SSD1306 destructor - */ - ~SSD1306(); - /** - * Draws an image; see examples/python/make_oled_pic.py for an - * explanation of how pixels are mapped to bytes - * - * @param data Buffer to read - * @param bytes Number of bytes to read from the pointer - * @return Result of the operation - */ - mraa::Result draw(uint8_t* data, int bytes); - /** - * Writes a string to the LCD - * - * @param msg std::string to write to the display; note: only ASCII - * characters are supported - * @return Result of the operation - */ - mraa::Result write(std::string msg); - /** - * Sets the cursor to specified coordinates - * - * @param row Row to set the cursor to - * @param column Column to set the cursor to - * @return Result of the operation - */ - mraa::Result setCursor(int row, int column); - /** - * Clears the display of all characters - * - * @return Result of the operation - */ - mraa::Result clear(); - /** - * Returns to the original coordinates (0,0) - * - * @return Result of the operation - */ - mraa::Result home(); - /** - * Inverts the display - * - * @param i true to invert, false for normal display - * @return Result of the operation - */ - mraa::Result invert(bool i); - /** - * Activate a scroll to the right for rows start through stop - * The display is 16 rows tall. To scroll the whole display, run: - * display.scrollright(0x00, 0x0F) - * - * @param start First row to scroll - * @param stop Last row to scroll - * @return void - */ - void startscrollright(uint8_t start, uint8_t stop); - /** - * Activate a scroll to the left for rows start through stop - * The display is 16 rows tall. To scroll the whole display, run: - * display.startscrollright(0x00, 0x0F) - * - * @param start First row to scroll - * @param stop Last row to scroll - * @return void - */ - void startscrollleft(uint8_t start, uint8_t stop); - /** - * Activate a scroll to the upper right for rows start through stop - * The display is 16 rows tall. To scroll the whole display, run: - * display.startscrollleft(0x00, 0x0F) - * - * @param start First row to scroll - * @param stop Last row to scroll - * @return void - */ - void startscrolldiagright(uint8_t start, uint8_t stop); - /** - * Activate a scroll to the upper left for rows start through stop - * The display is 16 rows tall. To scroll the whole display, run: - * display.startscrolldiaagright(0x00, 0x0F) - * - * @param start First row to scroll - * @param stop Last row to scroll - * @return void - */ - void startscrolldiagleft(uint8_t start, uint8_t stop); - /** - * Stops display scrolling. - * - * @return void - */ - void stopscroll(void); - /** - * Dims display - * - * @param dim True to dim display, false for max intensity - * @return Result of last operation - */ - void dim(bool dim); - - private: - mraa::Result writeChar(uint8_t value); - mraa::Result setNormalDisplay(); - mraa::Result setAddressingMode(displayAddressingMode mode); - - int m_lcd_control_address; - mraa::I2c m_i2c_lcd_control; - - int _vccstate; -}; -} |