Monday, March 1, 2021

Arduino Displays Time On SH1106 OLED GLCD Using milli() Function

Overview

In the previous post, I showed about a basic usage of SH1106 OLED GLCD. With the Arduino millis() function, we can use it to display the power up time. This function counts the Arduino start up time. It return the time in milli seconds. I can count up to 50 days before it overflows and return back to zero.

Arduino Displays Time On SH1106 OLED GLCD Using milli() Function
A sample Program

The graphical LCD has an advantage of scalable fonts and graphic. So we can use any preferred font type and size.

In this example, I use this timing function to display the powered up time in HH:MM:SS, with the days counts since started up.

With u8glib library, we can select any font with its size to fit the display.

Arduino Displays Time On SH1106 OLED GLCD Using milli() Function
Schematic

Arduino Code

#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

unsigned long myMilli=0;
unsigned int secs,mins,hours,days;

void displayText1(void){
  u8g.setFont(u8g_font_timB10);
  u8g.setPrintPos(0,10);
  u8g.print("Powered Up Times:");

  u8g.setFont(u8g_font_courB18);
  u8g.setPrintPos(20,35);
  u8g.print(String(hours%60)+":"+String(mins%60)+":"+String(secs%60));

  u8g.setFont(u8g_font_timB10);
  u8g.setPrintPos(0,55);
  u8g.print("Days:");

  u8g.setFont(u8g_font_courB18);
  u8g.setPrintPos(50,60);
  u8g.print(String(days));
}

void graphicTask(void){
  u8g.firstPage();
  do{
    displayText1();
  }while(u8g.nextPage());
}

void setup(void) {
}

void loop(void) {
 
 myMilli=millis();
 secs=myMilli/1000;
 mins=secs/60;
 hours=mins/60;
 days=hours/24;
 
 graphicTask();
 
}

Click here to download Arduino sketch.


No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)