User manual
131 132
void i2c_oled_write_command(unsigned char i2cbaseadr, unsigned char cmdvalue)
{
Wire.beginTransmission(i2cbaseadr);
Wire.write(0x80); // 1000 0000 co=1 DC =0 ist commando oder parameter fuer letztes
kommando
Wire.write(cmdvalue);
Wire.endTransmission();
}
void i2c_oled_entire_onoff(unsigned char i2cbaseadr, unsigned char onoff)
{
if (onoff == 1) { // anschalten alle PIXEL EIN
i2c_oled_write_command(i2cbaseadr,0xA5);
} else { // Daten aus dem RAM
i2c_oled_write_command(i2cbaseadr,0xA4);
}
}
void i2c_oled_display_onoff(unsigned char i2cbaseadr, unsigned char onoff)
{
if (onoff == 1) { // anschalten display
i2c_oled_write_command(i2cbaseadr,0xAF);
} else { // ausschalten display
i2c_oled_write_command(i2cbaseadr,0xAE);
}
}
void i2c_oled_setbrightness(unsigned char i2cbaseadr, unsigned char wert)
{
i2c_oled_write_command(i2cbaseadr,0x81); // cmd fuer brightness
i2c_oled_write_command(i2cbaseadr,wert); // 2. wert dann brightness
}
void i2c_oled_inverse_onoff(unsigned char i2cbaseadr, unsigned char onoff)
{
if (onoff == 1) { // inverse
i2c_oled_write_command(i2cbaseadr,0xA7);
} else { // ausschalten display
i2c_oled_write_command(i2cbaseadr,0xA6);
}
}
// INIT 64x48 display:
void i2c_oled_initall(unsigned char i2cbaseadr)
{
// i2c_oled_display_onff(i2cbaseadr,0); // ERST mal aus.
i2c_oled_write_command(i2cbaseadr,0xAE); // display off
//
i2c_oled_write_command(i2cbaseadr,0x00); /*set lower column address*/
i2c_oled_write_command(i2cbaseadr,0x12); /*set higher column address*/
i2c_oled_write_command(i2cbaseadr,0x40); /*set display start line*/
i2c_oled_write_command(i2cbaseadr,0xB0); /*set page address*/
i2c_oled_write_command(i2cbaseadr,0x81); /*contract control*/
i2c_oled_write_command(i2cbaseadr,0xff); /*128*/
i2c_oled_write_command(i2cbaseadr,0xA1); /*set segment remap*/
i2c_oled_write_command(i2cbaseadr,0xA6); /*normal / reverse*/
i2c_oled_write_command(i2cbaseadr,0xA8); /*multiplex ratio*/
i2c_oled_write_command(i2cbaseadr,0x2F); /*duty = 1/48*/
i2c_oled_write_command(i2cbaseadr,0xC8); /*Com scan direction*/
i2c_oled_write_command(i2cbaseadr,0xD3); /*set display offset*/
i2c_oled_write_command(i2cbaseadr,0x00);
i2c_oled_write_command(i2cbaseadr,0xD5); /*set osc division*/
i2c_oled_write_command(i2cbaseadr,0x80);
i2c_oled_write_command(i2cbaseadr,0xD9); /*set pre-charge period*/
i2c_oled_write_command(i2cbaseadr,0x21);
i2c_oled_write_command(i2cbaseadr,0xDA); /*set COM pins*/
i2c_oled_write_command(i2cbaseadr,0x12);
i2c_oled_write_command(i2cbaseadr,0xdb); /*set vcomh*/
i2c_oled_write_command(i2cbaseadr,0x40);
i2c_oled_write_command(i2cbaseadr,0x8d); /*set charge pump enable*/
i2c_oled_write_command(i2cbaseadr,0x14);
i2c_oled_write_command(i2cbaseadr,0xAF); // enable display
//
}
void i2c_oled_initalllarge(unsigned char i2cbaseadr)
{
// i2c_oled_display_onff(i2cbaseadr,0); // ERST mal aus.
i2c_oled_write_command(i2cbaseadr,0xd5); // divide ratio osc freq
i2c_oled_write_command(i2cbaseadr,0x80); // f0 ackert werniger als 80
//
i2c_oled_write_command(i2cbaseadr,0xa8); // multiplex ratio mode:63
i2c_oled_write_command(i2cbaseadr,0x3f);
//
i2c_oled_write_command(i2cbaseadr,0xd3); // set display offset
i2c_oled_write_command(i2cbaseadr,0); // value 0
//
i2c_oled_write_command(i2cbaseadr,0x40); // set display startline (D5..D0 = line)
//
i2c_oled_write_command(i2cbaseadr,0x8D); // charge pump on + 14 + af
i2c_oled_write_command(i2cbaseadr,0x14); // Enable charge pump
//
i2c_oled_write_command(i2cbaseadr,0xA1); // segment remap hor richtung a1 nach links
nach rechts a0 rechts nach links
//
i2c_oled_write_command(i2cbaseadr,0xC8); // c8 von oben nach unten c0 von unten nach
oben
//
i2c_oled_write_command(i2cbaseadr,0xda); // common pads hardware: alternative
//
i2c_oled_write_command(i2cbaseadr,0x12); // 12: OK, 32: dasselbe, 02: Datenmüll
//
i2c_oled_write_command(i2cbaseadr,0x81); // set brightness










