構(gòu)建番茄鐘計時器
我一直很推崇深度專注的工作方式,并努力踐行這一理念。但我也需要時不時地休息一下,這時我就需要用到番茄鐘計時器。市面上有很多適用于手機的應用程序,但我更希望完全與手機斷開連接。我身邊有兩塊閑置的 M5 StickC Plus 設備,考慮到其尺寸和內(nèi)置電池,這似乎是一個不錯的開始選擇。自從我開始去健身房鍛煉以保持健康以來,已經(jīng)有幾個月的時間了,而這個計時器在這里也會非常有用。
M5 StickC Plus2
M5StickC Plus2 是一系列小巧的 ESP32 設備中的一款,其實際用途遠超其外觀所呈現(xiàn)的那樣。它體積小巧,便于攜帶,還配備了漂亮的顯示屏、按鈕、蜂鳴器以及各種傳感器,非常適合將其改造成番茄鐘計時器。非常適合快速原型制作,并在將其開發(fā)成更復雜的產(chǎn)品之前進行功能驗證。
要求/規(guī)定
?它應該具備多種不同的計時程序(深度專注模式、短時間專注模式、平板支撐模式、高強度間歇訓練模式……)(等等)
?每個程序都可以包含步驟,而每個步驟則由步驟名稱和以秒為單位的時間來定義,此外整個程序還可以設置正數(shù)的循環(huán)次數(shù)或者無限循環(huán)。
?在滾動瀏覽可用步驟的過程中,我應該能夠看到菜單屏幕上的前兩步內(nèi)容。
?計時器應顯示倒計時、展示接下來的步驟以及循環(huán)次數(shù)。
?我應該能夠以直觀的方式實現(xiàn)暫停、開始、跳過步驟以及退出操作。
?步驟完成的音頻反饋。
?節(jié)能及基于慣性測量單元的功能方面的內(nèi)容,我將在后續(xù)的項目中進行探討。
按鈕命名與使用方法
我將采用 M5 便攜式設備的官方命名規(guī)則
按鈕控制:
?菜單模式:A=切換至下一個節(jié)目,A Long=選擇,B=切換至上一個節(jié)目
?計時器運行狀態(tài):A 代表暫停,A Long 代表跳過步驟,B Long 代表退出對話框。
?計時器暫停:A=繼續(xù),A(長按)=跳過步驟,B(長按)=退出對話框
?退出對話框:A=確認退出,B=取消
編程
通常我更傾向于使用 Platform IO,但由于 M5Stick 的電路板定義尚未公布,所以我不得不使用 Arduino IDE。
我確保了編程方式能夠方便且直觀地添加更多的定時程序。還為屏幕的顯示設計了獨立的功能。經(jīng)過幾個小時的調(diào)試,我終于完成了一個能正常運行的版本。但隨后我發(fā)現(xiàn),每當定時器發(fā)生變化(每秒一次)時,整個屏幕都會閃爍。這非常令人分心。疲憊不堪且急于完成這個項目,我要求進行修復并重新優(yōu)化代碼。最終效果還不錯,克勞德甚至還對用戶界面做了些許改進,但我還是需要做一些手動調(diào)整以確保其正常使用。
屏幕
菜單界面 - 展示了前兩步內(nèi)容,包括程序總耗時以及循環(huán)次數(shù)。
計時器屏幕會顯示當前步驟、暫停/運行狀態(tài)、倒計時時間、進度條、下一步操作、當前循環(huán)次數(shù)以及總循環(huán)次數(shù)。
退出畫面
總結(jié)性思考
我已經(jīng)使用了這個產(chǎn)品三天了,它很好地滿足了我的需求,盡管考慮到這是一款老舊設備,電池續(xù)航能力并不理想,因為沒有編寫節(jié)能代碼,而且更重要的是它使用的是 ESP32 單元。但這是我對將其投入實際使用的一次初步驗證,并且我還計劃在此基礎上進行一些改進,比如實現(xiàn)節(jié)能功能以及基于慣性測量單元的控制。
本文編譯自hackster.io





