Hello everyone. I am using OLED 128x64 display with ASCII library. I'll leave the link library below.
Here you can see my coding and my display example. As you can see there are two "columns" that I separated with setcursor. P and mV as an example of my label and unit string: Power output and millivolts. Between them, I have variables that are given from sensor reading.
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
#define RST_PIN -1
SSD1306AsciiWire oled;
long randNumber;
void setup()
{
#if RST_PIN >= 0
oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN);
#else // RST_PIN >= 0
oled.begin(&Adafruit128x64, I2C_ADDRESS);
#endif // RST_PIN >= 0
// Call oled.setI2cClock(frequency) to change from the default frequency.
oled.setFont(Adafruit5x7);
Serial.begin(9600);
randomSeed(analogRead(0));
oled.clear();
oled.setCursor( 0, 0) ; oled.print(F("SD OK. Starting.."));
oled.setCursor( 0, 1) ; oled.print(F("P mV"));
oled.setCursor(64, 1) ; oled.print(F("P mV"));
oled.setCursor( 0, 2) ; oled.print(F("P mV"));
oled.setCursor(64, 2) ; oled.print(F("P mV"));
oled.setCursor( 0, 3) ; oled.print(F("P mV"));
oled.setCursor(64, 3) ; oled.print(F("P mV"));
oled.setCursor( 0, 4) ; oled.print(F("P mV"));
oled.setCursor(64, 4) ; oled.print(F("P mV"));
oled.setCursor( 0, 5) ; oled.print(F("P mV"));
oled.setCursor(64, 5) ; oled.print(F("P mV"));
oled.setCursor( 0, 6) ; oled.print(F("P mV"));
oled.setCursor(64, 6) ; oled.print(F("P mV"));
oled.setCursor( 0, 7) ; oled.print(F("P mV"));
oled.setCursor(64, 7) ; oled.print(F("P mV"));
delay(3000);
}
void loop()
{
randNumber = random(20000);
oled.setCursor( 0, 0) ; oled.print(F("Writing Data ")); oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 1) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 1) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 2) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 2) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 3) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 3) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 4) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 4) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 5) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 5) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 6) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 6) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor( 6, 7) ; oled.print(randNumber); oled.print(F(" "));
oled.setCursor(70, 7) ; oled.print(randNumber); oled.print(F(" "));
delay(500);
The problem is I want to refresh only all the variables from the sensor. In this coding, I attempted to use oled.print(" ") which is not effective; when the variables' digits dropped suddenly, some characters are not cleared, if too much space the unit strings will be cropped. Otherwise, if I use oled.clear command, the whole oled will refresh slowly and looks very apparent. Is there anything that I could try to fix this? Thank you