電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>適合3.7電子紙顯示器的時(shí)鐘

適合3.7電子紙顯示器的時(shí)鐘

2023-02-03 | zip | 0.03 MB | 次下載 | 免費(fèi)

資料介紹

描述

加速

電子紙屏幕特別適合顯示時(shí)間較長(zhǎng)后才發(fā)生變化的內(nèi)容。所以我認(rèn)為時(shí)鐘非常適合這款 3.7" 電子紙顯示器。

注意:該軟件處于 BETA 階段,被認(rèn)為是第一個(gè)運(yùn)行的版本。我分享它是為了讓您可以擴(kuò)展、改進(jìn)它或使用它的一部分,并使其與非常相似的項(xiàng)目兼容。

通過 SPI 接口連接到 ESP32 的顯示器由GxEPD2 庫(kù)驅(qū)動(dòng),字體由 U8g2_for_Adafruit_GFX 庫(kù)提供,其方法在 GxEPD2 的圖片循環(huán)(分頁(yè)繪圖)中工作。

時(shí)間信息從設(shè)置中的公共 ntp 網(wǎng)絡(luò)時(shí)間協(xié)議)服務(wù)器接收,然后復(fù)制到 updateTime() 中名為 timeinfo 的時(shí)間結(jié)構(gòu)(struct tm)。誠(chéng)然,我在編程方面的知識(shí)為零,因此可以更有效、更智能地對(duì)時(shí)間同步進(jìn)行編程。我使用 strftime 函數(shù)為時(shí)、分和秒生成三個(gè)字符串,然后將它們轉(zhuǎn)換回整數(shù)。一旦開始,此時(shí)的秒數(shù)就會(huì)從時(shí)鐘通常等待的分鐘數(shù)中減去,直到它將時(shí)間更新為下一分鐘并刷新顯示。這意味著假設(shè)時(shí)間正好是 11:11:50,時(shí)鐘只會(huì)等待 10 秒,然后切換到下一分鐘。

這是幾秒鐘的樣子:

?

char timeSek[3];
strftime(timeSek,3, "%S", &timeinfo);
int s = atoi(timeSek);
startMillis -= s * 1000;

?

此外,時(shí)間以 12 小時(shí)格式的表達(dá)式表示除了默認(rèn)情況下以 24 小時(shí)格式顯示的完整小時(shí)數(shù))。0點(diǎn)和12點(diǎn)都印成“Twelfe o'clock”。當(dāng)然,您必須使 Words(int h, int m) 函數(shù)中的數(shù)字和單詞適應(yīng)您的語言。為了將時(shí)間信息轉(zhuǎn)換為字符串,我使用 sprintf()連接數(shù)字和其他單詞并將它們保存到全局 char 數(shù)組(在范圍內(nèi)初始化包含時(shí)間短語的 char 數(shù)組會(huì)更好嗎?)。然而,數(shù)字需要很大的閃存大小。

例子:

?

else if (m <= 30){
sprintf(words,"%s past%s", nums[m], nums[h % 12]);
} 

?

顯示文本的實(shí)際功能與 GxEPD2 庫(kù)的示例非常相似。請(qǐng)注意,文本始終位于中間,而 y 坐標(biāo)是字符的底部(例如“g”向下超出該 y 坐標(biāo))。由于我后來決定實(shí)現(xiàn)字體在兩種不同大小之間切換,具體取決于時(shí)間的表達(dá)時(shí)間,部分窗口將始終設(shè)置為涵蓋字體大小和顯示的完整寬度的大小。如 showClock() 所示,我確保部分窗口的坐標(biāo)是八的倍數(shù)。我不確定哪些坐標(biāo)必須符合此規(guī)則,這就是為什么我將所有坐標(biāo)四舍五入為 8 的倍數(shù)(請(qǐng)看下面的代碼)。字體 (const uin8_t) 作為指針傳遞給函數(shù) void showText(char name[], const uint8_t *font)。

坐標(biāo) (0, 0) 在左上角。Y 從上到下遞增。

在顯示時(shí)鐘()中:

?

int px = rx - r;//middlepoint-radius
px = px - (px % 8);//round down to multiple of eight 
int py = ry - r;
py = py - (py % 8);  
int pw = r*2;pw = pw - (pw % 8) + 8 * 2;//roundupint 
ph = r*2;ph = ph - (ph % 8) + 8 * 2;

?

如果您的面板不支持部分刷新,請(qǐng)將該行更改為 display.setFullWindow()。為了清潔顯示器,這種完全刷新每隔一小時(shí)就會(huì)發(fā)生一次。

為了打印模擬時(shí)鐘,我使用了 sin() 和 cos() 。所有參數(shù)均采用徑向單位。例如,分鐘時(shí)鐘指針每分鐘移動(dòng) 1/30 π ,相當(dāng)于 6 度 = 360 度/60。該庫(kù)使繪制直線和圓成為可能。

時(shí)鐘指針末端的坐標(biāo):

?

const float pi = PI
float ah = (float)h * 1/6.0000000 * pi + (float)m * (1/360.0000000 * pi);
float am = m * 1/30.00000000 * pi; 
int shx = round(sin(ah) * ((float)r-8) / 1.600);
int shy = round(cos(ah) * ((float)r-8) / 1.600);
int smx = round(sin(am) * ((float)r-8));
int smy = round(cos(am) * ((float)r-8));

?

我試圖使 showClock 函數(shù)具有可擴(kuò)展性,因此至少在某種程度上您應(yīng)該能夠更改圓形時(shí)鐘的位置和半徑。

當(dāng)然,這個(gè)項(xiàng)目可以用另一個(gè)與 GxEPD2 庫(kù)兼容的電子紙面板來制作。

我認(rèn)為這個(gè)項(xiàng)目的結(jié)果非常好。但是,在軟件方面還有很多需要改進(jìn)的地方。更好的解決方案還應(yīng)該具有深度睡眠功能。結(jié)合需要很少能量的電子紙技術(shù),時(shí)鐘可以在電池上運(yùn)行很長(zhǎng)時(shí)間。

我希望我能給你一些啟發(fā)。

------許可:------------------------------------

辛格杰姆

GNU 許可證:查看所有原始代碼:GxEPD2:https://github.com/ZinggJM/GxEPD2。提供使用和修改示例的庫(kù) GxEPD2 的作者

https://github.com/ZinggJM/GxEPD2/blob/master/LICENSE

---------------------------------------------- ------

奧利弗·克勞斯

BSD 許可證:查看所有原始代碼:https://github.com/olikraus/U8g2_for_Adafruit_GFX。U8g2 字體庫(kù)的作者。參見確切的 c。注意事項(xiàng):

https://github.com/olikraus/U8g2_for_Adafruit_GFX/blob/master/LICENSE

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)