记录下
好像代码逻辑有点low
不过能用,后期再来优化下;
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D5, /* data=*/ D6, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display
//在nodemcu中 scl 是 D5 sda是D6
//这里用到的是 全缓冲的模式
//采用用数据计数的方式,虽然效率不高....
//clock_
void setup(void) {
u8g2.begin();
}
int clock_num[5] ={0}; //用数组来表示时间数
void loop(void){
u8g2.clearBuffer();
u8g2.drawFrame(0,0,128,64);
u8g2.setFontDirection(0);
u8g2.setFont(u8g2_font_inb27_mf);
// u8g2.drawStr(1,45, "D");
u8g2.setCursor(2, 40);
u8g2.print(clock_num[0]);//小时数 的十位
u8g2.print(clock_num[1]);//小时数 的个位
if(clock_num[4]%2 ==0) //由于没有秒数 ,用 : 亮灭代表秒正的转动
u8g2.print(':');
else
u8g2.print(' ');
u8g2.print(clock_num[2]);//分钟数 的个位
u8g2.print(clock_num[3]);//分钟数 的十位
//以下是简单的逻辑关系
if(clock_num[4] == 60)
{
clock_num[3]++;
clock_num[4]=0;
}
if(clock_num[3] == 10)
{
clock_num[2]++;
clock_num[3] =0;
}
if( (clock_num[2]*10+clock_num[3]) == 59 )
{
clock_num[2]=0;
clock_num[1]++;
}
clock_num[4]++;
if( (clock_num[0]*10+clock_num[1]) == 24 )
{
clock_num[5] ={0};
}
///u8g2.drawStr(50,43, ":");
// u8g2.drawStr(73,45, m_str_m);
u8g2.sendBuffer();
delay(10); //秒数 应定义为 delay(1000);
}