diff --git a/SquareLineProj/ESP32S3_UI.sll b/SquareLineProj/ESP32S3_UI.sll index 253d661..653a66f 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/yfTBre8WWVnPa2HiDT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O4ooorxzsCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4CnA+tIRSV758ynYcV9Kb0pQcUvBoLUgBoIzSEYoBxQaKQZIpwOaTg0hGOlBaY6k+tAPrS0jRSCj60nSlpNGikJiilo6+1TsaqQoNBGabSg4pFqQcilzRwaQj0oNFIWikBpaC0xetJRRmgtS7hRS49KSgsKKKKACiiigApQcUlFADgc0tMpQ3rSsKw6iiikIUGjGelJRQJq4UUuc9aCMUENWDNL1ptGaCWjuKKKK8c3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4EGlxTaUGvfsfKpiYop1IRQUKD60EelNpQcUFqQnSnA+tHBpCMUGiYpGaTkUA4peDQWmAOaWmkelKG9aDRSClopKRopdxaMelFFS0aKQlOB9aTrSVJopDiM0nIoBxS5BoNFIAaKQj0oBoNFIWl60lFBSdgoozS49KC1K4lFFFBQUUUUAFFFFAADinA5ptFIQ+img+tOpCClBxSUUALjPSkopc560EuJ29FFFeOWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBwJFJTqQivfufJ3EpQaSimNMdSEUA0tIpMbTgfWkIpKCkxxHpTelKDil4NBopAD60EZpCMUA4oNFIORSg5oBzSEelBaY6kpAfWnUi1IKOlJ9KWk1c1Ugx6UlLR1qbWNFIUH1oIzTcYpQcUjRSDkUA0oOaQj0oNFIWikzS0Fpi9etJRRmgpSCil+lJQXcKKKKBhRRRQAUA4oooAcDmlplKDSsKw6iiikI7iiiivHGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBwVFIRiivcTPkrC0hFLRVANopxFNqhig0tNpQaVikwIpKdmkIoKuAb1pSM02gHFBakHSnBvWjINIRQaJikZpORSA4pwOaC0wBzS0hX0pAfWgtSF6UtFGPSkaKQdKMelGaKlxNVISlDetHXrSYqTRSHEZpMEUgOKcDmg0UhAaWgr6UmcUGikLS/WkooKTDFFFL16UFqQlFFFBQUUUUAFFFFABnFOBzTaKQHd0UUV4wgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOEppHpTqK9o+WaGUtKRmkIxTTIaCikpatMQmKSnUYp3C42lBpMUUykx1IRSZp2aRSY2lB9aMUlBSY4jNNxigHFOyDQaKQgPrS4BpCPSkBxQWpC8ilBzQDmgj0oNExaTpSZx1p1ItSCjpRijNDVzRSDGelJS0fWoasaqXcAfWlwDTcUA4pGikLgigGlBzQR6UGikFFJ0paC07i59aTFFFBSlYKKXrSUFp3CiiigYUUUUAd3RRRXiiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4UjFJT6QivZufMNDaKKKZIhX0ptPoIzQJobRQRikqkyLC0mKWiqAbRTsU3FUO4oNLTaM0rFJikUlOzQRQVcQGlwDTaM4oLUrARilBpQc0hHpQWpC8GkwRSdKcDmg0TAHNLSEUmSKC1IXpS0ZzRikaKQdKOvSjNFS4mqkJSg0Z9aTFSaKQ7g0hGKTOKcDmg0UhM0tBFJyKC1IWlz60maKC0wxRRS9aC1ISiiigo7uiiivFEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBw+KKWjFespHzjiJjNNIxTqKohoZRWbfa5bWc5h2u7r97b0FQJ4ktWbDxSqPXANYPF0Iy5XLU74ZPjpwVSNNtP8Ar1NmkI9KjguYbqPfBIrr7dvr6VLXQpJq6PPnCUJOM1ZruMpc07GaaRiqTMmgopKWqTEIRSU6jFVcLjaXNJiimUmOpMUlOBpFJjaUHFLim4oKTHcGkIxSU4H1oLUhAaXg0FfSm9KDRMXBHSlBoBoIzQWmLSdKTJFOBzSNFIOtFGKM+tDVzRSDrSUtH1qGrGql3AHFLwaTFJSNExSMUA0oNBGaC1IKKTkUuaDRO4ufWkxRRQUpWO7ooorxSwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOJxSU6jFekeA0NpMUuKKpSsQ0c7qHh+e5vZJ4ZY9rnJD5BB/AVDH4XnP+tuI1/3QW/wrqKSuZ4ChKTk0exHP8fTpqnGS002Rxk9pfaLcLKrfLnh16H2NdFpupR6hDkfLKv309Pce1XpoY7iFopVDIwwRXGyrNouq/ISdhypP8SmueSlgpqUdYP8AA9GnKGeUXTqJKvFaPuv6+7ddUdlRUVtcJdW6TRnKsM/T2qWvWTUldHyM4ShJwkrNCEU2n0YzTIaG5ooIxSVSZFhaQiloqrgNop1IRTuO4A0tNoosUmKRSUoNLigq4gOKXg03FFBSlYUjFAOKUH1oI9KDRSDg0hGOlJ0pwNBomAPrS0hGaTkUFqQvSloBzRSNFIKOvtSUtJxNFISlBxR9aMelSaqQvBpCPSkpwPrSLUhAaWgjNJyKDRSO8ooorxTcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDjSM00jFPI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ZTyCO4NS49KveLraOx8ZW8sK7f7Ss5JJgOheFo1DfUrKBn0QelUQc16NGp7SHMcFWPs58p3tFFFeKeqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQByhHpWz8Pv+RTH/AGEL/wD9K5qx62fh/wD8imP+whf/APpXNVsypLVnT0UUUjcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgfHP8AyNmg/wDXjff+jLasoj0rU8d/8jZoP/Xje/8AodtWUD616mE/hnkYt/vTvqKKK8k9UKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDlyK1/h//AMimP+whf/8ApXNWRWv8P/8AkVP+4hf/APpXNVsinudPWB4n1G+0ltIu7Zx9kOoRQXqFRgxy5jDZPTDsh4x/Q79YXiV76SO00+y0WDUhdSjzWuyPs8CKQ25xyScgbQB1GcjABRqcvYeMtYW5bw/JJY3eoW9wom1lyEtPsxYKHIBH70tmMRqcbwecA1raVqGpDxzNZya0NR025t7maKM2yxm2eKdYygYYLAbivP8AdzXnMcjCW5jB+RoomI9xrUmP5mu18N/8jrB/1x1j/wBOIpCHTeLPEknjPV/D2n2FrJ5MsYtruZH8pCYRIUl2kkEjdhvXselVV8YeKtW8OaT9m0600++1mWOK1uVl85VQq7ySbCvBVUHBJzu9iKkze6U/ivVdX1O08Pz3rWkiyQyLdNAoHlglWUZ3bGA+X1/u1ymn+IPD2i6/4SgbxcNRsNNF3+8Nv5YgBiVI1OFyer8k0Adzd+IdWtvhlcX14RZeIIrKZyjIAxaJtjSBGHKk7T0xh19RVDxD4zvfCWqXk73kmp2aSgy2L6bLE8CH/nnOq+WwGQcN1x97NZnxcv8ASNW8B2ms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", + "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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Ltrqz0yC3vb03tzGuHuDGEMh9do6cUAW6KKKACiiigArZrGrZoA4bxIM6qf93/2Y1j1seJP+Qqf93/2Y1kZz1r06PwIiUTt6KKK8wsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgSK7rwr/wAghPx/9CauGruvCv8AyCV/H/0Jq9PG/wANep4eWfxX6fqjWu/+PZ/w/nWZWrMnmQso6kcVlV5h7gUUUUAFFFFABRRRQAUUUUAFFFFAF2w/5afh/WrlVbJCsZY/xHirVABUFt/y2/66tU9QW5xJMh+9vLfgaAJ68t0XxdY2duFvNOxcpbG3S4twMsnGAwJHoOa9Sorqw9eFOMozje9utjmxFCdSUZQla1+lzjvht/yLtx/19t/6AlddN/qJP90/yp9RXDBbdye4IrOvV9tVdS1rmlCl7Kmqd72HQ/6iP/dH8qfTIgViRT1CgGn1ialO/wD+Wf4/0qlV+9QtGGH8J5qhQAUUUUAFFFFAEQtbdbo3QgiFwy7DKEG8r6Z64qWiigAooooAKKKKACtmsmJDJIqjuea1qAOG8Sf8hU/7v/sxrHrY8Sf8hU/7v/sxrHr1KP8ADQM7iiiivLAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDgq7rwr/wAglfx/9CauEIxXd+Ff+QSv4/8AoTV6WLf7tep4eWfxn6fqjcqvNaLKdwO1u/vViivNPcM/7DL/AHk/M0fYZf7yfma0KKAM/wCwy/3k/M0fYZf7yfma0KKAM/7DL/eT8zR9hl/vJ+ZrQooAz/sMv95PzNH2GX+8n5mtCigDP+wy/wB5PzNSR2IBzI2fYVcooAMYGBRRRQAVFLDvYOjFHHcVLRQBB/pX/TH9aP8ASv8Apj+tT0UAQf6V/wBMf1oWF2cPM4bHRR0FT0UAFFFFAARkYNU5LEE5jbHsauUUAZ/2GX+8n5mj7DL/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6Kg82f8A59//AB8UebP/AM+//j4oAnoqDzZ/+ff/AMfFHmz/APPv/wCPigCeioPNn/59/wDx8UebP/z7/wDj4oAnoqDzZ/8An3/8fFHmz/8APv8A+PigCeoTawMcmMfgcUnmz/8APv8A+PijzZ/+ff8A8fFAB9jg/ufqaPscH9z9TR5s/wDz7/8Aj4o82f8A59//AB8UAH2OD+5+po+xwf3P1NHmz/8APv8A+PijzZ/+ff8A8fFAB9jg/ufqaPscH9z9TR5s/wDz7/8Aj4o82f8A59//AB8UAH2OD+5+po+xwf3P1NHmz/8APv8A+PijzZ/+ff8A8fFAB9jg/ufqaPscH9z9TR5s/wDz7/8Aj4o82f8A59//AB8UASoixjCKAPanVB5s/wDz7/8Aj4pC1w4wIxH/ALRbNACw83M5HTIH6VPTIoxEgUfifU0+gDhvEn/IVP8Au/8AsxrIrY8RjOqH/d/9mNY9ehSfuo8XEr97I7eiiivPPaCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA5Wus8Pf8eH+fU1yeK6Tw5cL5TQk8g//AF/8ayhud2JT5DfooorU4QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKRmCKWY4AoA4nxH/wAhQ/7v/sxrIrR1ecXGoyMOQOP8f51QK+ld9PSKPIr61G0dnRRRXAeuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBytTW9w9vKJIzgjqPWoaK5z2ZRUlZnU2uvwuoE3yt71b/tiy/56j/vof41xeaXHpV+0ZySwsejOz/tiy/56j/vof40f2xZf89R/wB9D/GuLop+0J+rLudp/bFn/wA9R/30P8aP7Ys/+eg/76H+NcYDS0vaMPqy7nZf2xZ/89R/30P8aP7Y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g0hGKCGi/pUlut2ftCxnKER+aMoH7FvarU11dZiubu9jkeKVWSBHB3YOc/LkA89/f0rFpQaCHE0pNSUm6kht/Lluch2L7gFJ5AGOp4yfyxViTUfs7RExxShrEQbVkyB9cDg+361j0U1ITijRM8R0ny1UCL7UG2GYGTG3B/h6e/6VLq91F/a0stvsckAFztkVuB0BHH61k0Z9archxsXrWR5LtZ2itXEfBjfZGrDntwCff6U7V3drvy/tKzwxriIrtwF9MLwD2/CqFFArCYxQDS0mKCXEWik6UuaZnY0NP8g2l4jpA8xCGJZjtHB5w2Rj86khvnttVtHnESwxDaqQuGVFIIJ4J57nuay6MZpp9xW7GpCkenR37tPFJvjMEQR1JcMfvcE4wBnn1qSdbC2imktzEdoQQESFmlDDDhhnjgnstYuMUVQrlm9leWUZuJJo+TH5j7iAex9Dxz/himQQyz2l9FDG8khgGFRSSf3idhUNFKceaLj3MMRRValKm9OZNferFf8AsnUv+gfd/wDflv8ACremaZqEerWbvY3Kos6FmaFgANw5PFRkUlcMcvinfmPnIcM0ac1LnemvQ0/+Ed1X/n1/8iL/AI10TaxBo1va2l1FN5ogQnYAQOMY6+1cVRivSvfc+l22GkZpuMU+itEzFo7miiiuc7AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z", "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": 227, + "backup_cnt": 231, "autosave_cnt": 0, "group_color_cnt": 0, "lvgl_version": "8.3.6", @@ -42,5 +42,5 @@ "drive_fatfs_path": "", "naming": "_Screen_Name", "naming_force_lowercase": false, - "nidcnt": 1000183 + "nidcnt": 1000193 } \ No newline at end of file diff --git a/SquareLineProj/ESP32S3_UI.spj b/SquareLineProj/ESP32S3_UI.spj index 1cda0b6..10c9981 100644 --- a/SquareLineProj/ESP32S3_UI.spj +++ b/SquareLineProj/ESP32S3_UI.spj @@ -2254,7 +2254,8 @@ "InheritedType": 11 } ], - "saved_objtypeKey": "PANEL" + "saved_objtypeKey": "PANEL", + "tree_closed": true }, { "guid": "GUID16763883-502735S24514463", @@ -2652,7 +2653,7 @@ { "nid": 10, "strtype": "OBJECT/Name", - "strval": "ButtonMinus1", + "strval": "ButtonPlus", "InheritedType": 10 }, { @@ -4652,8 +4653,7 @@ "InheritedType": 11 } ], - "saved_objtypeKey": "PANEL", - "tree_closed": true + "saved_objtypeKey": "PANEL" } ], "dont_export": false, @@ -4984,7 +4984,7 @@ { "nid": 10, "strtype": "OBJECT/Name", - "strval": "Button1", + "strval": "startTest", "InheritedType": 10 }, { @@ -5038,13 +5038,11 @@ }, { "nid": 90, - "flags": 1048576, "strtype": "OBJECT/Flags", "InheritedType": 1 }, { "nid": 225, - "flags": 1048576, "strtype": "OBJECT/Scrolling", "InheritedType": 1 }, @@ -5074,7 +5072,6 @@ }, { "nid": 320, - "flags": 1048576, "strtype": "OBJECT/States", "InheritedType": 1 }, @@ -7804,6 +7801,71 @@ "strtype": "DROPDOWN/Style_list_selected", "strval": "{\"python\":\"{0}.get_list()\",\"c\":\"lv_dropdown_get_list({0})\"} lv.PART.SELECTED, Text, Rectangle", "InheritedType": 11 + }, + { + "disabled": false, + "nid": 1000183, + "strtype": "_event/EventHandler", + "strval": "VALUE_CHANGED", + "childs": [ + { + "nid": 1000184, + "strtype": "_event/name", + "strval": "Event18", + "InheritedType": 10 + }, + { + "nid": 1000185, + "strtype": "_event/condition_C", + "strval": "", + "InheritedType": 10 + }, + { + "nid": 1000186, + "strtype": "_event/condition_P", + "strval": "", + "InheritedType": 10 + }, + { + "nid": 1000187, + "strtype": "_event/action", + "strval": "CALL FUNCTION", + "childs": [ + { + "nid": 1000188, + "strtype": "CALL FUNCTION/Name", + "strval": "CALL FUNCTION", + "InheritedType": 10 + }, + { + "nid": 1000189, + "strtype": "CALL FUNCTION/Call", + "strval": "<{Function_name}>( event_struct )", + "InheritedType": 10 + }, + { + "nid": 1000190, + "strtype": "CALL FUNCTION/CallC", + "strval": "<{Function_name}>( e );", + "InheritedType": 10 + }, + { + "nid": 1000191, + "strtype": "CALL FUNCTION/Function_name", + "strval": "DeviceDropDownValueChanged", + "InheritedType": 10 + }, + { + "nid": 1000192, + "strtype": "CALL FUNCTION/Dont_export_function", + "strval": "False", + "InheritedType": 2 + } + ], + "InheritedType": 10 + } + ], + "InheritedType": 4 } ], "saved_objtypeKey": "DROPDOWN" @@ -16389,7 +16451,7 @@ "uiExportFolderPath": "D:\\yuwell_workspace\\FluxDC\\SquareLineProj\\Export", "projectExportFolderPath": "D:\\yuwell_workspace\\FluxDC\\SquareLineProj\\Export", "custom_variable_prefix": "uic", - "backup_cnt": 226, + "backup_cnt": 230, "autosave_cnt": 0, "group_color_cnt": 0, "lvgl_version": "8.3.6", @@ -16406,7 +16468,7 @@ "drive_fatfs_path": "", "naming": "_Screen_Name", "naming_force_lowercase": false, - "nidcnt": 1000183, + "nidcnt": 1000193, "BitDepth": 16, "Name": "ESP32S3_UI" } diff --git a/SquareLineProj/ESP32S3_UI_events.py b/SquareLineProj/ESP32S3_UI_events.py index 4347058..5a950fb 100644 --- a/SquareLineProj/ESP32S3_UI_events.py +++ b/SquareLineProj/ESP32S3_UI_events.py @@ -18,3 +18,7 @@ def ReadSdCallFunc(event_struct): def lightSliderCallback(event_struct): return + +def DeviceDropDownValueChanged(event_struct): + return + diff --git a/SquareLineProj/Export/screens/ui_Home.c b/SquareLineProj/Export/screens/ui_Home.c index d4510fc..23c2425 100644 --- a/SquareLineProj/Export/screens/ui_Home.c +++ b/SquareLineProj/Export/screens/ui_Home.c @@ -42,16 +42,16 @@ void ui_Home_screen_init(void) lv_obj_set_style_text_opa(ui_Home_WIFILabel, 255, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_Home_WIFILabel, &ui_font_MiSansN14, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_HeaderTimeHome = lv_label_create(ui_Home); - lv_obj_set_width(ui_Home_HeaderTimeHome, LV_SIZE_CONTENT); /// 1 - lv_obj_set_height(ui_Home_HeaderTimeHome, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_Home_HeaderTimeHome, 0); - lv_obj_set_y(ui_Home_HeaderTimeHome, -225); - lv_obj_set_align(ui_Home_HeaderTimeHome, LV_ALIGN_CENTER); - lv_label_set_text(ui_Home_HeaderTimeHome, "Spirit-3"); - lv_obj_set_style_text_color(ui_Home_HeaderTimeHome, lv_color_hex(0xFCF6F6), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_opa(ui_Home_HeaderTimeHome, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_font(ui_Home_HeaderTimeHome, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_Home_HeaderDeviceType = lv_label_create(ui_Home); + lv_obj_set_width(ui_Home_HeaderDeviceType, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_Home_HeaderDeviceType, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_Home_HeaderDeviceType, 0); + lv_obj_set_y(ui_Home_HeaderDeviceType, -225); + lv_obj_set_align(ui_Home_HeaderDeviceType, LV_ALIGN_CENTER); + lv_label_set_text(ui_Home_HeaderDeviceType, "Spirit-3"); + lv_obj_set_style_text_color(ui_Home_HeaderDeviceType, lv_color_hex(0xFCF6F6), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_Home_HeaderDeviceType, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(ui_Home_HeaderDeviceType, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); ui_Home_SliderHeaderBat = lv_slider_create(ui_Home); lv_slider_set_value(ui_Home_SliderHeaderBat, 60, LV_ANIM_OFF); @@ -227,16 +227,16 @@ void ui_Home_screen_init(void) lv_obj_set_style_text_color(ui_Home_ButtonMinus, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui_Home_ButtonMinus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_ButtonMinus1 = lv_btn_create(ui_Home_Panel3); - lv_obj_set_width(ui_Home_ButtonMinus1, 100); - lv_obj_set_height(ui_Home_ButtonMinus1, 50); - lv_obj_set_x(ui_Home_ButtonMinus1, 88); - lv_obj_set_y(ui_Home_ButtonMinus1, 140); - lv_obj_set_align(ui_Home_ButtonMinus1, LV_ALIGN_CENTER); - lv_obj_set_style_bg_color(ui_Home_ButtonMinus1, lv_color_hex(0xE0E4E3), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_bg_opa(ui_Home_ButtonMinus1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_color(ui_Home_ButtonMinus1, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_opa(ui_Home_ButtonMinus1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_Home_ButtonPlus = lv_btn_create(ui_Home_Panel3); + lv_obj_set_width(ui_Home_ButtonPlus, 100); + lv_obj_set_height(ui_Home_ButtonPlus, 50); + lv_obj_set_x(ui_Home_ButtonPlus, 88); + lv_obj_set_y(ui_Home_ButtonPlus, 140); + lv_obj_set_align(ui_Home_ButtonPlus, LV_ALIGN_CENTER); + lv_obj_set_style_bg_color(ui_Home_ButtonPlus, lv_color_hex(0xE0E4E3), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_opa(ui_Home_ButtonPlus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_color(ui_Home_ButtonPlus, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_Home_ButtonPlus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); ui_Home_Label1 = lv_label_create(ui_Home_Panel3); lv_obj_set_width(ui_Home_Label1, LV_SIZE_CONTENT); /// 1 @@ -343,16 +343,16 @@ void ui_Home_screen_init(void) lv_obj_set_style_text_align(ui_Home_Spinbox4, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_Home_Spinbox4, &ui_font_homePanelLabel, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_Button1 = lv_btn_create(ui_Home); - lv_obj_set_width(ui_Home_Button1, 296); - lv_obj_set_height(ui_Home_Button1, 61); - lv_obj_set_x(ui_Home_Button1, 3); - lv_obj_set_y(ui_Home_Button1, 194); - lv_obj_set_align(ui_Home_Button1, LV_ALIGN_CENTER); - lv_obj_set_style_bg_color(ui_Home_Button1, lv_color_hex(0x4A58DD), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_bg_opa(ui_Home_Button1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_Home_startTest = lv_btn_create(ui_Home); + lv_obj_set_width(ui_Home_startTest, 296); + lv_obj_set_height(ui_Home_startTest, 61); + lv_obj_set_x(ui_Home_startTest, 3); + lv_obj_set_y(ui_Home_startTest, 194); + lv_obj_set_align(ui_Home_startTest, LV_ALIGN_CENTER); + lv_obj_set_style_bg_color(ui_Home_startTest, lv_color_hex(0x4A58DD), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_opa(ui_Home_startTest, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_Label4 = lv_label_create(ui_Home_Button1); + ui_Home_Label4 = lv_label_create(ui_Home_startTest); lv_obj_set_width(ui_Home_Label4, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_Home_Label4, LV_SIZE_CONTENT); /// 1 lv_obj_set_x(ui_Home_Label4, 3); @@ -364,6 +364,6 @@ void ui_Home_screen_init(void) lv_obj_add_event_cb(ui_Home_Panel2, ui_event_Home_Panel2, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_Home_Panel6, ui_event_Home_Panel6, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_Home_ButtonMinus, ui_event_Home_ButtonMinus, LV_EVENT_ALL, NULL); - lv_obj_add_event_cb(ui_Home_ButtonMinus1, ui_event_Home_ButtonMinus1, LV_EVENT_ALL, NULL); + lv_obj_add_event_cb(ui_Home_ButtonPlus, ui_event_Home_ButtonPlus, LV_EVENT_ALL, NULL); } diff --git a/SquareLineProj/Export/screens/ui_settings.c b/SquareLineProj/Export/screens/ui_settings.c index 4d90177..a2635bc 100644 --- a/SquareLineProj/Export/screens/ui_settings.c +++ b/SquareLineProj/Export/screens/ui_settings.c @@ -269,6 +269,7 @@ void ui_settings_screen_init(void) lv_obj_add_event_cb(ui_settings_Bat, ui_event_settings_Bat, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_Time, ui_event_settings_Time, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_lightSlider, ui_event_settings_lightSlider, LV_EVENT_ALL, NULL); + lv_obj_add_event_cb(ui_settings_deviceDropdown, ui_event_settings_deviceDropdown, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_Time5, ui_event_settings_Time5, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_Time1, ui_event_settings_Time1, LV_EVENT_ALL, NULL); diff --git a/SquareLineProj/Export/ui.c b/SquareLineProj/Export/ui.c index 95a8dde..662c17c 100644 --- a/SquareLineProj/Export/ui.c +++ b/SquareLineProj/Export/ui.c @@ -13,7 +13,7 @@ void ui_Home_screen_init(void); lv_obj_t * ui_Home; lv_obj_t * ui_Home_header; lv_obj_t * ui_Home_WIFILabel; -lv_obj_t * ui_Home_HeaderTimeHome; +lv_obj_t * ui_Home_HeaderDeviceType; lv_obj_t * ui_Home_SliderHeaderBat; lv_obj_t * ui_Home_PanelBathead; lv_obj_t * ui_Home_LabelHeaderBatValue; @@ -30,8 +30,8 @@ lv_obj_t * ui_Home_Panel3; lv_obj_t * ui_Home_SpinboxStage; void ui_event_Home_ButtonMinus(lv_event_t * e); lv_obj_t * ui_Home_ButtonMinus; -void ui_event_Home_ButtonMinus1(lv_event_t * e); -lv_obj_t * ui_Home_ButtonMinus1; +void ui_event_Home_ButtonPlus(lv_event_t * e); +lv_obj_t * ui_Home_ButtonPlus; lv_obj_t * ui_Home_Label1; lv_obj_t * ui_Home_Label5; lv_obj_t * ui_Home_Panel4; @@ -43,7 +43,7 @@ lv_obj_t * ui_Home_Spinbox3; lv_obj_t * ui_Home_Panel5; lv_obj_t * ui_Home_Label8; lv_obj_t * ui_Home_Spinbox4; -lv_obj_t * ui_Home_Button1; +lv_obj_t * ui_Home_startTest; lv_obj_t * ui_Home_Label4; // CUSTOM VARIABLES @@ -69,6 +69,7 @@ lv_obj_t * ui_settings_dianchi3; void ui_event_settings_lightSlider(lv_event_t * e); lv_obj_t * ui_settings_lightSlider; lv_obj_t * ui_settings_Time3; +void ui_event_settings_deviceDropdown(lv_event_t * e); lv_obj_t * ui_settings_deviceDropdown; lv_obj_t * ui_settings_dianchi4; void ui_event_settings_Time5(lv_event_t * e); @@ -187,7 +188,7 @@ void ui_event_Home_ButtonMinus(lv_event_t * e) } } -void ui_event_Home_ButtonMinus1(lv_event_t * e) +void ui_event_Home_ButtonPlus(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); @@ -241,6 +242,15 @@ void ui_event_settings_lightSlider(lv_event_t * e) } } +void ui_event_settings_deviceDropdown(lv_event_t * e) +{ + lv_event_code_t event_code = lv_event_get_code(e); + + if(event_code == LV_EVENT_VALUE_CHANGED) { + DeviceDropDownValueChanged(e); + } +} + void ui_event_settings_Time5(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); diff --git a/SquareLineProj/Export/ui.h b/SquareLineProj/Export/ui.h index 0893002..9971417 100644 --- a/SquareLineProj/Export/ui.h +++ b/SquareLineProj/Export/ui.h @@ -21,7 +21,7 @@ void ui_Home_screen_init(void); extern lv_obj_t * ui_Home; extern lv_obj_t * ui_Home_header; extern lv_obj_t * ui_Home_WIFILabel; -extern lv_obj_t * ui_Home_HeaderTimeHome; +extern lv_obj_t * ui_Home_HeaderDeviceType; extern lv_obj_t * ui_Home_SliderHeaderBat; extern lv_obj_t * ui_Home_PanelBathead; extern lv_obj_t * ui_Home_LabelHeaderBatValue; @@ -38,8 +38,8 @@ extern lv_obj_t * ui_Home_Panel3; extern lv_obj_t * ui_Home_SpinboxStage; void ui_event_Home_ButtonMinus(lv_event_t * e); extern lv_obj_t * ui_Home_ButtonMinus; -void ui_event_Home_ButtonMinus1(lv_event_t * e); -extern lv_obj_t * ui_Home_ButtonMinus1; +void ui_event_Home_ButtonPlus(lv_event_t * e); +extern lv_obj_t * ui_Home_ButtonPlus; extern lv_obj_t * ui_Home_Label1; extern lv_obj_t * ui_Home_Label5; extern lv_obj_t * ui_Home_Panel4; @@ -51,7 +51,7 @@ extern lv_obj_t * ui_Home_Spinbox3; extern lv_obj_t * ui_Home_Panel5; extern lv_obj_t * ui_Home_Label8; extern lv_obj_t * ui_Home_Spinbox4; -extern lv_obj_t * ui_Home_Button1; +extern lv_obj_t * ui_Home_startTest; extern lv_obj_t * ui_Home_Label4; // CUSTOM VARIABLES @@ -77,6 +77,7 @@ extern lv_obj_t * ui_settings_dianchi3; void ui_event_settings_lightSlider(lv_event_t * e); extern lv_obj_t * ui_settings_lightSlider; extern lv_obj_t * ui_settings_Time3; +void ui_event_settings_deviceDropdown(lv_event_t * e); extern lv_obj_t * ui_settings_deviceDropdown; extern lv_obj_t * ui_settings_dianchi4; void ui_event_settings_Time5(lv_event_t * e); diff --git a/SquareLineProj/Export/ui_events.c b/SquareLineProj/Export/ui_events.c index 6852332..e6e61ff 100644 --- a/SquareLineProj/Export/ui_events.c +++ b/SquareLineProj/Export/ui_events.c @@ -29,3 +29,8 @@ void lightSliderCallback(lv_event_t * e) { // Your code here } + +void DeviceDropDownValueChanged(lv_event_t * e) +{ + // Your code here +} diff --git a/SquareLineProj/Export/ui_events.h b/SquareLineProj/Export/ui_events.h index ae10eef..697a3cd 100644 --- a/SquareLineProj/Export/ui_events.h +++ b/SquareLineProj/Export/ui_events.h @@ -11,6 +11,7 @@ extern "C" { #endif void lightSliderCallback(lv_event_t * e); +void DeviceDropDownValueChanged(lv_event_t * e); void ReadSdCallFunc(lv_event_t * e); void F1callbackFunc(lv_event_t * e); void F2callbackFunc(lv_event_t * e); diff --git a/SquareLineProj/backup/ESP32S3_UI_backup00.zip b/SquareLineProj/backup/ESP32S3_UI_backup00.zip index d8cc2ef..c583031 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 776c232..8b38fba 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_backup07.zip b/SquareLineProj/backup/ESP32S3_UI_backup07.zip index cb7ee50..4963904 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_backup08.zip b/SquareLineProj/backup/ESP32S3_UI_backup08.zip index 776f0de..bba7675 100644 Binary files a/SquareLineProj/backup/ESP32S3_UI_backup08.zip and b/SquareLineProj/backup/ESP32S3_UI_backup08.zip differ diff --git a/SquareLineProj/backup/ESP32S3_UI_backup09.zip b/SquareLineProj/backup/ESP32S3_UI_backup09.zip index 5d9b226..a5c1ca3 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 new file mode 100644 index 0000000..bba0bd6 --- /dev/null +++ b/components/FluxButton/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "FluxButton.c" + REQUIRES espressif__button FluxUI driver lvgl + INCLUDE_DIRS ".") diff --git a/components/FluxButton/FluxButton.c b/components/FluxButton/FluxButton.c new file mode 100644 index 0000000..ce7944b --- /dev/null +++ b/components/FluxButton/FluxButton.c @@ -0,0 +1,164 @@ +#include +#include "FluxButton.h" +#include "driver/gpio.h" +#include "ui.h" + +static const char *BUTTON_TAG = "button_test"; + + +/*定义按键事件列表*/ +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", +}; + + +static void button_event_cb(void *arg, void *data) +{ + ESP_LOGI(BUTTON_TAG, "Button event %d", (int)data); + + #if CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE + esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause(); + if (cause != ESP_SLEEP_WAKEUP_UNDEFINED) { + ESP_LOGI(BUTTON_TAG, "Wake up from light sleep, reason %d", cause); + } + #endif + + + /*根据输入按键事件进行事件处理*/ + switch ((int)data) + { + case BUTTON_CMD_POWER_ON: + /*响应电源键按下事件*/ + gpio_set_level(BUTTON_PowerOut_IO_NUM, POWER_ON_OUT_LEVEL); + break; + case BUTTON_CMD_POWER_OFF: + gpio_set_level(BUTTON_PowerOut_IO_NUM, POWER_OFF_OUT_LEVEL); + break; + + case BUTTON_CMD_CENTER_KEY: + /*开始测试按键*/ + lv_event_send(ui_Home_startTest, LV_EVENT_CLICKED, NULL); + + break; + case BUTTON_CMD_LEFT_KEY: + lv_event_send(ui_Home_ButtonMinus, LV_EVENT_CLICKED, NULL); + break; + case BUTTON_CMD_RIGHT_KEY: + lv_event_send(ui_Home_ButtonPlus, LV_EVENT_CLICKED, NULL); + break; + } +} + +void button_init_func(uint32_t button_num) +{ + uint8_t activeLevel = BUTTON_ACTIVE_LEVEL; + /*当按键为电源按键时修改激活状态为高电平*/ + if (button_num == BUTTON_PowerIn_IO_NUM) + { + activeLevel = BUTTON_POWERIN_ACTIVE_LEVEL; + } + + + button_config_t btn_cfg = { + .type = BUTTON_TYPE_GPIO, + .gpio_button_config = { + .gpio_num = button_num, + .active_level = activeLevel, +#if CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE + .enable_power_save = true, +#endif + }, + }; + button_handle_t btn = iot_button_create(&btn_cfg); + assert(btn); + + esp_err_t err = ESP_OK; + /*为电源键按下注册回调函数*/ + if (button_num == BUTTON_PowerIn_IO_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); + + }else{ + /*为下方三个按键 单击 注册回调函数*/ + switch (button_num) + { + case BUTTON_Center_IO_NUM: + err |= iot_button_register_cb(btn, BUTTON_SINGLE_CLICK, button_event_cb, (void *)BUTTON_CMD_CENTER_KEY); + break; + case BUTTON_Left_IO_NUM: + err |= iot_button_register_cb(btn, BUTTON_SINGLE_CLICK, button_event_cb, (void *)BUTTON_CMD_LEFT_KEY); + break; + case BUTTON_Right_IO_NUM: + err |= iot_button_register_cb(btn, BUTTON_SINGLE_CLICK, button_event_cb, (void *)BUTTON_CMD_RIGHT_KEY); + break; + default: + break; + } + } + ESP_ERROR_CHECK(err); +} + +/*初始化所有引脚*/ +void button_init(void) +{ + button_init_func(BUTTON_Center_IO_NUM); + button_init_func(BUTTON_Left_IO_NUM); + button_init_func(BUTTON_Right_IO_NUM); + + button_init_func(BUTTON_PowerIn_IO_NUM); + + /*在此处初始化电源控制IO输出*/ + gpio_reset_pin(BUTTON_PowerOut_IO_NUM); + gpio_set_direction(BUTTON_PowerOut_IO_NUM, GPIO_MODE_OUTPUT); +} + + +#if CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 0) +void power_save_init(void) +{ + esp_pm_config_t pm_config = { + .max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ, + .min_freq_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ, +#if CONFIG_FREERTOS_USE_TICKLESS_IDLE + .light_sleep_enable = true +#endif + }; + ESP_ERROR_CHECK(esp_pm_configure(&pm_config)); +} +#else +void power_save_init(void) +{ +#if CONFIG_IDF_TARGET_ESP32 + esp_pm_config_esp32_t pm_config = { +#elif CONFIG_IDF_TARGET_ESP32S2 + esp_pm_config_esp32s2_t pm_config = { +#elif CONFIG_IDF_TARGET_ESP32C3 + esp_pm_config_esp32c3_t pm_config = { +#elif CONFIG_IDF_TARGET_ESP32S3 + esp_pm_config_esp32s3_t pm_config = { +#elif CONFIG_IDF_TARGET_ESP32C2 + esp_pm_config_esp32c2_t pm_config = { +#endif + .max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ, + .min_freq_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ, +#if CONFIG_FREERTOS_USE_TICKLESS_IDLE + .light_sleep_enable = true +#endif + }; + ESP_ERROR_CHECK(esp_pm_configure(&pm_config)); +} +#endif +#endif diff --git a/components/FluxButton/FluxButton.h b/components/FluxButton/FluxButton.h new file mode 100644 index 0000000..9b455a8 --- /dev/null +++ b/components/FluxButton/FluxButton.h @@ -0,0 +1,33 @@ + +/*导入外部button组件头文件*/ +#include "iot_button.h" +#include "esp_log.h" + +#define BUTTON_Center_IO_NUM (42) +#define BUTTON_Left_IO_NUM (41) +#define BUTTON_Right_IO_NUM (40) + +#define BUTTON_PowerIn_IO_NUM (10) +#define BUTTON_PowerOut_IO_NUM (11) + +#define POWER_OFF_OUT_LEVEL 0 +#define POWER_ON_OUT_LEVEL 1 + +#define BUTTON_ACTIVE_LEVEL 0 +#define BUTTON_POWERIN_ACTIVE_LEVEL 1 + +/*定义按键控制指令码*/ +enum button_cmd_t +{ + BUTTON_CMD_POWER_ON=0, + BUTTON_CMD_POWER_OFF=1, + BUTTON_CMD_CENTER_KEY=2, + BUTTON_CMD_LEFT_KEY=3, + BUTTON_CMD_RIGHT_KEY=4, +}; + +#define CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE 0 + +void button_init_func(uint32_t button_num); + +void button_init(void); diff --git a/components/FluxSD/FluxSD.c b/components/FluxSD/FluxSD.c index 2785939..4f81908 100644 --- a/components/FluxSD/FluxSD.c +++ b/components/FluxSD/FluxSD.c @@ -136,7 +136,7 @@ void flux_sd_init(void) esp_err_t ret; esp_vfs_fat_sdmmc_mount_config_t mount_config = { - .format_if_mount_failed = false, + .format_if_mount_failed = true, .max_files = 5, .allocation_unit_size = 16 * 1024 }; @@ -153,7 +153,6 @@ void flux_sd_init(void) slot_config.clk = CONFIG_EXAMPLE_PIN_CLK; slot_config.cmd = CONFIG_EXAMPLE_PIN_CMD; slot_config.d0 = CONFIG_EXAMPLE_PIN_D0; - slot_config.d1 = CONFIG_EXAMPLE_PIN_D1; slot_config.d2 = CONFIG_EXAMPLE_PIN_D2; slot_config.d3 = CONFIG_EXAMPLE_PIN_D3; @@ -162,6 +161,7 @@ void flux_sd_init(void) ESP_LOGI(TAG, "Mounting filesystem"); ret = esp_vfs_fat_sdmmc_mount(mount_point, &host, &slot_config, &mount_config, &card); + if (ret != ESP_OK) { if (ret == ESP_FAIL) { ESP_LOGE(TAG, "Failed to mount filesystem. " diff --git a/components/FluxUI/screens/ui_Home.c b/components/FluxUI/screens/ui_Home.c index d4510fc..23c2425 100644 --- a/components/FluxUI/screens/ui_Home.c +++ b/components/FluxUI/screens/ui_Home.c @@ -42,16 +42,16 @@ void ui_Home_screen_init(void) lv_obj_set_style_text_opa(ui_Home_WIFILabel, 255, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_Home_WIFILabel, &ui_font_MiSansN14, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_HeaderTimeHome = lv_label_create(ui_Home); - lv_obj_set_width(ui_Home_HeaderTimeHome, LV_SIZE_CONTENT); /// 1 - lv_obj_set_height(ui_Home_HeaderTimeHome, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_Home_HeaderTimeHome, 0); - lv_obj_set_y(ui_Home_HeaderTimeHome, -225); - lv_obj_set_align(ui_Home_HeaderTimeHome, LV_ALIGN_CENTER); - lv_label_set_text(ui_Home_HeaderTimeHome, "Spirit-3"); - lv_obj_set_style_text_color(ui_Home_HeaderTimeHome, lv_color_hex(0xFCF6F6), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_opa(ui_Home_HeaderTimeHome, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_font(ui_Home_HeaderTimeHome, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_Home_HeaderDeviceType = lv_label_create(ui_Home); + lv_obj_set_width(ui_Home_HeaderDeviceType, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_Home_HeaderDeviceType, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_Home_HeaderDeviceType, 0); + lv_obj_set_y(ui_Home_HeaderDeviceType, -225); + lv_obj_set_align(ui_Home_HeaderDeviceType, LV_ALIGN_CENTER); + lv_label_set_text(ui_Home_HeaderDeviceType, "Spirit-3"); + lv_obj_set_style_text_color(ui_Home_HeaderDeviceType, lv_color_hex(0xFCF6F6), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_Home_HeaderDeviceType, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_font(ui_Home_HeaderDeviceType, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); ui_Home_SliderHeaderBat = lv_slider_create(ui_Home); lv_slider_set_value(ui_Home_SliderHeaderBat, 60, LV_ANIM_OFF); @@ -227,16 +227,16 @@ void ui_Home_screen_init(void) lv_obj_set_style_text_color(ui_Home_ButtonMinus, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui_Home_ButtonMinus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_ButtonMinus1 = lv_btn_create(ui_Home_Panel3); - lv_obj_set_width(ui_Home_ButtonMinus1, 100); - lv_obj_set_height(ui_Home_ButtonMinus1, 50); - lv_obj_set_x(ui_Home_ButtonMinus1, 88); - lv_obj_set_y(ui_Home_ButtonMinus1, 140); - lv_obj_set_align(ui_Home_ButtonMinus1, LV_ALIGN_CENTER); - lv_obj_set_style_bg_color(ui_Home_ButtonMinus1, lv_color_hex(0xE0E4E3), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_bg_opa(ui_Home_ButtonMinus1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_color(ui_Home_ButtonMinus1, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_text_opa(ui_Home_ButtonMinus1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_Home_ButtonPlus = lv_btn_create(ui_Home_Panel3); + lv_obj_set_width(ui_Home_ButtonPlus, 100); + lv_obj_set_height(ui_Home_ButtonPlus, 50); + lv_obj_set_x(ui_Home_ButtonPlus, 88); + lv_obj_set_y(ui_Home_ButtonPlus, 140); + lv_obj_set_align(ui_Home_ButtonPlus, LV_ALIGN_CENTER); + lv_obj_set_style_bg_color(ui_Home_ButtonPlus, lv_color_hex(0xE0E4E3), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_opa(ui_Home_ButtonPlus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_color(ui_Home_ButtonPlus, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_text_opa(ui_Home_ButtonPlus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); ui_Home_Label1 = lv_label_create(ui_Home_Panel3); lv_obj_set_width(ui_Home_Label1, LV_SIZE_CONTENT); /// 1 @@ -343,16 +343,16 @@ void ui_Home_screen_init(void) lv_obj_set_style_text_align(ui_Home_Spinbox4, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_Home_Spinbox4, &ui_font_homePanelLabel, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_Button1 = lv_btn_create(ui_Home); - lv_obj_set_width(ui_Home_Button1, 296); - lv_obj_set_height(ui_Home_Button1, 61); - lv_obj_set_x(ui_Home_Button1, 3); - lv_obj_set_y(ui_Home_Button1, 194); - lv_obj_set_align(ui_Home_Button1, LV_ALIGN_CENTER); - lv_obj_set_style_bg_color(ui_Home_Button1, lv_color_hex(0x4A58DD), LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_bg_opa(ui_Home_Button1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_Home_startTest = lv_btn_create(ui_Home); + lv_obj_set_width(ui_Home_startTest, 296); + lv_obj_set_height(ui_Home_startTest, 61); + lv_obj_set_x(ui_Home_startTest, 3); + lv_obj_set_y(ui_Home_startTest, 194); + lv_obj_set_align(ui_Home_startTest, LV_ALIGN_CENTER); + lv_obj_set_style_bg_color(ui_Home_startTest, lv_color_hex(0x4A58DD), LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_bg_opa(ui_Home_startTest, 255, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_Home_Label4 = lv_label_create(ui_Home_Button1); + ui_Home_Label4 = lv_label_create(ui_Home_startTest); lv_obj_set_width(ui_Home_Label4, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_Home_Label4, LV_SIZE_CONTENT); /// 1 lv_obj_set_x(ui_Home_Label4, 3); @@ -364,6 +364,6 @@ void ui_Home_screen_init(void) lv_obj_add_event_cb(ui_Home_Panel2, ui_event_Home_Panel2, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_Home_Panel6, ui_event_Home_Panel6, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_Home_ButtonMinus, ui_event_Home_ButtonMinus, LV_EVENT_ALL, NULL); - lv_obj_add_event_cb(ui_Home_ButtonMinus1, ui_event_Home_ButtonMinus1, LV_EVENT_ALL, NULL); + lv_obj_add_event_cb(ui_Home_ButtonPlus, ui_event_Home_ButtonPlus, LV_EVENT_ALL, NULL); } diff --git a/components/FluxUI/screens/ui_settings.c b/components/FluxUI/screens/ui_settings.c index 4d90177..a2635bc 100644 --- a/components/FluxUI/screens/ui_settings.c +++ b/components/FluxUI/screens/ui_settings.c @@ -269,6 +269,7 @@ void ui_settings_screen_init(void) lv_obj_add_event_cb(ui_settings_Bat, ui_event_settings_Bat, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_Time, ui_event_settings_Time, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_lightSlider, ui_event_settings_lightSlider, LV_EVENT_ALL, NULL); + lv_obj_add_event_cb(ui_settings_deviceDropdown, ui_event_settings_deviceDropdown, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_Time5, ui_event_settings_Time5, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(ui_settings_Time1, ui_event_settings_Time1, LV_EVENT_ALL, NULL); diff --git a/components/FluxUI/ui.c b/components/FluxUI/ui.c index 95a8dde..662c17c 100644 --- a/components/FluxUI/ui.c +++ b/components/FluxUI/ui.c @@ -13,7 +13,7 @@ void ui_Home_screen_init(void); lv_obj_t * ui_Home; lv_obj_t * ui_Home_header; lv_obj_t * ui_Home_WIFILabel; -lv_obj_t * ui_Home_HeaderTimeHome; +lv_obj_t * ui_Home_HeaderDeviceType; lv_obj_t * ui_Home_SliderHeaderBat; lv_obj_t * ui_Home_PanelBathead; lv_obj_t * ui_Home_LabelHeaderBatValue; @@ -30,8 +30,8 @@ lv_obj_t * ui_Home_Panel3; lv_obj_t * ui_Home_SpinboxStage; void ui_event_Home_ButtonMinus(lv_event_t * e); lv_obj_t * ui_Home_ButtonMinus; -void ui_event_Home_ButtonMinus1(lv_event_t * e); -lv_obj_t * ui_Home_ButtonMinus1; +void ui_event_Home_ButtonPlus(lv_event_t * e); +lv_obj_t * ui_Home_ButtonPlus; lv_obj_t * ui_Home_Label1; lv_obj_t * ui_Home_Label5; lv_obj_t * ui_Home_Panel4; @@ -43,7 +43,7 @@ lv_obj_t * ui_Home_Spinbox3; lv_obj_t * ui_Home_Panel5; lv_obj_t * ui_Home_Label8; lv_obj_t * ui_Home_Spinbox4; -lv_obj_t * ui_Home_Button1; +lv_obj_t * ui_Home_startTest; lv_obj_t * ui_Home_Label4; // CUSTOM VARIABLES @@ -69,6 +69,7 @@ lv_obj_t * ui_settings_dianchi3; void ui_event_settings_lightSlider(lv_event_t * e); lv_obj_t * ui_settings_lightSlider; lv_obj_t * ui_settings_Time3; +void ui_event_settings_deviceDropdown(lv_event_t * e); lv_obj_t * ui_settings_deviceDropdown; lv_obj_t * ui_settings_dianchi4; void ui_event_settings_Time5(lv_event_t * e); @@ -187,7 +188,7 @@ void ui_event_Home_ButtonMinus(lv_event_t * e) } } -void ui_event_Home_ButtonMinus1(lv_event_t * e) +void ui_event_Home_ButtonPlus(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); @@ -241,6 +242,15 @@ void ui_event_settings_lightSlider(lv_event_t * e) } } +void ui_event_settings_deviceDropdown(lv_event_t * e) +{ + lv_event_code_t event_code = lv_event_get_code(e); + + if(event_code == LV_EVENT_VALUE_CHANGED) { + DeviceDropDownValueChanged(e); + } +} + void ui_event_settings_Time5(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); diff --git a/components/FluxUI/ui.h b/components/FluxUI/ui.h index 0893002..9971417 100644 --- a/components/FluxUI/ui.h +++ b/components/FluxUI/ui.h @@ -21,7 +21,7 @@ void ui_Home_screen_init(void); extern lv_obj_t * ui_Home; extern lv_obj_t * ui_Home_header; extern lv_obj_t * ui_Home_WIFILabel; -extern lv_obj_t * ui_Home_HeaderTimeHome; +extern lv_obj_t * ui_Home_HeaderDeviceType; extern lv_obj_t * ui_Home_SliderHeaderBat; extern lv_obj_t * ui_Home_PanelBathead; extern lv_obj_t * ui_Home_LabelHeaderBatValue; @@ -38,8 +38,8 @@ extern lv_obj_t * ui_Home_Panel3; extern lv_obj_t * ui_Home_SpinboxStage; void ui_event_Home_ButtonMinus(lv_event_t * e); extern lv_obj_t * ui_Home_ButtonMinus; -void ui_event_Home_ButtonMinus1(lv_event_t * e); -extern lv_obj_t * ui_Home_ButtonMinus1; +void ui_event_Home_ButtonPlus(lv_event_t * e); +extern lv_obj_t * ui_Home_ButtonPlus; extern lv_obj_t * ui_Home_Label1; extern lv_obj_t * ui_Home_Label5; extern lv_obj_t * ui_Home_Panel4; @@ -51,7 +51,7 @@ extern lv_obj_t * ui_Home_Spinbox3; extern lv_obj_t * ui_Home_Panel5; extern lv_obj_t * ui_Home_Label8; extern lv_obj_t * ui_Home_Spinbox4; -extern lv_obj_t * ui_Home_Button1; +extern lv_obj_t * ui_Home_startTest; extern lv_obj_t * ui_Home_Label4; // CUSTOM VARIABLES @@ -77,6 +77,7 @@ extern lv_obj_t * ui_settings_dianchi3; void ui_event_settings_lightSlider(lv_event_t * e); extern lv_obj_t * ui_settings_lightSlider; extern lv_obj_t * ui_settings_Time3; +void ui_event_settings_deviceDropdown(lv_event_t * e); extern lv_obj_t * ui_settings_deviceDropdown; extern lv_obj_t * ui_settings_dianchi4; void ui_event_settings_Time5(lv_event_t * e); diff --git a/components/FluxUI/ui_events.c b/components/FluxUI/ui_events.c index ff1964f..cffd860 100644 --- a/components/FluxUI/ui_events.c +++ b/components/FluxUI/ui_events.c @@ -50,3 +50,12 @@ void lightSliderCallback(lv_event_t * e) // Update duty to apply the new value ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0)); } + + +void DeviceDropDownValueChanged(lv_event_t * e) +{ + char buf[32]={}; + lv_dropdown_get_selected_str(e->target,buf,32); + lv_label_set_text(ui_Home_HeaderDeviceType, buf); + +} \ No newline at end of file diff --git a/components/FluxUI/ui_events.h b/components/FluxUI/ui_events.h index ae10eef..697a3cd 100644 --- a/components/FluxUI/ui_events.h +++ b/components/FluxUI/ui_events.h @@ -11,6 +11,7 @@ extern "C" { #endif void lightSliderCallback(lv_event_t * e); +void DeviceDropDownValueChanged(lv_event_t * e); void ReadSdCallFunc(lv_event_t * e); void F1callbackFunc(lv_event_t * e); void F2callbackFunc(lv_event_t * e); diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 942e114..7708630 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -4,7 +4,7 @@ if(CONFIG_EXAMPLE_LCD_IMAGE_FROM_EMBEDDED_BINARY) endif() idf_component_register(SRCS "i80_controller_example_main.c" "lvgl_demo_ui.c" ${embedded_images} -REQUIRES FluxUI FluxPower spiffs FluxSD FluxMod +REQUIRES FluxUI FluxPower spiffs FluxSD FluxMod FluxButton INCLUDE_DIRS ".") if(CONFIG_EXAMPLE_LCD_IMAGE_FROM_FILE_SYSTEM) diff --git a/main/i80_controller_example_main.c b/main/i80_controller_example_main.c index a1d83b1..a77b14d 100644 --- a/main/i80_controller_example_main.c +++ b/main/i80_controller_example_main.c @@ -32,6 +32,9 @@ /*瀵煎叆澶栭儴LVGL椤圭洰*/ #include "ui.h" +/*鍖呭惈鎸夐敭鎺у埗澶存枃浠*/ +#include "FluxButton.h" + static const char *TAG = "example"; #include "modbus_params.h" @@ -457,6 +460,9 @@ void app_main(void) /*鍒濆鍖朣D鍗*/ flux_sd_init(); + /*鍒濆鍖朏luxButton*/ + button_init(); + /*鍒濆鍖朚odbus*/ //modbus_master_init();