Seeed Studio's 0.96" OLED module

Dependencies:   Adafruit_GFX

Fork of SSD1308_128x64_I2C by Wim Huiskamp

Revision:
10:74ef7544744e
Parent:
7:dcff685d41a5
--- a/SSD1308.cpp	Thu Apr 27 16:06:54 2017 -0600
+++ b/SSD1308.cpp	Thu Jun 22 12:53:07 2017 -0600
@@ -62,7 +62,7 @@
  *@param I2C &i2c reference to i2c
  *@param uint8_t deviceAddress slaveaddress
  */
-SSD1308::SSD1308(I2C &i2c, uint8_t deviceAddress) : _i2c(i2c) {
+SSD1308::SSD1308(I2C * i2c, uint8_t deviceAddress) : _i2c(i2c) {
 
     _writeOpcode = deviceAddress & 0xFE; // low order bit = 0 for write
     _readOpcode  = deviceAddress | 0x01; // low order bit = 1 for read
@@ -113,13 +113,13 @@
     setPageAddress(0, MAX_PAGE);  // all pages
     setColumnAddress(0, MAX_COL); // all columns
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
     for (int i=0; i<(PAGES * COLUMNS); i++) {
-        _i2c.write(0x00);  // Write Data
+        _i2c->write(0x00);  // Write Data
     }
-    _i2c.stop();
+    _i2c->stop();
 
     //setDisplayOn();
 }
@@ -169,13 +169,13 @@
     setPageAddress(start_page, end_page);  // set page window
     setColumnAddress(start_col, end_col);  // set column window
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
     for (int i=0; i<count; i++) {
-        _i2c.write(pattern);  // Write Data
+        _i2c->write(pattern);  // Write Data
     }
-    _i2c.stop();
+    _i2c->stop();
 
     //setDisplayOn();
 }
@@ -224,13 +224,13 @@
     setPageAddress(start_page, end_page);  // set page window
     setColumnAddress(start_col, end_col);  // set column window
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
     for (int i=0; i<count; i++) {
-        _i2c.write(data[i]);  // Write Data
+        _i2c->write(data[i]);  // Write Data
     }
-    _i2c.stop();
+    _i2c->stop();
 
     //setDisplayOn();
 }
@@ -304,25 +304,25 @@
     setPageAddress(page, page);
     setColumnAddress(col, MAX_COL);
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
 
-    _i2c.write(PRG_LEFT_EDGE);  // Write Data
+    _i2c->write(PRG_LEFT_EDGE);  // Write Data
 
     for (uint8_t col = 0; col < scale_value; col++) {
-        _i2c.write(PRG_ACTIVE);  // Write Data
+        _i2c->write(PRG_ACTIVE);  // Write Data
     }
 
-    _i2c.write(PRG_ACTIVE);  // Write Data
+    _i2c->write(PRG_ACTIVE);  // Write Data
 
     for (uint8_t col = (scale_value+1); col < PRG_MAX_SCALE; col++) {
-        _i2c.write(PRG_NOT_ACTIVE);  // Write Data
+        _i2c->write(PRG_NOT_ACTIVE);  // Write Data
     }
 
-    _i2c.write(PRG_RIGHT_EDGE);  // Write Data
+    _i2c->write(PRG_RIGHT_EDGE);  // Write Data
 
-    _i2c.stop();
+    _i2c->stop();
 
     //setDisplayOn();
 }
@@ -385,25 +385,25 @@
     setPageAddress(page, page);
     setColumnAddress(col, MAX_COL);
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
 
-    _i2c.write(PRG_LEFT_EDGE);  // Write Data
+    _i2c->write(PRG_LEFT_EDGE);  // Write Data
 
     for (uint8_t col = 0; col < scale_value; col++) {
-        _i2c.write(PRG_NOT_ACTIVE);  // Write Data
+        _i2c->write(PRG_NOT_ACTIVE);  // Write Data
     }
 
-    _i2c.write(PRG_ACTIVE);  // Write Data at active meterlevel
+    _i2c->write(PRG_ACTIVE);  // Write Data at active meterlevel
 
     for (uint8_t col = scale_value+1; col < PRG_MAX_SCALE; col++) {
-        _i2c.write(PRG_NOT_ACTIVE);  // Write Data
+        _i2c->write(PRG_NOT_ACTIVE);  // Write Data
     }
 
-    _i2c.write(PRG_RIGHT_EDGE);  // Write Data
+    _i2c->write(PRG_RIGHT_EDGE);  // Write Data
 
-    _i2c.stop();
+    _i2c->stop();
 
     //setDisplayOn();
 }
@@ -492,16 +492,16 @@
 
     databytes[0] = COMMAND_MODE;
     databytes[1] = command;
-    _i2c.write(_writeOpcode, databytes, 2);    // Write command
+    _i2c->write(_writeOpcode, databytes, 2);    // Write command
 #else
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
 
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(command);       // Write Command
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(command);       // Write Command
 
