ESP32学习,驱动LED点阵屏,更换时钟大字体
试着更换不同的时钟大字体
使用PCtoLCD2002工具制作自模
使用不同的字体,多做几种
日历、农历版面交替显示
1.大字显示的代码
BigTime()(示例):
//大屏显示时间
void BigTime(){
if(bigTimeFlag<15){
//FillTab(0,0,128,45,myBLACK);//清屏
if(hou!=houOld){
FillTab(0,0,60,50,myBLACK);//清屏
houOld=hou;
if(hou<10){
dis30Numbers(0,-3,-7, myColor[flagColor]);
dis30Numbers(hou, 26,-7, myColor[flagColor]);
}else{
dis30Numbers(hou/10,-3,-7, myColor[flagColor]);
dis30Numbers(hou%10, 26,-7, myColor[flagColor]);
}}
if(minu!=minuOld){
FillTab(68,0,60,50,myBLACK);//清屏
minuOld=minu;
if(minu<10){
dis30Numbers(0,69,-7, myColor[flagColor]);
dis30Numbers(minu, 98,-7, myColor[flagColor]);
}else{
dis30Numbers(minu/10,69,-7, myColor[flagColor]);
dis30Numbers(minu%10, 98,-7, myColor[flagColor]);
}}
FillTab(58,26,10,20,myBLACK);//清屏
if(sec<10){
drawText("0",61,28);
drawText(String(sec),61,36);
}else{
drawText(String(sec/10),61,28);
drawText(String(sec%10),61,36);
}
FillTab(57,2,12,26,myBLACK);//清屏
drawHanziS(58,5,weekHZ[week].c_str(),myRED);
}else{
if(day1!=day1Old){
day1Old=day1;//设置标志 就不再刷新 防止闪屏
FillTab(0,0,128,45,myBLACK);//清屏
houOld=hou+2;minuOld=minu+3;// 返回时能正常显示
//可以加标志显示日期
displayNumbers(year1,40,0,myWHITE);
if(month1<10){
displayNumbers(0,64,0,myWHITE);
displayNumbers(month1,76,0,myWHITE);
}else{
displayNumbers(month1,76,0,myWHITE);
}
if(day1<10){
displayNumbers(0,98,0,myWHITE);
displayNumbers(day1,110,0,myWHITE);
}else{
displayNumbers(day1,110,0,myWHITE);
}
//显示农历
u8g2Fonts.setFont(u8g2_font_wqy12_t_gb2312);
u8g2Fonts.setForegroundColor(myColor[rand()%9]);
String nongli=china_animals+" "+china_monthday+" "+china_holiday+" "+china_year;
u8g2Fonts.drawUTF8(1,32,nongli.c_str());
//显示天气
String tianqi="天气:"+Weather+" "+"气温:"+Temp;
u8g2Fonts.drawUTF8(1,44,tianqi.c_str());
}
}
bigTimeFlag++;if(bigTimeFlag>=20){bigTimeFlag=0;day1Old=day1Old+2;}
/*
dis30Numbers(1,-2,2, myWHITE);
dis30Numbers(2, 28,2, myWHITE);
drawBit( 48,-1, sz30_maohao,32, 63, myWHITE);
dis30Numbers(3,70 ,2, myWHITE);
dis30Numbers(6, 100,2, myWHITE);
if(millis()-NowTime>=1000){
NowTime=millis();
GetTime();
FillTab(10,5,72,7,myBLACK);
drawText(oneNumTwo(day1)+"-"+oneNumTwo(month1)+"-"+String(year1)+" "+showMode,10, 5);
FillTab(10,17,60,7,myBLACK);
int week_ =week;
if(week==15)week_=0;
drawText(oneNumTwo(hou)+":"+oneNumTwo(minu)+":"+oneNumTwo(sec)+" "+String(week_),10, 17);
}
*/
}
总结
字体比较大,要是每秒都更新整个屏,有点闪烁晃眼,所以还要考虑做好局部更新的逻辑。