#include "U8glib.h"
#include "string.h"
#include <Wire.h>
#include <Arduino.h>
#include <OneButton.h>
#define hi_width 128
#define hi_height 64
static char hi_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1C, 0x00, 0x00, 0x70, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0xE0, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7C,
0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0x1F, 0x00, 0x00, 0x7E, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x7E, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0x7E,
0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xDF, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x1F,
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0x1F, 0x00, 0x80, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x80, 0x1F, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x80, 0x0F,
0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
0x0F, 0x00, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x80, 0x0F,
0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
0x0F, 0x00, 0xC0, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0xC0, 0x0F, 0x7C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0xC0, 0x07,
0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
0x0F, 0x00, 0xC0, 0x07, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0xC0, 0x03, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0xC0, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
0x07, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
0x00, 0xC0, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF8, 0x01, 0x00, 0x00, 0xC0, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x60, 0x00, 0xC0, 0x03, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0xF0,
0x00, 0xE0, 0x03, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0x3F, 0xF8, 0x0F, 0xC0, 0x03, 0x1E, 0x00, 0x80, 0x01, 0x00,
0x60, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xF8, 0x1F, 0xC0, 0x03, 0x1E,
0x00, 0xC0, 0x01, 0x00, 0x70, 0x00, 0x18, 0x00, 0x3E, 0x80, 0x3F, 0xF0,
0x1F, 0xC0, 0x03, 0x1E, 0x00, 0xE0, 0x01, 0x00, 0x78, 0x00, 0x1C, 0x00,
0x7F, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0x1E, 0x00, 0xE0, 0x01, 0x00,
0x78, 0x00, 0x1E, 0x80, 0xFF, 0xE0, 0x0F, 0x00, 0x1E, 0xC0, 0x03, 0x1E,
0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x1E, 0xC0, 0xFF, 0xE1, 0xFF, 0x01,
0x0E, 0xE0, 0x03, 0x1E, 0x00, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x1E, 0x00,
0xF8, 0xC0, 0xFF, 0x03, 0x07, 0xC0, 0x03, 0x1E, 0x00, 0xF0, 0x00, 0x00,
0x3C, 0x00, 0x1F, 0xC0, 0xF0, 0x00, 0xFF, 0x87, 0x03, 0xC0, 0x03, 0x0E,
0x00, 0xF0, 0x00, 0x00, 0x1C, 0x00, 0x0E, 0xE0, 0xF0, 0x00, 0xFC, 0xC3,
0x03, 0xE0, 0x03, 0x0E, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0xF0,
0xF0, 0x00, 0xFE, 0xE1, 0x3F, 0xC0, 0x03, 0x0F, 0x00, 0xF0, 0x00, 0x00,
0x1E, 0x00, 0x0F, 0xF0, 0x70, 0x00, 0xFF, 0xF0, 0x3F, 0xC0, 0x03, 0x0F,
0x00, 0x78, 0x00, 0x00, 0x0E, 0x00, 0x0F, 0xF0, 0x71, 0x80, 0x7F, 0xF0,
0x1F, 0xE0, 0x03, 0x0F, 0x00, 0x78, 0x00, 0x00, 0x07, 0x00, 0x07, 0xF0,
0x3F, 0xC0, 0x0F, 0x00, 0x07, 0xC0, 0x01, 0x0F, 0x00, 0x78, 0x00, 0x00,
0x03, 0x80, 0x07, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x07,
0x00, 0xF8, 0x00, 0x00, 0x00, 0x80, 0x07, 0xF0, 0x0F, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x80, 0x03, 0xC0,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x78, 0x00, 0x00,
0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
int progress = 0;
int start_time ;
int duration;
int val;
float volt;
char clo[] = {"00:00"};
void func1();
void func2();
void func3();
void func4();
void Click();
OneButton btn = OneButton(
10, // Input pin for the button
true, // Button is active LOW
false // Enable internal pull-up resistor
);
void setup() {
u8g.setFont(u8g_font_tpssb);
u8g.setColorIndex(1);
start_time = millis();
btn.attachClick(Click);
}
void loop() {
btn.tick();
switch (progress) {
case 0:
func1();
break;
case 1:
func2();
break;
case 2:
func3();
break;
case 3:
func4();
break;
default:
func1();
}
}
void Click() {
if (progress < 4) {
progress++;
} else
progress = 0;
}
void func1() {
u8g.setFont(u8g_font_tpssb);
duration = millis() - start_time;
if (duration > 100) { //如果秒數大於1則進入執行
clo[4] += 1;
if (clo[4] > '9' || clo[4] < '0') { //判斷秒數第一位是否進為,是的話秒數第二位數加一
clo[4] = '0'; //清空原來秒數一位數的數值
clo[3] += 1; //第二位秒數加一
}
if (clo[3] == '5' && clo[4] == '9') {
clo[3] = '0';
clo[4] = '0';
clo[1] += 1;
}
u8g.firstPage();
do {
u8g.drawStr(10, 10, "Func.1");
u8g.drawStr(43, 37, clo);
u8g.drawStr(30, 60, "11103211");
} while ( u8g.nextPage() );
start_time = millis();
}
}
void func2() {
u8g.setFont(u8g_font_tpssb);
val = analogRead(A0);//量測電壓
//volt = map(val, 0, 1023, 0, 5);
volt = val * (5.0 / 1023.0); // 轉換為電壓值
char char_volt[6];
//char char_volt[6] = char_volt&'V';
//sprintf(char_volt, "%fV", volt); //將volt數值轉換成文字
dtostrf(volt, 5, 2, char_volt); // 5表示總位數,2表示小數點後位數
strcat(char_volt, "V"); // 將 "V" 添加到字符串的末尾
u8g.firstPage();
do {
u8g.drawStr(10, 10, "Func.2");
u8g.drawStr(43, 37, char_volt);
} while ( u8g.nextPage() );
}
void func3() {
u8g.firstPage();
do {
u8g.drawDisc(32, 32, 32);
u8g.drawFrame(0 , 0, 64, 64);
u8g.drawLine(0, 0, 64, 64);
} while ( u8g.nextPage() );
}
void func4() {
u8g.firstPage();
do {
u8g.drawXBM(0, 0, 128, 64, hi_bits);
} while ( u8g.nextPage() );
}