diff --git a/.vscode/settings.json b/.vscode/settings.json index 2fe7de5..f867823 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -27,6 +27,9 @@ "cstdlib": "c", "fluxwifi.h": "c", "event_groups.h": "c", - "fluxuart.h": "c" + "fluxuart.h": "c", + "esp_timer.h": "c", + "fluxbutton.h": "c", + "iot_button.h": "c" } } diff --git a/SquareLineProj/ESP32S3_UI.sll b/SquareLineProj/ESP32S3_UI.sll index e471679..95de5e2 100644 --- a/SquareLineProj/ESP32S3_UI.sll +++ b/SquareLineProj/ESP32S3_UI.sll @@ -12,7 +12,7 @@ "board": "ESP32-S3-LCD-EV-BOARD", "board_version": "1.0.1", "editor_version": "1.5.1", - "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAyADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOEozQDRXtGaYuPSkpCQoyTiq7ajZqSGuYQR6yD/GkUpdyzRVX+0rL/n7g/7+L/jR/aVl/wA/cH/fxf8AGnZ9iuZdy1RVX+0rL/n7g/7+L/jR/aVl/wA/cH/fxf8AGiz7BzLuWqKq/wBpWX/P3B/38X/Gj+0rL/n7g/7+L/jRZ9g5l3LVKD61U/tKy/5+4P8Av4v+NH9pWX/P3B/38X/Giz7Cui7RVIanZD/l7g/7+L/jS/2pY/8AP1D/AN/F/wAaVn2FdFyiqn9qWP8Az9Q/9/F/xo/tSx/5+of+/i/40WfYLouZB60EYqn/AGpY/wDP1D/38X/GgarZD/l6h/7+L/jRZ9hOzLdGaqHVLH/n6h/7+L/jR/alj/z9Q/8Afxf8aLPsQXc5pCKp/wBqWP8Az9wf9/F/xpf7Usf+fuD/AL+L/jSs+xLRa6U4GqZ1Sx/5+of+/i/40n9qWP8Az9Q/9/F/xp2fYhxLtJj0qn/atj/z9Q/9/F/xpf7Vsf8An6h/7+L/AI0uV9iXEuZoqn/alif+XqH/AL+L/jR/alj/AM/cH/fxf8aLPsQ4suUvWqf9qWP/AD9wf9/F/wAaT+1LH/n7g/7+L/jRZ9hODZcoqp/atj3uof8Av4v+NJ/atj/z9Q/9/F/xos+xm4Mug0uM1R/tWx/5+4f+/i/40v8Aatj/AM/cH/fxf8aOV9hODLeKKq/2rYf8/cH/AH8X/Gk/tSw/5+4P+/i/40WfYh05di4DS1S/tSx/5+4P+/i/40+K/tZm2xXEbt6K4P8AKk01uhOnLsWqKQHNLSMztKKKK8k94KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgyPSjOOtKG9ar35I065YHBETkH8DXtpXdjmUjk9W1aS+mZEYrbg4AH8XuazKKK9+nTjTjyxMW23dhRRRViCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjoaKKAOn8PavJJKLO4YsSP3bHr9DXTA155phK6raEHB85B+or0KvFxtKMKl49TnqrU7aiiivnD2AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOCxiq+oH/iW3X/XF/5GrPSq2of8g26x/wA8X/ka92HxI4FI4KiiivoBBRRRQAUUUUAFFFFABRRRQAUUUUAWtN1CbStSt7+3EZlgcOokXcp+o/yfTBre8WWVnPa2HiDTYPIttQDCWAciKVT8wHsecfTPGcVjaT/ZP2pv7Y+2/Z9h2/Y9m/fkYzu4xjP6V3DSeFG8AKpXWP7OXUdoP7rzhL5ef93bg/XNcWInyVYySd9vVP8A4JpFXTRz+if8iN4q/wC3T/0aa5+yu3sb6C7jSN3hkWRVkXKkg5wR6V32lN4THhPXxAusG0/0f7SZPL8z752bMcdeua5G5n0W11azuNJS9e3idXkS9CEsQ2cDbxjHrRRqc06i5Xq//bUElZLU6bWfD+ippT+Jpo7myt7uIC309EwVuGz3I4TjcOBkdMcKbHjLVtBt/FV5De+GxeXCBA0/2149/wAikfKBjgED8Km1pLi/vvGGkSymeVFiu7fceIwuCQB2+VwPSrF1F4uurlmuPCvh+9nCgPI6Ize2cyZrgjPWMqkun81tGota6X7PzLa7fkcx48eKW60SSCHyYW0iBo4txbYpLYXJ64HGa1pLfSjrgjm0dH03WbGG4L20eGsSeCykcKob731HXocnxnaay0+nT6tbWNpM8X2eC1tT9xEPGRkgD5sDB/DitnT7S602C/0681CKea30C63WyDJtdxU7Sw4Y8+px06YJ2bSows++z897+TtqL7TKF34ctfD8AtPs41fXGuIshN3kWylvkV+mTJ0wccHjGAWr+IvLuvDqXU2k2Nhf2+oyWcq2cexTtUEggEgnJ689K6mSTzfE+sSYxvv9JbHpnFc54m/5Ampf9jFc/wDoIpUakpTjzb6P70nbtbUJJJOxLoFlpE/gpb29S0hurfUGEE0q/LKVQSeXJ6qwBX8sAk4Jq/8AwjB8M2WpHRJLW61GOcxG3nJWOSM7RkE42kkHgce9VrqGzsPAVrZz6jaXLy6mly8dnOHkSMxYOQejDH0zirYv/DGqw6Jo9omrCS1uNluZxGFYySqW3kHOPTAFU0+fnXNbme19rP8AWwdLFnxBcWVnpt/4SKwRLp9pDLFK/V7jKlivqWV/59q87ra8XTed4u1V927Fy6Zxj7px/SsWuzCU+Smn1er9bamc3dhRRRXSSFFFFABRRRQAUUUUAFFFFAFrTf8AkKWn/XZP/QhXonWvOtN/5Clp/wBdk/8AQhXodeVmPxRMqiO2ooor5c9UKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDg81W1D/kG3X/XF/5GrNVtQ/5Bt1/1xf8Aka+gj8SPKUjgqKKK901CiiigAooooAKKKKACiiigAooooAs2ENrcX0UV7dm0t2J3ziIybOOPlHJ5wK7PZ4U/4RX+xf8AhKDn7Z9r877BJ12bdu36e9cHRWNWi6jT5mrdrfqmUpW6HeWCeFLLQdV0w+KC5v8Ayv3gsJBs2NuHHfP1FcrObXSdYSTTrqPUYYirpJLblFY+hRvQ1m0UqdDkbbk3fe9vTol2Byv0O+8T+M5TDbR2S6c323S0W6aJAWRnBDJkHIxxwelZd3fWWt+HLS8vHQ6lprpDOhmCPdwE8EZHLDp37k9hXK0VEMJCCSjo11/ryG5t7mnr+sya7q0l4yCKMARwwr0ijH3VH8/qTXU6ZP4X0m4ntH1N2e602WG5vgjOjPIUwFUDPAzyfx9uDoq54eMoKCbSXYSlZ3PQp9b0TT4ri7g1p9TvJbm0lZDbNDkQn1xjpWJqupwah4auJFdEmn1qa58guC6oyDBx6Z4z7VzFFRDCQg73bf8AXayG5tnQQXWlaX4fgkg2XWszTLNuZDi0CNkDnhi3ftj6DOxpXxE12bWLKK7vIFtnuI1mZolUBCwDEntxnmuHoqp4WnNPnV2+/wCglNrY77xT4qku9L1C0bVYrgT3bpDbwxKVSFHOGZ8ck4UjHYZzzxwNFFVQoRox5YhKTk7sKKKK2JCiiigAooooAKKKKACiiigC1pv/ACFLT/rsn/oQr0KvPNN/5Clp/wBdk/8AQhXoea8rMfiiRJXO2ooor5c9MKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgckdaSRFmheNvuupU/Q07g0mCOle+eIpHAXNvJa3DwyjDKcfX3qKu5vdOttQQCZcOOjrwRWU3hUZO28IHoY8/wBa9Oni4Ne9ozoVRM5uiuj/AOEV/wCnz/yF/wDXo/4RX/p9/wDIX/160+tUu/5jUkznKK6P/hFf+n3/AMhf/Xo/4RX/AKff/IX/ANel9bo9/wAx3Ocoro/+EV/6fP8AyF/9ej/hFf8Ap9/8hf8A16PrdHv+ZVjnKK6T/hFP+n3/AMhf/XpD4Ux/y+/+Qv8A69L65R/m/MfKznKK6P8A4RX/AKff/IX/ANej/hFP+n3/AMhf/Xp/W6Pf8x8kjnKK6T/hFP8Ap9/8hf8A16P+EU/6ff8AyF/9el9bo/zfmHs5HN0V0n/CKf8AT7/5C/8Ar0f8Ip/0+/8AkL/69H1uj/N+Y/ZT7HN0V0n/AAin/T7/AOQv/r0f8Ip/0+/+Qv8A69H1uj/N+Yeyn2OborpP+EU/6ff/ACF/9ej/AIRT/p9/8hf/AF6PrdH+b8w9lPsc3RXSf8Ip/wBPv/kL/wCvR/win/T7/wCQv/r0fW6P835h7KfY5uiuk/4RT/p9/wDIX/16B4U/6ff/ACF/9ej63R7/AJh7KfY5uiul/wCES/6fv/IX/wBej/hEv+n3/wAhf/Xo+uUf5vwYeyn2Oaorpf8AhEv+n3/yF/8AXo/4RL/p9/8AIX/16PrlH+b8GHsp9jmqK6YeEs/8v3/kL/7KkPhLH/L7/wCQv/r0fXKH834MTpyXQ5qiul/4RL/p9/8AIX/16P8AhEv+n3/yF/8AXo+uUf5vwYuSRzVFdN/wiP8A0/f+Qv8A7Kj/AIRH/p+/8hf/AF6PrlD+b8GHIzmaK6X/AIRL/p9/8hf/AF6ki8JxB8y3buvoqbT/ADNDxlHv+YrMzPD9k1zqSSlf3UJ3sffsPzrtqit7aG0hEMEYRB2HepOleViK3tp36CaO3ooorwD0AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOA6U4HNHBq1p2nSahciJOFH3m9K92UlFXZ4EE5O0SqRSZIrvIPC+nIg82Iu3++3+NTf8ACNaR/wA+n/kR/wDGuX67T7M7Vg6ndHn+c0Yrv/8AhGtI/wCfT/yI/wDjS/8ACN6T/wA+n/kR/wDGj67T7MpYWfdHn+aK9A/4RvSP+fT/AMiP/jR/wjWkf8+n/kR/8aPrlPsy1h5+R5/n1pMV6D/wjekf8+n/AJEf/Gj/AIRvSf8An0/8iP8A41P1uHZlqjNHn2cU4HNd/wD8I1pH/Pp/5Ef/ABo/4RrSP+fT/wAiP/jS+tw7MpUpHAEUnIr0D/hG9J/59P8AyI/+NH/CN6Sf+XT/AMiP/jR9bh2ZahI4DNFd/wD8I1pH/Pp/5Ef/ABo/4RvSf+fT/wAiP/jR9bh2ZXKzgKXrXff8I3pP/Pp/5Ef/ABpG8O6Ogy1qAPUyt/jR9bh2Y0mjgaK7n+x9C6eR/wCPv/jSf2PoX/PD/wAff/Gj63Dsyzh6K7j+x9C/54f+Pv8A41ImgaNIMpbA/wDbR/8AGj63DswODorv/wDhG9J/59P/ACI/+NH/AAjek/8APp/5Ef8Axo+tw7MDgKK7/wD4RvSf+fT/AMiP/jR/wjek/wDPp/5Ef/Gj63DswOBBxTgc13n/AAjek/8APp/5Ef8Axo/4RvSf+fT/AMiP/jR9ah2Yjg6K73/hHNK/59f/ACI3+NH/AAjmlf8APr/5Eb/Gl9ah2YjgqXNd5/wjmlf8+v8A5Eb/ABo/4RzSv+fX/wAiN/jR9ah2YWODx6Uld7/wjulf8+v/AJEb/Gj/AIR3Sv8An1/8iN/jR9ah2ZLicFSg13n/AAjmlf8APr/5Eb/Gj/hHNK/59f8AyI3+NH1qHZi5GcJim9K73/hHdKxgWuP+2jf41m6l4ahSEvagqR2JJ/PNCxMG7Eumzlc0tDIVYqRgg4INN6V0GLR3FFFFeQdgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHAV2vhOBRYmbA3MSf1x/SuLIruvCv/ACCU/H/0Jq9TGP8Ad/M8bL9ar9DdrLnvZZmIt22Rj+PGS309qu3ZItZMdxj8CcGs3pXlnsjNsp63Vx/33Rtl/wCfq4/7+Gn0UAM2y/8AP1cf9/DRtl/5+rj/AL+Gn0UAM2y/8/Vx/wB/DRtl/wCfq4/7+Gn0UAM2y/8AP1cf9/DRtl/5+rj/AL+Gn0UAM2y/8/Vx/wB/DUkdxcwEHzDMndX6/gaSigDWilSaJZEOVNPqlp+R5q9sg/j/AJFXaACqyqLid2flEO1V9+9Wagtv+W3/AF1agCfpRRXHf8LJ0f8A59r7/v2n/wAVW1KhUrX9mr2MqtenSt7R2udjVe4iwDNHhXXnPqKq6Jrdtr1k91apKiJIYyJQAcgA9ifUVfm/1En+6f5VnOEoScZKzRcJxnFSi7pjlYOisOhGaWmQ/wCoj/3R/Kn1JQyWVIYmkc4UVlSXFzOSfMMKdlTr+Jq3qGT5S9sk/j/k1ToAZtl/5+rj/v4aNsv/AD9XH/fw0+igBm2X/n6uP+/ho2y/8/Vx/wB/DT6KAGbZf+fq4/7+GjbL/wA/Vx/38NPooAZtl/5+rj/v4aNsv/P1cf8Afw0+igBm2X/n6uP+/hpR56nK3U2f9ptw/KnUUAW7S8Z3EM4G8/dYdG/+vV0gEEEZBrGORhh1U5H1FbVAHA65CINUcD+IZ/p/Ss7rWt4k/wCQqf8Ad/8AZjWPmvUpfAjGS1O4oooryzYKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgQa7vwr/yCV/H/ANCauDru/Cv/ACCE/H/0Jq9TG/w16ni5a/3r9P1Rr3f/AB7P+H86zK07v/j2f8P51mV5Z7QUUUUAFFFFABRXnn/CsL//AKKB4q/8Dm/xruNMsm07S7aye6nu2hjCGe4fdJIR/Ex7mgC3RRRQAUUUUAXbD/lp+H9auVTsP+Wn4f1q5QAVBbf8tv8Arq1T1Bbf8tv+urUAT1494Q0y01TUbuK8h81I7R5FG4rhgVAPBHqa9hrynwB/yF77/rxk/wDQlr1cvk40KzTs9P1PKzCKlWpJq61/Q6X4bf8AIu3H/X23/oCV103+ok/3T/KuR+G3/Iu3H/X23/oCV103+ok/3T/KuXH/AO8z9TqwH+7Q9Ah/1Ef+6P5U+mQ/6iP/AHR/Kn1yHWU7/wD5Z/j/AEqlV2//AOWf4/0qlQAUUUUAFFFFAGNr3iay8PXGlQ3cU7tqd4lnCYlBCuxwC2SMD6Z+lbNeGeOPC/iaxv8Awut941nv3uNWhht3ayVPs8hIxIAGO4j04r1Xwxo2taPBcR6x4ifWmkYNG72ywmMY5HBOc8UAb1FFFABRRRQAVs1jVs0AcN4kGdVP+7/7Max62PEn/IVP+7/7MayM5616dH4ERKJ29FFFeYWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBwJFd14V/5BCfj/AOhNXDV3XhX/AJBK/j/6E1enjf4a9Tw8s/iv0/VGtd/8ez/h/OsytWZPMhZR1I4rKrzD3AooooAKKKKACiiigAooooAKKKKALth/y0/D+tXKq2SFYyx/iPFWqACoLb/lt/11ap6gtziSZD97eW/A0AT15bovi6xs7cLeadi5S2NulxbgZZOMBgSPQc16lRXVh68KcZRnG97dbHNiKE6koyhK1r9LnHfDb/kXbj/r7b/0BK66b/USf7p/lT6iuGC27k9wRWder7aq6lrXNKFL2VNU73sOh/1Ef+6P5U+mRArEinqFANPrE1Kd/wD8s/x/pVKr96haMMP4TzVCgAooooAKKKKAIZ7S2uXie4t4pWhbfGZEDFG9RnofepqKKACiiigAooooAK2ayYkMkiqO55rWoA4bxJ/yFT/u/wDsxrHrY8Sf8hU/7v8A7Max69Sj/DQM7iiiivLAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgq7rwr/yCV/H/ANCauEIxXd+Ff+QSv4/+hNXpYt/u16nh5Z/Gfp+qNyq81osp3A7W7+9WKK809wz/ALDL/eT8zR9hl/vJ+ZrQooAz/sMv95PzNH2GX+8n5mtCigDP+wy/3k/M0fYZf7yfma0KKAM/7DL/AHk/M0fYZf7yfma0KKAM/wCwy/3k/M1JHYgHMjZ9hVyigAxgYFFFFABUUsO9g6MUcdxUtFAEH+lf9Mf1o/0r/pj+tT0UAQf6V/0x/WhYXZw8zhsdFHQVPRQAUUUUABGRg1TksQTmNsexq5RQBn/YZf7yfmaPsMv95PzNaFFAGf8AYZf7yfmaPsMv95PzNaFFAGf9hl/vJ+Zo+wy/3k/M1oUUAZ/2GX+8n5mj7DL/AHk/M1oUUAZ/2GX+8n5mlFjJnllA9qv0UARQwLCOOSepNS0UUAcJ4mONW/4D/wCzGsgHNa/ib/kLH/c/9mNY1erR/hoZ3dFFFeUIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDhK7jwt/yCl/H/ANCauHruPC3/ACCl/H/0Jq9DF/AvU8bLv4r9P1RuUUVFNKU2ogy7dK889kloqAW7kZeeTd/snAo+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77oNu4GUnk3f7RyKAJ6KihlL7kcYdetS0AcJ4m/5Cx/3P/ZjWNWz4m/5Cx/3P/ZjWNXq0f4aGd3RRRXlCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4UjFdv4W/wCQUv4/+hNXFV23hf8A5Ba/j/6E1ehivgXqePl6/ev0/VG3UH/L9/2z/rU9Qf8AL9/2y/rXnnsE9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARzS+UmQMsThR6moxBI4zJM4PohwBSy/8fUH/AAL+VT0AQfZv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xWIjhqTqS6GjJq9vE217lc+wz/KrZklVVJyAwDKcdQe4rAttFjMatcO+48lVIGPau5tFt9Q0tbdU2CJQijrtwMA5rfFUsND3aMm317fI5sNWxU/erxST27/Mw/Ok/vfpS+c/979KYylGKngg4NJXEmjtcexJ50n979KXzpP736U+M2aw5lE7yk/dUhFA57857dhWx9jSysNQVzJ5TpDIoIw4BY/KfQ5GP19qohmH50n979KPOl/vfpWnb6XBcXVkQ0gt7oPwSN6lQcjOMEZ71UuLVItPs7hSxebfuB6DBwMUCsmVxPJ/e/SjzpP736VpyaVAmqXcG6QxW8JlxkbmwoOM445PpWSxG87QQueATkgfWmQ0P85/736UGaT+9+lW4IrGaWC3zOXkAUyAgBXPbbjkA4HUd6qTRNBPJCxBaNipI6ZBxRcloTz5P736UefJ/e/QU0jNNxirTIaJPOk/vfpSedJ/e/SmVoWzWc1xb232XKybUeQuQ+49SMHGATwMdqdxWKPnyf3v0o86T+9+laP2OG0trueZBOY5/s8QOQMjkkgEHoOOaivYIY47O8hjAimXJjJONynDd84P1zRcTiUvOk/vfpR50n979K07Wxhe3up44jckKhhjJJzkjcCFwSV6duoOORTL2OKwutT+yhGEMYKb1EgUl0B6gjjJFKVRQTk+hjXkqVKVWWyTf3Gd5r/3v0oMsn979Kh/te79Lb/wFi/+Jqzp2pTz6naQyLbNHJMisPs0YyCwB/hrmjmVJu1n/XzPAhxDhJyUVGWvkv8AMiM0ndv0o86T+9+laf8AbX/UM03/AL8f/XrSu9Am1RbW6tFtYFeBCyAFRuPJ4APqK9Dmtue97O+xzJmk/vfpSedJ/e/Sm0YqjJxO8ooorlPQCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA5OORINFmAdfNuJQpXPIRec/icflVq/u4X0tJI5Abm62eeAeRsGOfTJwaxyPSkrC57Dp63NtrhHunuVkhzPZt5gZ9uH27SPrxkDvmkvXtLjS7eSEKHiTZtacbl+Y8bcc9c5rFozii5Ps1oX9Uk82/Z8xnKoMxtuHCgdcD0qXRZBHqAB/jUqP5/0rNBzTgSpBBII5BFJOzuEoXjynp0biSMOvQ06uLs/EckChZVYnuyY5/CrL+JopFwwnI9NoH9a25kee6FRPY1bhxJO7DoTxUVZf8Ab1r/AM85vyH+NH9vWv8Azzm/If40+ZB7GfY1Kq6jIItPmJPVSo+p4qo2vW2PlilJ9wB/Wsm+v5b1xu+VB91BQ5K2hUKUm9SsD61La6JYatcZujIJEAICNgMPQ8fy9agp8cjxOHRirDkEUqVWdKXNB2ZrXoQrQ5Jq6LdzpdzDOVSJ3Qn5WUZ4rV0u1Nhayyz4UtyR6AVUi16ULiSJXOOoOKqXmo3F2NrkLH/dX+tK6WpDjN6MryS+bM8h4LMW/Om0ylBqLF2Nq0uTDp0f2FoIroMRM0hUMwPTBbjHHI9QKia7W1F1bySC9E4TfIHIwV68kc+x6dPpWZRTUiHE17LUN2oWYRY4oYAwRZZMDkHJLY6k+1VXvY5bCC1eAkwh9rh8HJOemOn+ciqVGfWq3JcbHQfaoG1TUpJmj+e2KgxzAq3yjgEjkn/Hg1kLdtGNsaRbATt3xI5x7krzVeigVjY03dDbS4ktYZdvmQzF4y+cY2HJ4BH0xWOzs7FnYsxOSSckmikxRclxFopOlLmmZ2EI9K2JL4SRWpgu4YGjtxE2+I7wRkHDBTgY9DWRRjNNPuK3Yu288MmmTWU0giPmCWJyDjPQg4BPTpxVpbuyXyLYsrxw27hJXQlRK3JOMcqOg4/xrGxiiqJuaV3PaSuIU2hDEu6RUwol4ywGOhHBwB64OBVOCGWe0vooY3kkMAwqKST+8TsKhopTjzRce5jiKSrUpU3pzJr71Yr/ANk6l/0D7v8A78t/hVvTNM1CPVrN3sblUWdCzNCwAG4cnioyKSuGOXxTvzHzkOGaNOalzvTXoaf/AAjuq/8APr/5EX/GuibWINGt7W0uopvNECE7ACBxjHX2riqMV6V77n0u2w0jNNxin0VomYtHc0UUVznYFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9k=", + "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHgAyADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2aiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOEozQDRXtGaYuPSkpCQoyTiq7ajZqSGuYQR6yD/GkUpdyzRVX+0rL/n7g/7+L/jR/aVl/wA/cH/fxf8AGnZ9iuZdy1RVX+0rL/n7g/7+L/jR/aVl/wA/cH/fxf8AGiz7BzLuWqKq/wBpWX/P3B/38X/Gj+0rL/n7g/7+L/jRZ9g5l3LVKD61U/tKy/5+4P8Av4v+NH9pWX/P3B/38X/Giz7Cui7RVIanZD/l7g/7+L/jS/2pY/8AP1D/AN/F/wAaVn2FdFyiqn9qWP8Az9Q/9/F/xo/tSx/5+of+/i/40WfYLouZB60EYqn/AGpY/wDP1D/38X/GgarZD/l6h/7+L/jRZ9hOzLdGaqHVLH/n6h/7+L/jR/alj/z9Q/8Afxf8aLPsQXc5pCKp/wBqWP8Az9wf9/F/xpf7Usf+fuD/AL+L/jSs+xLRa6U4GqZ1Sx/5+of+/i/40n9qWP8Az9Q/9/F/xp2fYhxLtJj0qn/atj/z9Q/9/F/xpf7Vsf8An6h/7+L/AI0uV9iXEuZoqn/alif+XqH/AL+L/jR/alj/AM/cH/fxf8aLPsQ4suUvWqf9qWP/AD9wf9/F/wAaT+1LH/n7g/7+L/jRZ9hODZcoqp/atj3uof8Av4v+NJ/atj/z9Q/9/F/xos+xm4Mug0uM1R/tWx/5+4f+/i/40v8Aatj/AM/cH/fxf8aOV9hODLeKKq/2rYf8/cH/AH8X/Gk/tSw/5+4P+/i/40WfYh05di4DS1S/tSx/5+4P+/i/40+K/tZm2xXEbt6K4P8AKk01uhOnLsWqKQHNLSMztKKKK8k94KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgyPSjOOtKG9ar35I065YHBETkH8DXtpXdjmUjk9W1aS+mZEYrbg4AH8XuazKKK9+nTjTjyxMW23dhRRRViCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjoaKKAOn8PavJJKLO4YsSP3bHr9DXTA155phK6raEHB85B+or0KvFxtKMKl49TnqrU7aiiivnD2AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOCxiq+oH/iW3X/XF/5GrPSq2of8g26x/wA8X/ka92HxI4FI4KiiivoBBRRRQAUUUUAFFFFABRRRQAUUUUAWtN1CbStSt7+3EZlgcOokXcp+o/yfTBre8WWVnPa2HiDT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3k/M1oUUAZ/2GX+8n5mj7DL/AHk/M1oUUAZ/2GX+8n5mlFjJnllA9qv0UARQwLCOOSepNS0UUAcJ4mONW/4D/wCzGsgHNa/ib/kLH/c/9mNY1erR/hoZ3dFFFeUIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDhK7jwt/yCl/H/ANCauHruPC3/ACCl/H/0Jq9DF/AvU8bLv4r9P1RuUUVFNKU2ogy7dK889kloqAW7kZeeTd/snAo+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77o+zf8ATab/AL7oAnoqD7N/02m/77oNu4GUnk3f7RyKAJ6KihlL7kcYdetS0AcJ4m/5Cx/3P/ZjWNWz4m/5Cx/3P/ZjWNXq0f4aGd3RRRXlCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4UjFdv4W/wCQUv4/+hNXFV23hf8A5Ba/j/6E1ehivgXqePl6/ev0/VG3UH/L9/2z/rU9Qf8AL9/2y/rXnnsE9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARzS+UmQMsThR6moxBI4zJM4PohwBSy/8fUH/AAL+VT0AQfZv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", "export_temp_image": false, "force_export_images": false, "flat_export": false, @@ -25,7 +25,7 @@ "uiExportFolderPath": "D:\\yuwell_workspace\\FluxDC\\SquareLineProj\\Export", "projectExportFolderPath": "D:\\yuwell_workspace\\FluxDC\\SquareLineProj\\Export", "custom_variable_prefix": "uic", - "backup_cnt": 619, + "backup_cnt": 627, "autosave_cnt": 0, "group_color_cnt": 0, "lvgl_version": "8.3.6", diff --git a/SquareLineProj/ESP32S3_UI.spj b/SquareLineProj/ESP32S3_UI.spj index 6142103..5697cbd 100644 --- a/SquareLineProj/ESP32S3_UI.spj +++ b/SquareLineProj/ESP32S3_UI.spj @@ -10,7 +10,7 @@ { "guid": "GUID6950810-1044658S692337", "deepid": 212512280, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -10724,7 +10724,7 @@ { "guid": "GUID83193135-1071387S4632337", "deepid": -1209922675, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -10867,7 +10867,7 @@ { "guid": "GUID62856860-1073836S8902337", "deepid": -876778701, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -11250,7 +11250,7 @@ { "guid": "GUID91783852-1074400S1872337", "deepid": 869159998, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -11709,7 +11709,7 @@ { "guid": "GUID81809211-1079832S4082337", "deepid": 268258741, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -11867,7 +11867,7 @@ { "guid": "GUID13795121-1084667S1512337", "deepid": -167881204, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -12025,7 +12025,7 @@ { "guid": "GUID26406120-1085231S4532337", "deepid": 1738065160, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -12183,7 +12183,7 @@ { "guid": "GUID22615733-1086359S6972337", "deepid": -1247825409, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -12341,7 +12341,7 @@ { "guid": "GUID74327713-1087471S7432337", "deepid": -1247825409, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -13319,7 +13319,7 @@ { "guid": "GUID63132921-502807S48559463", "deepid": -1664674549, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -13708,7 +13708,7 @@ { "guid": "GUID44718145-502809S803463", "deepid": 31528723, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -16562,8 +16562,7 @@ "InheritedType": 4 } ], - "saved_objtypeKey": "PANEL", - "tree_closed": true + "saved_objtypeKey": "PANEL" }, { "guid": "GUID46922311-416524S573470", @@ -18965,7 +18964,7 @@ { "guid": "GUID79596521-416546S49275470", "deepid": -1664674549, - "dont_export": true, + "dont_export": false, "locked": false, "properties": [ { @@ -22784,7 +22783,7 @@ "uiExportFolderPath": "D:\\yuwell_workspace\\FluxDC\\SquareLineProj\\Export", "projectExportFolderPath": "D:\\yuwell_workspace\\FluxDC\\SquareLineProj\\Export", "custom_variable_prefix": "uic", - "backup_cnt": 618, + "backup_cnt": 626, "autosave_cnt": 0, "group_color_cnt": 0, "lvgl_version": "8.3.6", diff --git a/SquareLineProj/Export/screens/ui_pageBattery.c b/SquareLineProj/Export/screens/ui_pageBattery.c index 847b272..bca9b09 100644 --- a/SquareLineProj/Export/screens/ui_pageBattery.c +++ b/SquareLineProj/Export/screens/ui_pageBattery.c @@ -18,6 +18,21 @@ void ui_pageBattery_screen_init(void) lv_obj_set_style_radius(ui_pageBattery_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui_pageBattery_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelBack = lv_label_create(ui_pageBattery_panelHeader); + lv_obj_set_width(ui_pageBattery_labelBack, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelBack, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelBack, 4); + lv_obj_set_y(ui_pageBattery_labelBack, 0); + lv_obj_set_align(ui_pageBattery_labelBack, LV_ALIGN_LEFT_MID); + lv_label_set_text(ui_pageBattery_labelBack, "<"); + + ui_pageBattery_labelBattery = lv_label_create(ui_pageBattery_panelHeader); + lv_obj_set_width(ui_pageBattery_labelBattery, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelBattery, LV_SIZE_CONTENT); /// 1 + lv_obj_set_align(ui_pageBattery_labelBattery, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelBattery, "电池"); + lv_obj_set_style_text_font(ui_pageBattery_labelBattery, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_panelUpBody = lv_obj_create(ui_pageBattery); lv_obj_set_width(ui_pageBattery_panelUpBody, 310); lv_obj_set_height(ui_pageBattery_panelUpBody, 221); @@ -28,6 +43,15 @@ void ui_pageBattery_screen_init(void) lv_obj_set_style_bg_color(ui_pageBattery_panelUpBody, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_pageBattery_panelUpBody, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelCapability = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelCapability, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelCapability, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelCapability, -122); + lv_obj_set_y(ui_pageBattery_labelCapability, -75); + lv_obj_set_align(ui_pageBattery_labelCapability, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelCapability, "电量:"); + lv_obj_set_style_text_font(ui_pageBattery_labelCapability, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_barBattery = lv_bar_create(ui_pageBattery_panelUpBody); lv_bar_set_range(ui_pageBattery_barBattery, 0, 2048); lv_bar_set_value(ui_pageBattery_barBattery, 100, LV_ANIM_OFF); @@ -52,6 +76,51 @@ void ui_pageBattery_screen_init(void) lv_obj_set_style_text_align(ui_pageBattery_spinboxBattery, LV_TEXT_ALIGN_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_pageBattery_spinboxBattery, &lv_font_montserrat_16, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelMaxSample = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelMaxSample, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelMaxSample, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelMaxSample, -78); + lv_obj_set_y(ui_pageBattery_labelMaxSample, -42); + lv_obj_set_align(ui_pageBattery_labelMaxSample, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelMaxSample, "最大采样值:2048"); + lv_obj_set_style_text_font(ui_pageBattery_labelMaxSample, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelVolume = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelVolume, -79); + lv_obj_set_y(ui_pageBattery_labelVolume, -14); + lv_obj_set_align(ui_pageBattery_labelVolume, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelVolume, "总电量:2500mAh"); + lv_obj_set_style_text_font(ui_pageBattery_labelVolume, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelMaxVoltage = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelMaxVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelMaxVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelMaxVoltage, -98); + lv_obj_set_y(ui_pageBattery_labelMaxVoltage, 13); + lv_obj_set_align(ui_pageBattery_labelMaxVoltage, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelMaxVoltage, "总电压:4.2V"); + lv_obj_set_style_text_font(ui_pageBattery_labelMaxVoltage, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelSampleVoltage = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelSampleVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelSampleVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelSampleVoltage, -102); + lv_obj_set_y(ui_pageBattery_labelSampleVoltage, 55); + lv_obj_set_align(ui_pageBattery_labelSampleVoltage, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelSampleVoltage, "采样电压:"); + lv_obj_set_style_text_font(ui_pageBattery_labelSampleVoltage, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelSampleVolume = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelSampleVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelSampleVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelSampleVolume, -101); + lv_obj_set_y(ui_pageBattery_labelSampleVolume, 77); + lv_obj_set_align(ui_pageBattery_labelSampleVolume, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelSampleVolume, "采样电量:"); + lv_obj_set_style_text_font(ui_pageBattery_labelSampleVolume, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelCurrentVoltage = lv_label_create(ui_pageBattery_panelUpBody); lv_obj_set_width(ui_pageBattery_labelCurrentVoltage, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageBattery_labelCurrentVoltage, LV_SIZE_CONTENT); /// 1 diff --git a/SquareLineProj/Export/screens/ui_pageDebugChoice.c b/SquareLineProj/Export/screens/ui_pageDebugChoice.c index 76f1c5b..71af1b6 100644 --- a/SquareLineProj/Export/screens/ui_pageDebugChoice.c +++ b/SquareLineProj/Export/screens/ui_pageDebugChoice.c @@ -26,6 +26,18 @@ void ui_pageDebugChoice_screen_init(void) lv_obj_add_flag(ui_pageDebugChoice_imageHome, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_ADV_HITTEST); /// Flags lv_obj_clear_flag(ui_pageDebugChoice_imageHome, LV_OBJ_FLAG_PRESS_LOCK | LV_OBJ_FLAG_SCROLLABLE); /// Flags + ui_pageDebugChoice_labelHeaderTitle = lv_label_create(ui_pageDebugChoice_pannelHeader); + lv_obj_set_width(ui_pageDebugChoice_labelHeaderTitle, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageDebugChoice_labelHeaderTitle, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageDebugChoice_labelHeaderTitle, 0); + lv_obj_set_y(ui_pageDebugChoice_labelHeaderTitle, 6); + lv_obj_set_align(ui_pageDebugChoice_labelHeaderTitle, LV_ALIGN_BOTTOM_MID); + lv_label_set_text(ui_pageDebugChoice_labelHeaderTitle, "DEBUG"); + lv_obj_set_style_text_color(ui_pageDebugChoice_labelHeaderTitle, lv_color_hex(0x040000), + LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_pageDebugChoice_labelHeaderTitle, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(ui_pageDebugChoice_labelHeaderTitle, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageDebugChoice_panelBody = lv_obj_create(ui_pageDebugChoice); lv_obj_set_width(ui_pageDebugChoice_panelBody, 320); lv_obj_set_height(ui_pageDebugChoice_panelBody, 412); diff --git a/SquareLineProj/Export/screens/ui_pageDeviceInformation.c b/SquareLineProj/Export/screens/ui_pageDeviceInformation.c index c3d935f..e9e4d5e 100644 --- a/SquareLineProj/Export/screens/ui_pageDeviceInformation.c +++ b/SquareLineProj/Export/screens/ui_pageDeviceInformation.c @@ -28,6 +28,29 @@ void ui_pageDeviceInformation_screen_init(void) lv_obj_set_align(ui_pageDeviceInformation_labelBack, LV_ALIGN_LEFT_MID); lv_label_set_text(ui_pageDeviceInformation_labelBack, "<"); + ui_pageDeviceInformation_lableDeviceInformation = lv_label_create(ui_pageDeviceInformation_pannelHeader); + lv_obj_set_width(ui_pageDeviceInformation_lableDeviceInformation, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageDeviceInformation_lableDeviceInformation, LV_SIZE_CONTENT); /// 1 + lv_obj_set_align(ui_pageDeviceInformation_lableDeviceInformation, LV_ALIGN_BOTTOM_MID); + lv_label_set_text(ui_pageDeviceInformation_lableDeviceInformation, "DeviceInfo"); + lv_obj_set_style_text_color(ui_pageDeviceInformation_lableDeviceInformation, lv_color_hex(0x040000), + LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_pageDeviceInformation_lableDeviceInformation, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(ui_pageDeviceInformation_lableDeviceInformation, &ui_font_MiSansM, + LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageDeviceInformation_textAreaContent = lv_textarea_create(ui_pageDeviceInformation); + lv_obj_set_width(ui_pageDeviceInformation_textAreaContent, 299); + lv_obj_set_height(ui_pageDeviceInformation_textAreaContent, 334); + lv_obj_set_x(ui_pageDeviceInformation_textAreaContent, 0); + lv_obj_set_y(ui_pageDeviceInformation_textAreaContent, -10); + lv_obj_set_align(ui_pageDeviceInformation_textAreaContent, LV_ALIGN_CENTER); + lv_textarea_set_text(ui_pageDeviceInformation_textAreaContent, + "Device Name: Pulse Flow Detection Controller\n-----------------------------------------------------\nSoftware Version: 20250304.1.0A\n Hardware Version: 20250302.1.0A\n-----------------------------------------------------\nMain Control Chip: esp32-s3-wroom\n IDF Version: Ver 5.2\n RAM Size: 8MB\n Flash Size: 4MB\n-----------------------------------------------------\nScreen Size: 320-480px 3.5-inch\n Interface Type: intel-8080 parallel port\n Pixel Frequency: 20MHz\n Touch Screen Controller: ft6336U\n Display Controller: ILI9488 (compatible with ST7789)\nDisplay Framework: LVGL\n Version: Version 8.2.0\n-----------------------------------------------------\nBattery Information:\n Capacity: 2500mAh\n Voltage: 2.7V-4.2V\n Charging Current: 0.5C\n-----------------------------------------------------\nSoftware Server Address: sunme.top\n Technical Support: 13345203604\n Name: Wang Xiangen\nDesign Date: 2025.3.7\n Address: Danyang City, Jiangsu Province"); + lv_textarea_set_placeholder_text(ui_pageDeviceInformation_textAreaContent, "Placeholder..."); + lv_obj_set_style_text_font(ui_pageDeviceInformation_textAreaContent, &lv_font_montserrat_14, + LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageDeviceInformation_buttonBackToHome = lv_btn_create(ui_pageDeviceInformation); lv_obj_set_width(ui_pageDeviceInformation_buttonBackToHome, 271); lv_obj_set_height(ui_pageDeviceInformation_buttonBackToHome, 50); diff --git a/SquareLineProj/Export/screens/ui_pageHome.c b/SquareLineProj/Export/screens/ui_pageHome.c index 8690c61..300901e 100644 --- a/SquareLineProj/Export/screens/ui_pageHome.c +++ b/SquareLineProj/Export/screens/ui_pageHome.c @@ -19,6 +19,18 @@ void ui_pageHome_screen_init(void) lv_obj_set_style_bg_opa(ui_pageHome, 255, LV_PART_SCROLLBAR | LV_STATE_DEFAULT); lv_obj_set_style_bg_grad_color(ui_pageHome, lv_color_hex(0xE6E6E6), LV_PART_SCROLLBAR | LV_STATE_DEFAULT); + ui_pageHome_panelHeader = lv_obj_create(ui_pageHome); + lv_obj_set_width(ui_pageHome_panelHeader, 320); + lv_obj_set_height(ui_pageHome_panelHeader, 30); + lv_obj_set_align(ui_pageHome_panelHeader, LV_ALIGN_TOP_MID); + lv_obj_clear_flag(ui_pageHome_panelHeader, LV_OBJ_FLAG_GESTURE_BUBBLE | LV_OBJ_FLAG_SCROLLABLE); /// Flags + lv_obj_set_style_radius(ui_pageHome_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_color(ui_pageHome_panelHeader, lv_color_hex(0x141414), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_opa(ui_pageHome_panelHeader, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_width(ui_pageHome_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_blend_mode(ui_pageHome_panelHeader, LV_BLEND_MODE_NORMAL, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_opa(ui_pageHome_panelHeader, 20, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageHome_labelTitle = lv_label_create(ui_pageHome); lv_obj_set_width(ui_pageHome_labelTitle, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelTitle, LV_SIZE_CONTENT); /// 1 diff --git a/SquareLineProj/Export/ui.c b/SquareLineProj/Export/ui.c index 3bffaf4..c3d5002 100644 --- a/SquareLineProj/Export/ui.c +++ b/SquareLineProj/Export/ui.c @@ -11,6 +11,7 @@ // SCREEN: ui_pageHome void ui_pageHome_screen_init(void); lv_obj_t * ui_pageHome; +lv_obj_t * ui_pageHome_panelHeader; lv_obj_t * ui_pageHome_labelTitle; lv_obj_t * ui_pageHome_sliderBattery; lv_obj_t * ui_pageHome_panelBattery; @@ -96,9 +97,17 @@ void ui_pageBattery_screen_init(void); lv_obj_t * ui_pageBattery; void ui_event_pageBattery_panelHeader(lv_event_t * e); lv_obj_t * ui_pageBattery_panelHeader; +lv_obj_t * ui_pageBattery_labelBack; +lv_obj_t * ui_pageBattery_labelBattery; lv_obj_t * ui_pageBattery_panelUpBody; +lv_obj_t * ui_pageBattery_labelCapability; lv_obj_t * ui_pageBattery_barBattery; lv_obj_t * ui_pageBattery_spinboxBattery; +lv_obj_t * ui_pageBattery_labelMaxSample; +lv_obj_t * ui_pageBattery_labelVolume; +lv_obj_t * ui_pageBattery_labelMaxVoltage; +lv_obj_t * ui_pageBattery_labelSampleVoltage; +lv_obj_t * ui_pageBattery_labelSampleVolume; lv_obj_t * ui_pageBattery_labelCurrentVoltage; lv_obj_t * ui_pageBattery_labelCurrentVolume; // CUSTOM VARIABLES @@ -111,6 +120,8 @@ void ui_event_pageDeviceInformation_pannelHeader(lv_event_t * e); lv_obj_t * ui_pageDeviceInformation_pannelHeader; void ui_event_pageDeviceInformation_labelBack(lv_event_t * e); lv_obj_t * ui_pageDeviceInformation_labelBack; +lv_obj_t * ui_pageDeviceInformation_lableDeviceInformation; +lv_obj_t * ui_pageDeviceInformation_textAreaContent; void ui_event_pageDeviceInformation_buttonBackToHome(lv_event_t * e); lv_obj_t * ui_pageDeviceInformation_buttonBackToHome; lv_obj_t * ui_pageDeviceInformation_labelBackToHome; @@ -165,6 +176,7 @@ void ui_event_pageDebugChoice_pannelHeader(lv_event_t * e); lv_obj_t * ui_pageDebugChoice_pannelHeader; void ui_event_pageDebugChoice_imageHome(lv_event_t * e); lv_obj_t * ui_pageDebugChoice_imageHome; +lv_obj_t * ui_pageDebugChoice_labelHeaderTitle; lv_obj_t * ui_pageDebugChoice_panelBody; void ui_event_pageDebugChoice_panelRecord(lv_event_t * e); lv_obj_t * ui_pageDebugChoice_panelRecord; diff --git a/SquareLineProj/Export/ui.h b/SquareLineProj/Export/ui.h index ef66102..2bf4783 100644 --- a/SquareLineProj/Export/ui.h +++ b/SquareLineProj/Export/ui.h @@ -19,6 +19,7 @@ extern "C" { // SCREEN: ui_pageHome void ui_pageHome_screen_init(void); extern lv_obj_t * ui_pageHome; +extern lv_obj_t * ui_pageHome_panelHeader; extern lv_obj_t * ui_pageHome_labelTitle; extern lv_obj_t * ui_pageHome_sliderBattery; extern lv_obj_t * ui_pageHome_panelBattery; @@ -104,9 +105,17 @@ void ui_pageBattery_screen_init(void); extern lv_obj_t * ui_pageBattery; void ui_event_pageBattery_panelHeader(lv_event_t * e); extern lv_obj_t * ui_pageBattery_panelHeader; +extern lv_obj_t * ui_pageBattery_labelBack; +extern lv_obj_t * ui_pageBattery_labelBattery; extern lv_obj_t * ui_pageBattery_panelUpBody; +extern lv_obj_t * ui_pageBattery_labelCapability; extern lv_obj_t * ui_pageBattery_barBattery; extern lv_obj_t * ui_pageBattery_spinboxBattery; +extern lv_obj_t * ui_pageBattery_labelMaxSample; +extern lv_obj_t * ui_pageBattery_labelVolume; +extern lv_obj_t * ui_pageBattery_labelMaxVoltage; +extern lv_obj_t * ui_pageBattery_labelSampleVoltage; +extern lv_obj_t * ui_pageBattery_labelSampleVolume; extern lv_obj_t * ui_pageBattery_labelCurrentVoltage; extern lv_obj_t * ui_pageBattery_labelCurrentVolume; // CUSTOM VARIABLES @@ -119,6 +128,8 @@ void ui_event_pageDeviceInformation_pannelHeader(lv_event_t * e); extern lv_obj_t * ui_pageDeviceInformation_pannelHeader; void ui_event_pageDeviceInformation_labelBack(lv_event_t * e); extern lv_obj_t * ui_pageDeviceInformation_labelBack; +extern lv_obj_t * ui_pageDeviceInformation_lableDeviceInformation; +extern lv_obj_t * ui_pageDeviceInformation_textAreaContent; void ui_event_pageDeviceInformation_buttonBackToHome(lv_event_t * e); extern lv_obj_t * ui_pageDeviceInformation_buttonBackToHome; extern lv_obj_t * ui_pageDeviceInformation_labelBackToHome; @@ -173,6 +184,7 @@ void ui_event_pageDebugChoice_pannelHeader(lv_event_t * e); extern lv_obj_t * ui_pageDebugChoice_pannelHeader; void ui_event_pageDebugChoice_imageHome(lv_event_t * e); extern lv_obj_t * ui_pageDebugChoice_imageHome; +extern lv_obj_t * ui_pageDebugChoice_labelHeaderTitle; extern lv_obj_t * ui_pageDebugChoice_panelBody; void ui_event_pageDebugChoice_panelRecord(lv_event_t * e); extern lv_obj_t * ui_pageDebugChoice_panelRecord; diff --git a/SquareLineProj/backup/ESP32S3_UI_backup00.zip b/SquareLineProj/backup/ESP32S3_UI_backup00.zip index d2fe114..46519f3 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup00.zip and b/SquareLineProj/backup/ESP32S3_UI_backup00.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup01.zip b/SquareLineProj/backup/ESP32S3_UI_backup01.zip index 17437eb..0714b76 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup01.zip and b/SquareLineProj/backup/ESP32S3_UI_backup01.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup02.zip b/SquareLineProj/backup/ESP32S3_UI_backup02.zip index f2de506..86ec73b 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup02.zip and b/SquareLineProj/backup/ESP32S3_UI_backup02.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup03.zip b/SquareLineProj/backup/ESP32S3_UI_backup03.zip index e05da7a..ddaaddf 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup03.zip and b/SquareLineProj/backup/ESP32S3_UI_backup03.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup04.zip b/SquareLineProj/backup/ESP32S3_UI_backup04.zip index 6d694d8..5085fbe 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup04.zip and b/SquareLineProj/backup/ESP32S3_UI_backup04.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup05.zip b/SquareLineProj/backup/ESP32S3_UI_backup05.zip index 15ddb77..ff8ae1e 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup05.zip and b/SquareLineProj/backup/ESP32S3_UI_backup05.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup06.zip b/SquareLineProj/backup/ESP32S3_UI_backup06.zip index 31052af..b416898 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup06.zip and b/SquareLineProj/backup/ESP32S3_UI_backup06.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup07.zip b/SquareLineProj/backup/ESP32S3_UI_backup07.zip index a02c6c0..788ab02 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup07.zip and b/SquareLineProj/backup/ESP32S3_UI_backup07.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup09.zip b/SquareLineProj/backup/ESP32S3_UI_backup09.zip index 00e1b10..9950a76 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup09.zip and b/SquareLineProj/backup/ESP32S3_UI_backup09.zip differ diff --git a/components/FluxButton/CMakeLists.txt b/components/FluxButton/CMakeLists.txt index bba0bd6..81b5b03 100644 --- a/components/FluxButton/CMakeLists.txt +++ b/components/FluxButton/CMakeLists.txt @@ -1,3 +1,3 @@ idf_component_register(SRCS "FluxButton.c" - REQUIRES espressif__button FluxUI driver lvgl + REQUIRES espressif__button FluxUI driver lvgl freertos FluxPower INCLUDE_DIRS ".") diff --git a/components/FluxButton/FluxButton.c b/components/FluxButton/FluxButton.c index 61ed18e..cfd7cac 100644 --- a/components/FluxButton/FluxButton.c +++ b/components/FluxButton/FluxButton.c @@ -1,24 +1,18 @@ #include #include "FluxButton.h" #include "driver/gpio.h" +#include "FluxPower.h" + + #include "ui.h" static const char *BUTTON_TAG = "button_test"; +/*ʹ¼Bit0еǰʾ״̬¼*/ +#define LCD_STATE_BIT BIT0 -/*尴¼б*/ -const char *button_event_table[] = { - "BUTTON_PRESS_DOWN", - "BUTTON_PRESS_UP", - "BUTTON_PRESS_REPEAT", - "BUTTON_PRESS_REPEAT_DONE", - "BUTTON_SINGLE_CLICK", - "BUTTON_DOUBLE_CLICK", - "BUTTON_MULTIPLE_CLICK", - "BUTTON_LONG_PRESS_START", - "BUTTON_LONG_PRESS_HOLD", - "BUTTON_LONG_PRESS_UP", -}; +/*ʾ״̬¼*/ +EventGroupHandle_t lcd_state_event_group; static void button_event_cb(void *arg, void *data) @@ -41,8 +35,24 @@ static void button_event_cb(void *arg, void *data) POWER_ON; break; case BUTTON_CMD_POWER_OFF: + ESP_LOGI(BUTTON_TAG, "LCD DoubleClick change"); POWER_OFF; break; + case BUTTON_CMD_LCD_BACKLIGHT_CHANGE: + /*Դ¼*/ + ESP_LOGI(BUTTON_TAG, "LCD backlight change"); + /*ݵǰ״̬б⿪*/ + if (xEventGroupGetBits(lcd_state_event_group) & LCD_STATE_BIT) //ǰ״̬Ϊر + { + LCD_BACKLIGHT_CLOSE; + xEventGroupClearBits(lcd_state_event_group, LCD_STATE_BIT); + + }else{ + LCD_BACKLIGHT_OPEN; + xEventGroupSetBits(lcd_state_event_group, LCD_STATE_BIT); + } + + break; case BUTTON_CMD_CENTER_KEY: /*ʼ԰*/ @@ -89,7 +99,8 @@ void button_init_func(uint32_t button_num) err |= iot_button_register_cb(btn, BUTTON_DOUBLE_CLICK, button_event_cb, (void *)BUTTON_CMD_POWER_OFF); /*Դп*/ err |= iot_button_register_cb(btn, BUTTON_LONG_PRESS_HOLD, button_event_cb, (void *)BUTTON_CMD_POWER_ON); - + /* Դʾ״̬л */ + err |= iot_button_register_cb(btn, BUTTON_SINGLE_CLICK, button_event_cb, (void *)BUTTON_CMD_LCD_BACKLIGHT_CHANGE); }else{ /*Ϊ· עص*/ switch (button_num) @@ -119,6 +130,12 @@ void button_init(void) button_init_func(BUTTON_PowerIn_IO_NUM); + /*ʼʾ¼*/ + lcd_state_event_group = xEventGroupCreate(); + + /*Ĭ״̬Ϊ⿪*/ + xEventGroupSetBits(lcd_state_event_group, LCD_STATE_BIT); + /*ڴ˴ʼԴIO*/ gpio_reset_pin(BUTTON_PowerOut_IO_NUM); gpio_set_direction(BUTTON_PowerOut_IO_NUM, GPIO_MODE_OUTPUT); diff --git a/components/FluxButton/FluxButton.h b/components/FluxButton/FluxButton.h index 1777513..685a51f 100644 --- a/components/FluxButton/FluxButton.h +++ b/components/FluxButton/FluxButton.h @@ -3,6 +3,11 @@ #include "iot_button.h" #include "esp_log.h" +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" + #define BUTTON_Center_IO_NUM (42) #define BUTTON_Left_IO_NUM (41) #define BUTTON_Right_IO_NUM (40) @@ -27,8 +32,7 @@ enum button_cmd_t BUTTON_CMD_CENTER_KEY=2, BUTTON_CMD_LEFT_KEY=3, BUTTON_CMD_RIGHT_KEY=4, - BUTTON_CMD_LCD_CLOSE=5, - BUTTON_CMD_LCD_OPEN=6, + BUTTON_CMD_LCD_BACKLIGHT_CHANGE=5, }; #define CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE 0 diff --git a/components/FluxPower/FluxPower.h b/components/FluxPower/FluxPower.h index 5faa1e2..46d1a34 100644 --- a/components/FluxPower/FluxPower.h +++ b/components/FluxPower/FluxPower.h @@ -12,21 +12,21 @@ #include "esp_adc/adc_cali_scheme.h" #include "ui.h" -#define CLOSE_LCD_BACKLIGHT ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 9192));\ +#define LCD_BACKLIGHT_CLOSE ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 8192));\ ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0)); -#define OPEN_LCD_BACKLIGHT ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 100));\ +#define LCD_BACKLIGHT_OPEN ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 100));\ ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0)); /*配置ADC采用通道*/ #define EXAMPLE_ADC1_CHAN8 ADC_CHANNEL_8 -/*配置用于进行ADC采样的引脚*/ +/*配置用于进行ADC采样的引?*/ #define EXAMPLE_POWER_IO (9) void powerTask(void); -/*初始化电源管理系统*/ +/*初始化电源管理系?*/ void powerInit(void); diff --git a/components/FluxUI/screens/ui_pageBattery.c b/components/FluxUI/screens/ui_pageBattery.c index 847b272..bca9b09 100644 --- a/components/FluxUI/screens/ui_pageBattery.c +++ b/components/FluxUI/screens/ui_pageBattery.c @@ -18,6 +18,21 @@ void ui_pageBattery_screen_init(void) lv_obj_set_style_radius(ui_pageBattery_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(ui_pageBattery_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelBack = lv_label_create(ui_pageBattery_panelHeader); + lv_obj_set_width(ui_pageBattery_labelBack, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelBack, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelBack, 4); + lv_obj_set_y(ui_pageBattery_labelBack, 0); + lv_obj_set_align(ui_pageBattery_labelBack, LV_ALIGN_LEFT_MID); + lv_label_set_text(ui_pageBattery_labelBack, "<"); + + ui_pageBattery_labelBattery = lv_label_create(ui_pageBattery_panelHeader); + lv_obj_set_width(ui_pageBattery_labelBattery, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelBattery, LV_SIZE_CONTENT); /// 1 + lv_obj_set_align(ui_pageBattery_labelBattery, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelBattery, "电池"); + lv_obj_set_style_text_font(ui_pageBattery_labelBattery, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_panelUpBody = lv_obj_create(ui_pageBattery); lv_obj_set_width(ui_pageBattery_panelUpBody, 310); lv_obj_set_height(ui_pageBattery_panelUpBody, 221); @@ -28,6 +43,15 @@ void ui_pageBattery_screen_init(void) lv_obj_set_style_bg_color(ui_pageBattery_panelUpBody, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_pageBattery_panelUpBody, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelCapability = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelCapability, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelCapability, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelCapability, -122); + lv_obj_set_y(ui_pageBattery_labelCapability, -75); + lv_obj_set_align(ui_pageBattery_labelCapability, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelCapability, "电量:"); + lv_obj_set_style_text_font(ui_pageBattery_labelCapability, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_barBattery = lv_bar_create(ui_pageBattery_panelUpBody); lv_bar_set_range(ui_pageBattery_barBattery, 0, 2048); lv_bar_set_value(ui_pageBattery_barBattery, 100, LV_ANIM_OFF); @@ -52,6 +76,51 @@ void ui_pageBattery_screen_init(void) lv_obj_set_style_text_align(ui_pageBattery_spinboxBattery, LV_TEXT_ALIGN_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_pageBattery_spinboxBattery, &lv_font_montserrat_16, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelMaxSample = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelMaxSample, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelMaxSample, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelMaxSample, -78); + lv_obj_set_y(ui_pageBattery_labelMaxSample, -42); + lv_obj_set_align(ui_pageBattery_labelMaxSample, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelMaxSample, "最大采样值:2048"); + lv_obj_set_style_text_font(ui_pageBattery_labelMaxSample, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelVolume = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelVolume, -79); + lv_obj_set_y(ui_pageBattery_labelVolume, -14); + lv_obj_set_align(ui_pageBattery_labelVolume, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelVolume, "总电量:2500mAh"); + lv_obj_set_style_text_font(ui_pageBattery_labelVolume, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelMaxVoltage = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelMaxVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelMaxVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelMaxVoltage, -98); + lv_obj_set_y(ui_pageBattery_labelMaxVoltage, 13); + lv_obj_set_align(ui_pageBattery_labelMaxVoltage, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelMaxVoltage, "总电压:4.2V"); + lv_obj_set_style_text_font(ui_pageBattery_labelMaxVoltage, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelSampleVoltage = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelSampleVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelSampleVoltage, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelSampleVoltage, -102); + lv_obj_set_y(ui_pageBattery_labelSampleVoltage, 55); + lv_obj_set_align(ui_pageBattery_labelSampleVoltage, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelSampleVoltage, "采样电压:"); + lv_obj_set_style_text_font(ui_pageBattery_labelSampleVoltage, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageBattery_labelSampleVolume = lv_label_create(ui_pageBattery_panelUpBody); + lv_obj_set_width(ui_pageBattery_labelSampleVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageBattery_labelSampleVolume, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageBattery_labelSampleVolume, -101); + lv_obj_set_y(ui_pageBattery_labelSampleVolume, 77); + lv_obj_set_align(ui_pageBattery_labelSampleVolume, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageBattery_labelSampleVolume, "采样电量:"); + lv_obj_set_style_text_font(ui_pageBattery_labelSampleVolume, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageBattery_labelCurrentVoltage = lv_label_create(ui_pageBattery_panelUpBody); lv_obj_set_width(ui_pageBattery_labelCurrentVoltage, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageBattery_labelCurrentVoltage, LV_SIZE_CONTENT); /// 1 diff --git a/components/FluxUI/screens/ui_pageDebugChoice.c b/components/FluxUI/screens/ui_pageDebugChoice.c index 76f1c5b..71af1b6 100644 --- a/components/FluxUI/screens/ui_pageDebugChoice.c +++ b/components/FluxUI/screens/ui_pageDebugChoice.c @@ -26,6 +26,18 @@ void ui_pageDebugChoice_screen_init(void) lv_obj_add_flag(ui_pageDebugChoice_imageHome, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_ADV_HITTEST); /// Flags lv_obj_clear_flag(ui_pageDebugChoice_imageHome, LV_OBJ_FLAG_PRESS_LOCK | LV_OBJ_FLAG_SCROLLABLE); /// Flags + ui_pageDebugChoice_labelHeaderTitle = lv_label_create(ui_pageDebugChoice_pannelHeader); + lv_obj_set_width(ui_pageDebugChoice_labelHeaderTitle, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageDebugChoice_labelHeaderTitle, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageDebugChoice_labelHeaderTitle, 0); + lv_obj_set_y(ui_pageDebugChoice_labelHeaderTitle, 6); + lv_obj_set_align(ui_pageDebugChoice_labelHeaderTitle, LV_ALIGN_BOTTOM_MID); + lv_label_set_text(ui_pageDebugChoice_labelHeaderTitle, "DEBUG"); + lv_obj_set_style_text_color(ui_pageDebugChoice_labelHeaderTitle, lv_color_hex(0x040000), + LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_pageDebugChoice_labelHeaderTitle, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(ui_pageDebugChoice_labelHeaderTitle, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageDebugChoice_panelBody = lv_obj_create(ui_pageDebugChoice); lv_obj_set_width(ui_pageDebugChoice_panelBody, 320); lv_obj_set_height(ui_pageDebugChoice_panelBody, 412); diff --git a/components/FluxUI/screens/ui_pageDeviceInformation.c b/components/FluxUI/screens/ui_pageDeviceInformation.c index c3d935f..e9e4d5e 100644 --- a/components/FluxUI/screens/ui_pageDeviceInformation.c +++ b/components/FluxUI/screens/ui_pageDeviceInformation.c @@ -28,6 +28,29 @@ void ui_pageDeviceInformation_screen_init(void) lv_obj_set_align(ui_pageDeviceInformation_labelBack, LV_ALIGN_LEFT_MID); lv_label_set_text(ui_pageDeviceInformation_labelBack, "<"); + ui_pageDeviceInformation_lableDeviceInformation = lv_label_create(ui_pageDeviceInformation_pannelHeader); + lv_obj_set_width(ui_pageDeviceInformation_lableDeviceInformation, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageDeviceInformation_lableDeviceInformation, LV_SIZE_CONTENT); /// 1 + lv_obj_set_align(ui_pageDeviceInformation_lableDeviceInformation, LV_ALIGN_BOTTOM_MID); + lv_label_set_text(ui_pageDeviceInformation_lableDeviceInformation, "DeviceInfo"); + lv_obj_set_style_text_color(ui_pageDeviceInformation_lableDeviceInformation, lv_color_hex(0x040000), + LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_pageDeviceInformation_lableDeviceInformation, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(ui_pageDeviceInformation_lableDeviceInformation, &ui_font_MiSansM, + LV_PART_MAIN | LV_STATE_DEFAULT); + + ui_pageDeviceInformation_textAreaContent = lv_textarea_create(ui_pageDeviceInformation); + lv_obj_set_width(ui_pageDeviceInformation_textAreaContent, 299); + lv_obj_set_height(ui_pageDeviceInformation_textAreaContent, 334); + lv_obj_set_x(ui_pageDeviceInformation_textAreaContent, 0); + lv_obj_set_y(ui_pageDeviceInformation_textAreaContent, -10); + lv_obj_set_align(ui_pageDeviceInformation_textAreaContent, LV_ALIGN_CENTER); + lv_textarea_set_text(ui_pageDeviceInformation_textAreaContent, + "Device Name: Pulse Flow Detection Controller\n-----------------------------------------------------\nSoftware Version: 20250304.1.0A\n Hardware Version: 20250302.1.0A\n-----------------------------------------------------\nMain Control Chip: esp32-s3-wroom\n IDF Version: Ver 5.2\n RAM Size: 8MB\n Flash Size: 4MB\n-----------------------------------------------------\nScreen Size: 320-480px 3.5-inch\n Interface Type: intel-8080 parallel port\n Pixel Frequency: 20MHz\n Touch Screen Controller: ft6336U\n Display Controller: ILI9488 (compatible with ST7789)\nDisplay Framework: LVGL\n Version: Version 8.2.0\n-----------------------------------------------------\nBattery Information:\n Capacity: 2500mAh\n Voltage: 2.7V-4.2V\n Charging Current: 0.5C\n-----------------------------------------------------\nSoftware Server Address: sunme.top\n Technical Support: 13345203604\n Name: Wang Xiangen\nDesign Date: 2025.3.7\n Address: Danyang City, Jiangsu Province"); + lv_textarea_set_placeholder_text(ui_pageDeviceInformation_textAreaContent, "Placeholder..."); + lv_obj_set_style_text_font(ui_pageDeviceInformation_textAreaContent, &lv_font_montserrat_14, + LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageDeviceInformation_buttonBackToHome = lv_btn_create(ui_pageDeviceInformation); lv_obj_set_width(ui_pageDeviceInformation_buttonBackToHome, 271); lv_obj_set_height(ui_pageDeviceInformation_buttonBackToHome, 50); diff --git a/components/FluxUI/screens/ui_pageHome.c b/components/FluxUI/screens/ui_pageHome.c index 8690c61..300901e 100644 --- a/components/FluxUI/screens/ui_pageHome.c +++ b/components/FluxUI/screens/ui_pageHome.c @@ -19,6 +19,18 @@ void ui_pageHome_screen_init(void) lv_obj_set_style_bg_opa(ui_pageHome, 255, LV_PART_SCROLLBAR | LV_STATE_DEFAULT); lv_obj_set_style_bg_grad_color(ui_pageHome, lv_color_hex(0xE6E6E6), LV_PART_SCROLLBAR | LV_STATE_DEFAULT); + ui_pageHome_panelHeader = lv_obj_create(ui_pageHome); + lv_obj_set_width(ui_pageHome_panelHeader, 320); + lv_obj_set_height(ui_pageHome_panelHeader, 30); + lv_obj_set_align(ui_pageHome_panelHeader, LV_ALIGN_TOP_MID); + lv_obj_clear_flag(ui_pageHome_panelHeader, LV_OBJ_FLAG_GESTURE_BUBBLE | LV_OBJ_FLAG_SCROLLABLE); /// Flags + lv_obj_set_style_radius(ui_pageHome_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_color(ui_pageHome_panelHeader, lv_color_hex(0x141414), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_opa(ui_pageHome_panelHeader, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_border_width(ui_pageHome_panelHeader, 0, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_blend_mode(ui_pageHome_panelHeader, LV_BLEND_MODE_NORMAL, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_opa(ui_pageHome_panelHeader, 20, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageHome_labelTitle = lv_label_create(ui_pageHome); lv_obj_set_width(ui_pageHome_labelTitle, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelTitle, LV_SIZE_CONTENT); /// 1 diff --git a/components/FluxUI/ui.c b/components/FluxUI/ui.c index 3bffaf4..c3d5002 100644 --- a/components/FluxUI/ui.c +++ b/components/FluxUI/ui.c @@ -11,6 +11,7 @@ // SCREEN: ui_pageHome void ui_pageHome_screen_init(void); lv_obj_t * ui_pageHome; +lv_obj_t * ui_pageHome_panelHeader; lv_obj_t * ui_pageHome_labelTitle; lv_obj_t * ui_pageHome_sliderBattery; lv_obj_t * ui_pageHome_panelBattery; @@ -96,9 +97,17 @@ void ui_pageBattery_screen_init(void); lv_obj_t * ui_pageBattery; void ui_event_pageBattery_panelHeader(lv_event_t * e); lv_obj_t * ui_pageBattery_panelHeader; +lv_obj_t * ui_pageBattery_labelBack; +lv_obj_t * ui_pageBattery_labelBattery; lv_obj_t * ui_pageBattery_panelUpBody; +lv_obj_t * ui_pageBattery_labelCapability; lv_obj_t * ui_pageBattery_barBattery; lv_obj_t * ui_pageBattery_spinboxBattery; +lv_obj_t * ui_pageBattery_labelMaxSample; +lv_obj_t * ui_pageBattery_labelVolume; +lv_obj_t * ui_pageBattery_labelMaxVoltage; +lv_obj_t * ui_pageBattery_labelSampleVoltage; +lv_obj_t * ui_pageBattery_labelSampleVolume; lv_obj_t * ui_pageBattery_labelCurrentVoltage; lv_obj_t * ui_pageBattery_labelCurrentVolume; // CUSTOM VARIABLES @@ -111,6 +120,8 @@ void ui_event_pageDeviceInformation_pannelHeader(lv_event_t * e); lv_obj_t * ui_pageDeviceInformation_pannelHeader; void ui_event_pageDeviceInformation_labelBack(lv_event_t * e); lv_obj_t * ui_pageDeviceInformation_labelBack; +lv_obj_t * ui_pageDeviceInformation_lableDeviceInformation; +lv_obj_t * ui_pageDeviceInformation_textAreaContent; void ui_event_pageDeviceInformation_buttonBackToHome(lv_event_t * e); lv_obj_t * ui_pageDeviceInformation_buttonBackToHome; lv_obj_t * ui_pageDeviceInformation_labelBackToHome; @@ -165,6 +176,7 @@ void ui_event_pageDebugChoice_pannelHeader(lv_event_t * e); lv_obj_t * ui_pageDebugChoice_pannelHeader; void ui_event_pageDebugChoice_imageHome(lv_event_t * e); lv_obj_t * ui_pageDebugChoice_imageHome; +lv_obj_t * ui_pageDebugChoice_labelHeaderTitle; lv_obj_t * ui_pageDebugChoice_panelBody; void ui_event_pageDebugChoice_panelRecord(lv_event_t * e); lv_obj_t * ui_pageDebugChoice_panelRecord; diff --git a/components/FluxUI/ui.h b/components/FluxUI/ui.h index ef66102..2bf4783 100644 --- a/components/FluxUI/ui.h +++ b/components/FluxUI/ui.h @@ -19,6 +19,7 @@ extern "C" { // SCREEN: ui_pageHome void ui_pageHome_screen_init(void); extern lv_obj_t * ui_pageHome; +extern lv_obj_t * ui_pageHome_panelHeader; extern lv_obj_t * ui_pageHome_labelTitle; extern lv_obj_t * ui_pageHome_sliderBattery; extern lv_obj_t * ui_pageHome_panelBattery; @@ -104,9 +105,17 @@ void ui_pageBattery_screen_init(void); extern lv_obj_t * ui_pageBattery; void ui_event_pageBattery_panelHeader(lv_event_t * e); extern lv_obj_t * ui_pageBattery_panelHeader; +extern lv_obj_t * ui_pageBattery_labelBack; +extern lv_obj_t * ui_pageBattery_labelBattery; extern lv_obj_t * ui_pageBattery_panelUpBody; +extern lv_obj_t * ui_pageBattery_labelCapability; extern lv_obj_t * ui_pageBattery_barBattery; extern lv_obj_t * ui_pageBattery_spinboxBattery; +extern lv_obj_t * ui_pageBattery_labelMaxSample; +extern lv_obj_t * ui_pageBattery_labelVolume; +extern lv_obj_t * ui_pageBattery_labelMaxVoltage; +extern lv_obj_t * ui_pageBattery_labelSampleVoltage; +extern lv_obj_t * ui_pageBattery_labelSampleVolume; extern lv_obj_t * ui_pageBattery_labelCurrentVoltage; extern lv_obj_t * ui_pageBattery_labelCurrentVolume; // CUSTOM VARIABLES @@ -119,6 +128,8 @@ void ui_event_pageDeviceInformation_pannelHeader(lv_event_t * e); extern lv_obj_t * ui_pageDeviceInformation_pannelHeader; void ui_event_pageDeviceInformation_labelBack(lv_event_t * e); extern lv_obj_t * ui_pageDeviceInformation_labelBack; +extern lv_obj_t * ui_pageDeviceInformation_lableDeviceInformation; +extern lv_obj_t * ui_pageDeviceInformation_textAreaContent; void ui_event_pageDeviceInformation_buttonBackToHome(lv_event_t * e); extern lv_obj_t * ui_pageDeviceInformation_buttonBackToHome; extern lv_obj_t * ui_pageDeviceInformation_labelBackToHome; @@ -173,6 +184,7 @@ void ui_event_pageDebugChoice_pannelHeader(lv_event_t * e); extern lv_obj_t * ui_pageDebugChoice_pannelHeader; void ui_event_pageDebugChoice_imageHome(lv_event_t * e); extern lv_obj_t * ui_pageDebugChoice_imageHome; +extern lv_obj_t * ui_pageDebugChoice_labelHeaderTitle; extern lv_obj_t * ui_pageDebugChoice_panelBody; void ui_event_pageDebugChoice_panelRecord(lv_event_t * e); extern lv_obj_t * ui_pageDebugChoice_panelRecord;