Hi.
Still not sorted this so will post code and files.
Below is a working code that displays text and scrolls it.
#include <Wire.h>
#define OLED_ADDRESS 0x51
#define WRITE_CMD 0x01
#define WRITE_DAT 0x02
#define RESET 0x03
#define DISP_8X16STR 0x10
#define FILL_AREA 0x12
#define SET_SCROHOR 0x13
#define SET_ADDRESS 0x21
#define SCROLL_RIGHT 0x26
#define SCROLL_LEFT 0x27
void setup()
{
Wire.begin();
Serial.begin(9600);
OLEDReset();
}
void loop()
{
delay(1000);
OLEDFillArea(0,7,0,128,0);
delay(1000);
OLEDdisplay(0,0, "This is Line one");
OLEDdisplay(2,0, "This is Line two");
OLEDdisplay(4,0, "Welcome The UK");
OLEDdisplay(6,0, "Bottom Line");
ScrollingHorizontal(0x27, 4, 5, 0x07);
delay(2000);
ScrollingHorizontal(0x26, 6, 7, 0x07);
delay(2000);
OLEDReset();
delay(2000);
}
void OLEDReset()
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(RESET);
Wire.endTransmission();
}
void WriteData()
{
unsigned int i;
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(WRITE_DAT);
{
Wire.write(0xFF);
}
Wire.endTransmission();
}
void OLEDdisplay(uint8_t page, uint8_t column, const char *str)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(DISP_8X16STR);
Wire.write(page);
Wire.write(column);
while(*str != '\0')
{
Wire.write(*str++);
}
Wire.endTransmission();
}
void OLEDFillArea(uint8_t startpage, uint8_t endpage,uint8_t startcolumn, uint8_t endcolumn,uint8_t filldata)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(FILL_AREA);
Wire.write(startpage);
Wire.write(endpage);
Wire.write(startcolumn);
Wire.write(endcolumn);
Wire.write(filldata);
Wire.endTransmission();
}
void ScrollingHorizontal(uint8_t lr, uint8_t startpage, uint8_t endpage,uint8_t frames)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(SET_SCROHOR);
Wire.write(lr);
Wire.write(startpage);
Wire.write(endpage);
Wire.write(frames);
Wire.endTransmission();
}
void WriteCommand(const char *cmd)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(WRITE_CMD);
while(*cmd != '\0')
{
Wire.write(*cmd++);
}
Wire.endTransmission();
}
This is the Code now.
#include <Wire.h>
#include <OledKozig.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
OLED.Reset();
}
void loop()
{
delay(1000);
OLED.FillArea(0,7,0,128,0);
delay(1000);
OLED.display(0,0, "This is Line one");
OLED.display(2,0, "This is Line two");
OLED.display(4,0, "Welcome The UK");
OLED.display(6,0, "Bottom Line");
OLED.ScrollingHorizontal(0x27, 4, 5, 0x07);
delay(2000);
OLED.ScrollingHorizontal(0x26, 6, 7, 0x07);
delay(2000);
OLED.Reset();
delay(2000);
}
Now the H file.
#ifndef OledKozig_h
#define OledKozig_h
#include <Wire.h>
#define OLED_ADDRESS 0x51
#define WRITE_CMD 0x01
#define WRITE_DAT 0x02
#define RESET 0x03
#define DISP_8X16STR 0x10
#define FILL_AREA 0x12
#define SET_SCROHOR 0x13
#define SET_ADDRESS 0x21
#define SCROLL_RIGHT 0x26
#define SCROLL_LEFT 0x27
class Oled
{
public:
void Reset();
void WriteData();
void display(uint8_t page, uint8_t column, const char *str);
void FillArea(uint8_t startpage, uint8_t endpage,uint8_t startcolumn, uint8_t endcolumn,uint8_t filldata);
void ScrollingHorizontal(uint8_t lr, uint8_t startpage, uint8_t endpage, uint8_t frames);
void WriteCommand(const char *cmd);
};
#endif
And the CPP file
#include "OledKozig.h"
void OLED::Reset()
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(RESET);
Wire.endTransmission();
}
void OLED::WriteData()
{
unsigned int i;
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(WRITE_DAT);
{
Wire.write(0xFF);
}
Wire.endTransmission();
}
void OLED::display(uint8_t page, uint8_t column, const char *str)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(DISP_8X16STR);
Wire.write(page);
Wire.write(column);
while(*str != '\0')
{
Wire.write(*str++);
}
Wire.endTransmission();
}
void OLED::FillArea(uint8_t startpage, uint8_t endpage,uint8_t startcolumn, uint8_t endcolumn,uint8_t filldata)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(FILL_AREA);
Wire.write(startpage);
Wire.write(endpage);
Wire.write(startcolumn);
Wire.write(endcolumn);
Wire.write(filldata);
Wire.endTransmission();
}
void OLED::ScrollingHorizontal(uint8_t lr, uint8_t startpage, uint8_t endpage,uint8_t frames)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(SET_SCROHOR);
Wire.write(lr);
Wire.write(startpage);
Wire.write(endpage);
Wire.write(frames);
Wire.endTransmission();
}
void OLED::WriteCommand(const char *cmd)
{
Wire.beginTransmission(OLED_ADDRESS);
Wire.write(WRITE_CMD);
while(*cmd != '\0')
{
Wire.write(*cmd++);
}
Wire.endTransmission();
}
Any help/pointers would be nice.
Thanks Antony.
Modified :- Code updated