summaryrefslogtreecommitdiff
path: root/nanologger
diff options
context:
space:
mode:
Diffstat (limited to 'nanologger')
-rw-r--r--nanologger/README.txt3
-rw-r--r--nanologger/SH1106.cpp26
-rw-r--r--nanologger/SSD1306.cpp6
-rw-r--r--nanologger/SSD1306.h9
4 files changed, 26 insertions, 18 deletions
diff --git a/nanologger/README.txt b/nanologger/README.txt
index 5a1e5cf..6fbb9b5 100644
--- a/nanologger/README.txt
+++ b/nanologger/README.txt
@@ -1,5 +1,4 @@
-This is the source code for the Arduino OBD-II data logger, which displays (on a 128x64 OLED display module) and records (to a SD card) a selected set of OBD-II data. For hardware configuration and wiring guide, please refer to:
-http://obd.arduinodev.com
+This is the source code for the Arduino OBD-II data logger, which displays (on a 128x64 OLED display module) and records (to a SD card) a selected set of OBD-II data.
The recorded data is stored in CSV format and the file can be illustrated into a graphic chart by a free service at:
http://freematics.com/chart/
diff --git a/nanologger/SH1106.cpp b/nanologger/SH1106.cpp
index b1e57ef..a46c821 100644
--- a/nanologger/SH1106.cpp
+++ b/nanologger/SH1106.cpp
@@ -35,13 +35,13 @@ void LCD_SH1106::clear(byte x, byte y, byte width, byte height)
WriteCommand(SSD1306_SETHIGHCOLUMN | 0x0); // hi col = 0
WriteCommand(SSD1306_SETSTARTLINE | 0x0); // line #0
- // save I2C bitrate
- uint8_t twbrbackup = TWBR;
- TWBR = 18; // upgrade to 400KHz!
-
height >>= 3;
width >>= 3;
y >>= 3;
+#ifdef TWBR
+ uint8_t twbrbackup = TWBR;
+ TWBR = 18; // upgrade to 400KHz!
+#endif
for (byte i = 0; i < height; i++) {
// send a bunch of data in one xmission
WriteCommand(0xB0 + i + y);//set page address
@@ -57,9 +57,10 @@ void LCD_SH1106::clear(byte x, byte y, byte width, byte height)
Wire.endTransmission();
}
}
-
- setCursor(0, 0);
+#ifdef TWBR
TWBR = twbrbackup;
+#endif
+ setCursor(0, 0);
}
size_t LCD_SH1106::write(uint8_t c)
@@ -72,8 +73,10 @@ size_t LCD_SH1106::write(uint8_t c)
return 1;
}
+#ifdef TWBR
uint8_t twbrbackup = TWBR;
TWBR = 18; // upgrade to 400KHz!
+#endif
#ifndef MEMORY_SAVING
if (m_font == FONT_SIZE_SMALL) {
#endif
@@ -158,15 +161,18 @@ size_t LCD_SH1106::write(uint8_t c)
}
}
#endif
+#ifdef TWBR
TWBR = twbrbackup;
+#endif
return 1;
}
void LCD_SH1106::writeDigit(byte n)
{
+#ifdef TWBR
uint8_t twbrbackup = TWBR;
TWBR = 18; // upgrade to 400KHz!
-
+#endif
if (m_font == FONT_SIZE_SMALL) {
Wire.beginTransmission(I2C_ADDR);
Wire.write(0x40);
@@ -316,13 +322,17 @@ void LCD_SH1106::writeDigit(byte n)
}
m_col += (m_flags & FLAG_PIXEL_DOUBLE_H) ? 30 : 16;
}
+#ifdef TWBR
TWBR = twbrbackup;
+#endif
}
void LCD_SH1106::draw(const PROGMEM byte* buffer, byte width, byte height)
{
+#ifdef TWBR
uint8_t twbrbackup = TWBR;
TWBR = 18; // upgrade to 400KHz!
+#endif
WriteCommand(SSD1306_SETLOWCOLUMN | 0x0); // low col = 0
WriteCommand(SSD1306_SETHIGHCOLUMN | 0x0); // hi col = 0
@@ -346,7 +356,9 @@ void LCD_SH1106::draw(const PROGMEM byte* buffer, byte width, byte height)
Wire.endTransmission();
}
}
+#ifdef TWBR
TWBR = twbrbackup;
+#endif
m_col += width;
}
diff --git a/nanologger/SSD1306.cpp b/nanologger/SSD1306.cpp
index 7f7b8e8..75662e8 100644
--- a/nanologger/SSD1306.cpp
+++ b/nanologger/SSD1306.cpp
@@ -1,5 +1,5 @@
#include <avr/pgmspace.h>
-#include <util/delay.h>
+//#include <util/delay.h>
#include <stdlib.h>
#include <Wire.h>
#include "SSD1306.h"
@@ -238,8 +238,10 @@ void SSD1306::fill(unsigned char dat)
ssd1306_command(0x10);//set higher column address
ssd1306_command(0xB0);//set page address
+#ifdef TWBR
uint8_t twbrbackup = TWBR;
TWBR = 18; // upgrade to 400KHz!
+#endif
for (byte i=0; i<(SSD1306_LCDHEIGHT/8); i++)
{
// send a bunch of data in one xmission
@@ -256,7 +258,9 @@ void SSD1306::fill(unsigned char dat)
Wire.endTransmission();
}
}
+#ifdef TWBR
TWBR = twbrbackup;
+#endif
}
void SSD1306::draw8x8(byte* buffer, uint8_t x, uint8_t y)
diff --git a/nanologger/SSD1306.h b/nanologger/SSD1306.h
index aaa3534..ae7f339 100644
--- a/nanologger/SSD1306.h
+++ b/nanologger/SSD1306.h
@@ -1,11 +1,4 @@
-#if ARDUINO >= 100
- #include "Arduino.h"
-#else
- #include "WProgram.h"
-#endif
-
-#define BLACK 0
-#define WHITE 1
+#include "Arduino.h"
#define SSD1306_I2C_ADDRESS 0x3C // 011110+SA0+RW - 0x3C or 0x3D
// Address for 128x32 is 0x3C