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.
OLED160G1/OLED160G1.h
- Committer:
- star297
- Date:
- 2013-03-06
- Revision:
- 0:e3f7b0fd072e
File content as of revision 0:e3f7b0fd072e:
/**
* mbed library for 4D Systems uOLED-160-G1
*
*/
#ifndef _OLED160G1_H_
#define _OLED160G1_H_
#define OLED_BAUDRATE 256000 // 300 baud to 256kbaud supported (256k not always stable?)
#define OLED_INIT_DELAY 1100 // milliseconds
// Initialisation routine
#define OLED_DETECT_BAUDRATE 0x55
// Drawing routines
#define OLED_CLEAR 0x45
#define OLED_BKGCOLOR 0x42
#define OLED_COPYPASTE 0x63
#define OLED_PEN_SIZE 0x70
// Graphics
#define OLED_LINE 0x4C
#define OLED_CIRCLE 0x43
#define OLED_CIRCLEFILL 0x69
#define OLED_PUTPIXEL 0x50
#define OLED_READPIXEL 0x52
#define OLED_RECTANGLE 0x72
// Text properties
#define OLED_TEXT 0x73
#define OLED_SETFONTSIZE 0x46
#define OLED_FONT5X7 0x00
#define OLED_FONT8X8 0x01
#define OLED_FONT8X12 0x02
#define OLED_TEXTFORMATED 0x54
#define OLED_SET_TEXT_BACKGROUND_TYPE 0x4F
#define OLED_SET_BACKGROUND_COLOR 0x42
#define OLED_SET_TEXT_TRANSPARENT 0x00
#define OLED_SET_TEXT_OPAQUE 0x01
// OLED Control
#define OLED_COMMAND_CONTROL 0x59
#define OLED_COMMAND_DISPLAY 0x01
#define OLED_COMMAND_CONTRAST 0x02
#define OLED_COMMAND_POWER 0x03
// Responses
#define OLED_ACK 0x06 // Ok
#define OLED_NAK 0x15 // Error
// Colours
#define OLED_WHITE 0xFFFF
#define OLED_BLACK 0x0000
#define OLED_BLUE 0xA6BF
#define OLED_RED 0xF800
#define OLED_GREEN 0x2500
#define red_min 0//150
#define red_max 255
#define blue_min 0//185
#define blue_max 255
#define green_min 0//195
#define green_max 255
class OLED160G1 : public Stream {
public:
/**
* Default constructor.
*/
OLED160G1(PinName serialTx, PinName serialRx, PinName resetPin);
/**
* Reset the display using the reset pin (the reset pin is active-low).
*/
void resetDisplay();
/**
* Initialise OLED display.
*/
void init();
/**
* Processes responses (ACK or NAK) from the OLED. A new command cannot be sent to the OLED until a NAK is received, so
* this function waits for the minimum time needed.
*/
void getResponse();
/**
* Clear the OLED screen.
*/
void eraseScreen();
/**
* Calculate 16-bit value from RGB (0 to 63, 565 format)
*/
int toRGB(int red, int green, int blue);
/**
*
*/
void drawPixel(char x, char y, int color);
/**
*
*/
void drawLine(char x1, char y1, char x2, char y2, int color);
/**
*
*/
void drawRectangle(char x, char y, char width, char height, int color);
/**
*
*/
void drawCircle(char x, char y, char radius, int color);
/**
* Set font size, for use with printf() or OLED_DrawSingleChar(); all other functions override this setting.
*
* @param : fontSize can be: OLED_FONT5X7, OLED_FONT8X8, or OLED_FONT8X12
*/
void setFontSize(char fontSize);
/**
* Set font color, for use with printf(); all other functions override this setting.
*/
void setFontColor(int fontColor);
/**
* Set the "pen size".
*
* @param penSize : 0 to draw solid objects; 1 to draw wireframe objects.
*/
void setPenSize(char penSize);
/**
* Set whether or not text is drawn with an opaque or transparent background.
*
* @param : textBackgroundType can be OLED_SET_TEXT_TRANSPARENT or OLED_SET_TEXT_OPAQUE
*/
void setTextBackgroundType(char textBackgroundType);
/**
*
*/
void setBackgroundColor(int color);
/**
*
*/
void drawText(char column, char row, char font_size, char *mytext, int color);
/**
* Draw a single ASCII character at the specified location.
*/
void drawSingleChar(char column, char row, char theChar, int color);
/**
* Display control functions, such as display ON/OFF, contrast and power-up/power-down.
*
* @param value : can be 0x00 to 0x0F is mode is OLED_COMMAND_CONTRAST. Default contrast value is 0x08.
*/
void displayControl(char mode, char value);
/**
*
*/
char getPenSize();
/**
* Get number of text rows
*/
int rows(); //TODO: must depend on font size
/**
* Get number of text columns
*/
int columns();
/**
* Set text cursor location
*/
virtual void locate(int column, int row);
/**
*
*/
int lastCount;
/**
*
*/
int NAKCount;
protected:
virtual int _putc(int value);
virtual int _getc();
/**
* Text cursor column number
*/
short _column;
/**
* Text cursor row number
*/
short _row;
char _fontSize;
char _penSize;
int _fontColor;
private:
Serial s;
DigitalOut reset;
};
#endif