SO1602A Lib. SO1602A is Organic LED, has 16 chars and 2 lines. This lib supports printf() of C-Language. http://akizukidenshi.com/catalog/g/gP-08276/

Dependents:   NEW_LineTraceHub NEW_LineTraceHub_2 ColorSensorTest

SO1602A.h

Committer:
AkinoriHashimoto
Date:
2015-09-09
Revision:
1:eef15a16fe7a
Parent:
0:d8b95544d238
Child:
3:eaaedd09fa6b

File content as of revision 1:eef15a16fe7a:

/**  SO1602A is Organic-LED, and has 16 chars/line and 2 lines.
 * This librarry supports "printf()" C format.
 *
 * EX. code.
 *  
 * I2C i2c(p9, p10);
 * SO1602A oled(i2c); // if SA0 is Low. Otherwise, oled(i2c, 0x7a);
 * // SO1602A oled(p9, p10);
 * oled.setContrast(0xff);
 * oled.setDispFlag(true, true, false);
 * oled.printf("test:%d,%f", i, 3.14);
 */

#pragma once

#include "mbed.h"

// SA0(Pin4)=Low: i2c_addr= 0x78, High: 0x7a;
// DDRAM addr. Line1: 0x00 ~ 0x0f. Line2: 0x20 ~ 0x2f.

class SO1602A : public Stream{
public:
    SO1602A (PinName sda, PinName scl, char address= 0x78);
    SO1602A (I2C &_i2c, char address= 0x78);
    
//  ******************** printf() future of C-language. ***************************

    /** Initialize
     */
    void init();

    /** Clear Display.
     */
    void clear();
    
    /** Set Position of char.
     *  @param col: column, row: rows.
     */
    void locate(int col, int row);
    
    /** Set Contrast.
     *  @param val; 256steps, 0x00 ~ 0xff. Contrast increas as the value.
     */
    void setContrast(char val);
    
    /** Set Display flag.
     * @parm Enable Display, Cursor turned on, Cursor Blink.
     */
    void setDispFlag(bool disp, bool cursor, bool blink);

private:    
    I2C i2c;
    char addr;
    char buf[3];
    int _column, _row;
    
    bool cmd(char chr);
    
    // virtual func for printf() in Stream-class.
    virtual int _putc(int val);
    virtual int _getc();
    
// Function SET
    void setRE();
    void clearRE();
    void setSD();
    void clearSD();

};

// EOF