-    _i2c.stop();
+    _i2c->stop();
 #endif
 }
 
@@ -518,18 +518,18 @@
     databytes[1] = command;
     databytes[2] = COMMAND_MODE;
     databytes[3] = param1;
-    _i2c.write(_writeOpcode, databytes, 4);    // Write command
+    _i2c->write(_writeOpcode, databytes, 4);    // Write command
 #else
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
 
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(command);       // Write Command
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param1);        // Write Param1
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(command);       // Write Command
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param1);        // Write Param1
 
-    _i2c.stop();
+    _i2c->stop();
 #endif
 }
 
@@ -548,19 +548,19 @@
     databytes[3] = param1;
     databytes[4] = COMMAND_MODE;
     databytes[5] = param2;
-    _i2c.write(_writeOpcode, databytes, 6);    // Write command
+    _i2c->write(_writeOpcode, databytes, 6);    // Write command
 #else
-    _i2c.start();
-    _i2c.write(_writeOpcode);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
 
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(command);       // Write Command
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param1);        // Write Param1
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param2);        // Write Param2
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(command);       // Write Command
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param1);        // Write Param1
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param2);        // Write Param2
 
-    _i2c.stop();
+    _i2c->stop();
 #endif
 }
 
@@ -587,25 +587,25 @@
     databytes[9] = param4;
     databytes[10] = COMMAND_MODE;
     databytes[11] = param5;
-    _i2c.write(_writeOpcode, databytes, 12);    // Write command
+    _i2c->write(_writeOpcode, databytes, 12);    // Write command
 #else
-    _i2c.start();
-    _i2c.write(_writeOpcode);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
 
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(command);       // Write Command
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param1);        // Write Param1
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param2);        // Write Param2
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param3);        // Write Param3
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param4);        // Write Param4
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param5);        // Write Param5
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(command);       // Write Command
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param1);        // Write Param1
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param2);        // Write Param2
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param3);        // Write Param3
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param4);        // Write Param4
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param5);        // Write Param5
 
-    _i2c.stop();
+    _i2c->stop();
 #endif
 }
 
@@ -635,27 +635,27 @@
     databytes[11] = param5;
     databytes[12] = COMMAND_MODE;
     databytes[13] = param6;
-    _i2c.write(_writeOpcode, databytes, 14);    // Write command
+    _i2c->write(_writeOpcode, databytes, 14);    // Write command
 #else
-    _i2c.start();
-    _i2c.write(_writeOpcode);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
 
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(command);       // Write Command
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param1);        // Write Param1
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param2);        // Write Param2
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param3);        // Write Param3
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param4);        // Write Param4
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param5);        // Write Param5
-    _i2c.write(COMMAND_MODE);
-    _i2c.write(param6);        // Write Param6
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(command);       // Write Command
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param1);        // Write Param1
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param2);        // Write Param2
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param3);        // Write Param3
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param4);        // Write Param4
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param5);        // Write Param5
+    _i2c->write(COMMAND_MODE);
+    _i2c->write(param6);        // Write Param6
 
-    _i2c.stop();
+    _i2c->stop();
 #endif
 }
 
@@ -669,14 +669,14 @@
 //  Note this original code is not correct, continuationbit is set,
 //  so COMMAND_MODE must be repeated before each databyte that serves as parameter!
 
-    _i2c.start();
-    _i2c.write(_writeOpcode);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
 
     for (int i=0; i<len ; i++) {
-        _i2c.write(COMMAND_MODE);
-        _i2c.write(commands[i]);  // Write Commands
+        _i2c->write(COMMAND_MODE);
+        _i2c->write(commands[i]);  // Write Commands
     }
-    _i2c.stop();
+    _i2c->stop();
 
 }
 #endif
@@ -695,14 +695,14 @@
 
     databytes[0] = DATA_MODE;
     databytes[1] = data;
-    _i2c.write(_writeOpcode, databytes, 2);    // Write Data
+    _i2c->write(_writeOpcode, databytes, 2);    // Write Data
 
 #else
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
-    _i2c.write(data);
-    _i2c.stop();
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
+    _i2c->write(data);
+    _i2c->stop();
 #endif
 
 }
@@ -719,13 +719,13 @@
         _sendData(data[i]);  // Write Data
     }
 #else
-    _i2c.start();
-    _i2c.write(_writeOpcode);
-    _i2c.write(DATA_MODE);
+    _i2c->start();
+    _i2c->write(_writeOpcode);
+    _i2c->write(DATA_MODE);
     for (int i=0; i<len ; i++) {
-        _i2c.write(data[i]);  // Write Data
+        _i2c->write(data[i]);  // Write Data
     }
-    _i2c.stop();
+    _i2c->stop();
 #endif
 }