void i2c_OLED_clear_display_quick(void)
{
    i2c_OLED_send_cmd(0xb0);              // set page address to 0
    i2c_OLED_send_cmd(0x40);              // Display start line register to 0
    i2c_OLED_send_cmd(0);                 // Set low col address to 0
    i2c_OLED_send_cmd(0x10);              // Set high col address to 0
    for(uint16_t i = 0; i < 1024; i++) {      // fill the display's RAM with graphic... 128*64 pixel picture
        i2c_OLED_send_byte(0x00);  // clear
    }
}
Example #2
0
void i2c_OLED_set_line(uint8_t row)        // goto the beginning of a single row, compattible with LCD_CONFIG
{
    switch (OLED_Type)
    {
    case 1:
    case 2:
        i2c_OLED_send_cmd(0xb0+row);   //set page address
        i2c_OLED_send_cmd(0);          //set low col address
        i2c_OLED_send_cmd(0x10);       //set high col address
        break;
    }
}
Example #3
0
void i2c_OLED_set_XY(uint8_t col, uint8_t row)          //  Not used in MW V2.0 but its here anyway!
{
    switch (OLED_Type)
    {
    case 1:
    case 2:
        i2c_OLED_send_cmd(0xb0+row);                //set page address
        i2c_OLED_send_cmd(0x00+(8*col&0x0f));       //set low col address
        i2c_OLED_send_cmd(0x10+((8*col>>4)&0x0f));  //set high col address
        break;
    }
}
void ug2864hsweg01InitI2C(void)
{
    i2c_OLED_send_cmd(0xae);    //display off
    i2c_OLED_send_cmd(0xa4);          //SET All pixels OFF
//  i2c_OLED_send_cmd(0xa5);            //SET ALL pixels ON
    delay(50);

//    i2c_OLED_send_cmd(0x8D); // charge pump
//    i2c_OLED_send_cmd(0x14); // enable
    i2c_OLED_send_cmd(0x20);            //Set Memory Addressing Mode
    i2c_OLED_send_cmd(0x02); //Set Memory Addressing Mode to Page addressing mode(RESET)
//  i2c_OLED_send_cmd(0xa0);      //colum address 0 mapped to SEG0 (POR)*** wires at bottom
    i2c_OLED_send_cmd(0xa1); //colum address 127 mapped to SEG0 (POR) ** wires at top of board
//  i2c_OLED_send_cmd(0xC0);            // Scan from Right to Left (POR)         *** wires at bottom
    i2c_OLED_send_cmd(0xC8); // Scan from Left to Right               ** wires at top
    i2c_OLED_send_cmd(0xa6);            // Set WHITE chars on BLACK backround
//  i2c_OLED_send_cmd(0xa7);            // Set BLACK chars on WHITE backround
    i2c_OLED_send_cmd(0x81); // Setup CONTRAST CONTROL, following byte is the contrast Value
    i2c_OLED_send_cmd(0xaf); // contrast value between 1 ( == dull) to 256 ( == bright)
//  i2c_OLED_send_cmd(0xd3);            // Display Offset :
//  i2c_OLED_send_cmd(0x0);            // 0
//  delay(20);
//  i2c_OLED_send_cmd(0x40);            // Display start line [0;63] -> [0x40;0x7f]
//  delay(20);
#ifdef DISPLAY_FONT_DSIZE
    i2c_OLED_send_cmd(0xd6);            // zoom
    i2c_OLED_send_cmd(0x01);// on
#else
//    i2c_OLED_send_cmd(0xd6);            // zoom
//    i2c_OLED_send_cmd(0x00);            // off
#endif
    delay(20);
    i2c_OLED_send_cmd(0xaf);          //display on
    delay(20);
    i2c_OLED_clear_display();
}
bool ug2864hsweg01InitI2C(void)
{

    // Set display OFF
    if (!i2c_OLED_send_cmd(0xAE)) {
        return false;
    }

    i2c_OLED_send_cmd(0xD4); // Set Display Clock Divide Ratio / OSC Frequency
    i2c_OLED_send_cmd(0x80); // Display Clock Divide Ratio / OSC Frequency
    i2c_OLED_send_cmd(0xA8); // Set Multiplex Ratio
    i2c_OLED_send_cmd(0x3F); // Multiplex Ratio for 128x64 (64-1)
    i2c_OLED_send_cmd(0xD3); // Set Display Offset
    i2c_OLED_send_cmd(0x00); // Display Offset
    i2c_OLED_send_cmd(0x40); // Set Display Start Line
    i2c_OLED_send_cmd(0x8D); // Set Charge Pump
    i2c_OLED_send_cmd(0x14); // Charge Pump (0x10 External, 0x14 Internal DC/DC)
    i2c_OLED_send_cmd(0xA1); // Set Segment Re-Map
    i2c_OLED_send_cmd(0xC8); // Set Com Output Scan Direction
    i2c_OLED_send_cmd(0xDA); // Set COM Hardware Configuration
    i2c_OLED_send_cmd(0x12); // COM Hardware Configuration
    i2c_OLED_send_cmd(0x81); // Set Contrast
    i2c_OLED_send_cmd(0xCF); // Contrast
    i2c_OLED_send_cmd(0xD9); // Set Pre-Charge Period
    i2c_OLED_send_cmd(0xF1); // Set Pre-Charge Period (0x22 External, 0xF1 Internal)
    i2c_OLED_send_cmd(0xDB); // Set VCOMH Deselect Level
    i2c_OLED_send_cmd(0x40); // VCOMH Deselect Level
    i2c_OLED_send_cmd(0xA4); // Set all pixels OFF
    i2c_OLED_send_cmd(0xA6); // Set display not inverted
    i2c_OLED_send_cmd(0xAF); // Set display On

    i2c_OLED_clear_display();

    return true;
}
void i2c_OLED_set_line(uint8_t row)
{
    i2c_OLED_send_cmd(0xb0 + row); //set page address
    i2c_OLED_send_cmd(0);          //set low col address
    i2c_OLED_send_cmd(0x10);       //set high col address
}
void i2c_OLED_set_xy(uint8_t col, uint8_t row)
{
    i2c_OLED_send_cmd(0xb0 + row);                      //set page address
    i2c_OLED_send_cmd(0x00 + ((CHARACTER_WIDTH_TOTAL * col) & 0x0f));         //set low col address
    i2c_OLED_send_cmd(0x10 + (((CHARACTER_WIDTH_TOTAL * col) >> 4) & 0x0f));  //set high col address
}
void i2c_OLED_clear_display(void)
{
    i2c_OLED_send_cmd(0xa6);              // Set Normal Display
    i2c_OLED_send_cmd(0xae);              // Display OFF
    i2c_OLED_send_cmd(0x20);              // Set Memory Addressing Mode
    i2c_OLED_send_cmd(0x00);              // Set Memory Addressing Mode to Horizontal addressing mode
    i2c_OLED_send_cmd(0xb0);              // set page address to 0
    i2c_OLED_send_cmd(0x40);              // Display start line register to 0
    i2c_OLED_send_cmd(0);                 // Set low col address to 0
    i2c_OLED_send_cmd(0x10);              // Set high col address to 0
    for(uint16_t i = 0; i < 1024; i++) {  // fill the display's RAM with graphic... 128*64 pixel picture
        i2c_OLED_send_byte(0x00);  // clear
    }
    i2c_OLED_send_cmd(0x81);              // Setup CONTRAST CONTROL, following byte is the contrast Value... always a 2 byte instruction
    i2c_OLED_send_cmd(200);               // Here you can set the brightness 1 = dull, 255 is very bright
    i2c_OLED_send_cmd(0xaf);              // display on
}
Example #9
0
bool i2c_OLED_init(void)
{
    uint8_t dummy;
    if (i2cRead(OLED1_address, 0xA0, 1, &dummy))
    {
        curOLED_address = OLED1_address;
        OLED_Type = 1;
    }
    else 
    {
        if (i2cRead(OLED2_address, 0xA0, 1, &dummy))
        {
            curOLED_address = OLED2_address;
            OLED_Type = 2;
        }
        else
            OLED_Type = 0;
    }

    switch (OLED_Type)
    {
        case 1:
        case 2:
            // Init sequence for 128x64 OLED module
            i2c_OLED_send_cmd(SSD1306_DISPLAYOFF);                      // 0xAE
            i2c_OLED_send_cmd(SSD1306_SETDISPLAYCLOCKDIV);              // 0xD5
            i2c_OLED_send_cmd(0x80);                                    // the suggested ratio 0x80
            i2c_OLED_send_cmd(SSD1306_SETMULTIPLEX);                    // 0xA8
            i2c_OLED_send_cmd(0x3F);
            i2c_OLED_send_cmd(SSD1306_SETDISPLAYOFFSET);                // 0xD3
            i2c_OLED_send_cmd(0x0);                                     // no offset
            i2c_OLED_send_cmd(SSD1306_SETSTARTLINE | 0x0);              // line #0
            i2c_OLED_send_cmd(SSD1306_CHARGEPUMP);                      // 0x8D
            i2c_OLED_send_cmd(0x14);                                    // vccstate != SSD1306_EXTERNALVCC)
            i2c_OLED_send_cmd(SSD1306_MEMORYMODE);                      // 0x20
            i2c_OLED_send_cmd(0x00);                                    // 0x0 act like ks0108
            i2c_OLED_send_cmd(SSD1306_SEGREMAP | 0x1);
            i2c_OLED_send_cmd(SSD1306_COMSCANDEC);
            i2c_OLED_send_cmd(SSD1306_SETCOMPINS);                      // 0xDA
            i2c_OLED_send_cmd(0x12);
            i2c_OLED_send_cmd(SSD1306_SETCONTRAST);                     // 0x81
            i2c_OLED_send_cmd(0xCF);                                    //vccstate != SSD1306_EXTERNALVCC)
            i2c_OLED_send_cmd(SSD1306_SETPRECHARGE);                    // 0xd9
            i2c_OLED_send_cmd(0xF1);                                    //vccstate != SSD1306_EXTERNALVCC)
            i2c_OLED_send_cmd(SSD1306_SETVCOMDETECT);                   // 0xDB
            i2c_OLED_send_cmd(0x40);
            i2c_OLED_send_cmd(SSD1306_DISPLAYALLON_RESUME);             // 0xA4
            i2c_OLED_send_cmd(SSD1306_NORMALDISPLAY);                   // 0xA6
            delay(20);
            i2c_OLED_set_line(1);
            return true;
    }
    return false;
}