Page light Attributes ID : 0 Scope : local Dragging : 0 Send Component ID : on press and release Locked : no Swide up page ID : disabled Swide down page ID : disabled Swide left page ID : disabled Swide right page ID: disabled Events Preinitialize Event if(api==0) { page home }else { vis light_b_press,1 vis lightslider,1 vis light_value,1 // #### OFF Button ##### vis temp_b_press,0 vis color_b_pres,0 // #### OFF Value ##### vis temp_value,0 vis light_value_2,0 // #### OFF Slider ##### vis tempslider,0 vis colorwheel,0 // #### Hide color & temp buttons ##### vis temp_touch,0 vis temp_value_2,0 vis temp_button,0 vis color_touch,0 vis color_button,0 } vis unavailable,0 printh 92 prints "current_page",0 printh 00 prints "light",0 printh 00 printh FF FF FF Variable (int32) rgb565 Attributes ID : 22 Scope: local Value: 0 Variable (string) va1 Attributes ID : 23 Scope : local Text : newtxt Max. Text Size: 20 Variable (string) va2 Attributes ID : 24 Scope : local Text : newtxt Max. Text Size: 10 Variable (string) va3 Attributes ID : 25 Scope : local Text : newtxt Max. Text Size: 10 Variable (int32) currenttab Attributes ID : 26 Scope: local Value: 0 Variable (string) lightsetting Attributes ID : 30 Scope : local Text : Max. Text Size: 255 Number ring Attributes ID : 4 Scope : local Dragging : 0 Send Component ID : on press and release Associated Keyboard: none Value : 0 Number field Attributes ID : 5 Scope : local Dragging : 0 Send Component ID : on press and release Associated Keyboard: none Value : 0 Text light_value Attributes ID : 1 Scope : local Dragging : 0 Send Component ID : disabled Associated Keyboard: none Text : Max. Text Size : 10 Text page_label Attributes ID : 2 Scope : local Dragging : 0 Send Component ID : on press and release Associated Keyboard: none Text : Max. Text Size : 100 Text temp_value Attributes ID : 14 Scope : local Dragging : 0 Send Component ID : on press and release Associated Keyboard: none Text : Max. Text Size : 10 Text light_value_2 Attributes ID : 27 Scope : local Dragging : 0 Send Component ID : disabled Associated Keyboard: none Text : Max. Text Size : 10 Text temp_value_2 Attributes ID : 28 Scope : local Dragging : 0 Send Component ID : disabled Associated Keyboard: none Text : Max. Text Size : 10 Text icon_state Attributes ID : 29 Scope : local Dragging : 0 Send Component ID : on press and release Associated Keyboard: none Text : Max. Text Size : 10 Text unavailable Attributes ID : 33 Scope : local Dragging : 0 Send Component ID : disabled Associated Keyboard: none Text : Max. Text Size : 1 Text power_button Attributes ID : 34 Scope : local Dragging : 0 Send Component ID : on press and release Associated Keyboard: none Text :  Max. Text Size : 3 Events Touch Release Event power_button.pco=31 Picture light_button Attributes ID : 8 Scope : local Dragging : 0 Send Component ID: disabled Picture color_button Attributes ID : 9 Scope : local Dragging : 0 Send Component ID: disabled Picture temp_button Attributes ID : 10 Scope : local Dragging : 0 Send Component ID: disabled Picture light_b_press Attributes ID : 11 Scope : local Dragging : 0 Send Component ID: disabled Picture temp_b_press Attributes ID : 12 Scope : local Dragging : 0 Send Component ID: disabled Picture color_b_pres Attributes ID : 13 Scope : local Dragging : 0 Send Component ID: disabled Picture colorwheel Attributes ID : 16 Scope : local Dragging : 0 Send Component ID: on press and release Events Touch Press Event // Circular Color Picker for Nextion (c) Max Zuidberg 2022 // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. // // Put this code in the touch press or release // event of the pic component with the color wheel. // Requires the two variables field.val and ring.val // // sya0 = x, sya1 = sya1 // Note the usage of the hidden sya0, sya1 variables // within event code as local, temporary variable is fine. sya0=tch0 sya1=tch1 // // Convert absolute coordinates to coordinates relative to // the color wheel center. // sys0 = x_center, sys1 = y_center sys0=colorwheel.w/2 sys0+=colorwheel.x sys1=colorwheel.h/2 sys1+=colorwheel.y sya0-=sys0 sya1-=sys1 // // Determine ring ring.val=0 // sys0 = r^2 = x^2 + y^2 sys0=sya0*sya0 sys1=sya1*sya1 sys0+=sys1 // repeat for all rings if(sys0>=156) { ring.val++ } if(sys0>=625) { ring.val++ } if(sys0>=1406) { ring.val++ } if(sys0>=2500) { ring.val++ } if(sys0>=3906) { ring.val++ } if(sys0>=5625) { ring.val++ } if(sys0>=7656) { ring.val++ } // // Determine quadrant (0-3). Note: pixel y coords are inverted // compared to mathematical y coords. But we want math. quadrants. sya1*=-1 sys2=0 if(sya1<0) { sys2+=2 } sys0=sya0*sya1 if(sys0<0) { sys2+=1 // In this case we also want to swap x and y otherwise the // atan(abs(x/y)) (calculated below) gives values running // "the wrong way" (cw instead of ccw). sys1=sya1 sya1=sya0 sya0=sys1 } // field.val=sys2*6 // // x,y sign is not required anymore if(sya0<0) { sya0*=-1 } if(sya1<0) { sya1*=-1 } // // Determine field in ring quadrant // Factor 100000 chosen more or less arbitrarily. // sys0 = 100000 * tan_a = 100000 * y / x sys0=100000*sya1 sys0/=sya0 // repeat for all fields if(sys0>=26794) { field.val++ } if(sys0>=57735) { field.val++ } if(sys0>=99999) { field.val++ } if(sys0>=173205) { field.val++ } if(sys0>=373205) { field.val++ } covx r,va1.txt,0,0 covx g,va2.txt,0,0 covx b,va3.txt,0,0 va1.txt="" va2.txt="" va3.txt="" Touch Release Event // Adjust field.val "orientation" and offset to match the h value of the colors in the wheel h=23-field.val// 0 <= field.val <= 23 // h is expected to be 0-6*256 (see hsv2rgb) h*=6*256 h/=24// Number of fields // // s is expected to be 0-256 (see hsv2rgb) s=ring.val*256 s/=8// Number of rings // no "value" selectable; fix it to the maximum (matching the colors in the wheels shown. v=255 click hsv2rgb,0 click rgb888to565,0 //colPreview.bco=rgb565.val covx r,va1.txt,0,0 covx g,va2.txt,0,0 covx b,va3.txt,0,0 lightsetting.txt="{\"page\": \"light\", \"component\": \"rgb_color\", \"value\": ["+va1.txt+", "+va2.txt+", "+va3.txt+"]}" printh 92 prints "localevent",0 printh 00 prints lightsetting.txt,0 printh 00 printh FF FF FF va1.txt="" va2.txt="" va3.txt="" Slider lightslider Attributes ID : 3 Scope : local Dragging : 0 Send Component ID: on press and release Position : 0 Upper range limit: 100 Lower range limit: 0 Events Touch Release Event covx lightslider.val,va1.txt,0,0 light_value.txt=va1.txt+"%" light_value_2.txt=va1.txt+"%" lightsetting.txt="{\"page\": \"light\", \"key\": \"brightness_pct\", \"value\": "+va1.txt+"}" printh 92 prints "localevent",0 printh 00 prints lightsetting.txt,0 printh 00 printh FF FF FF Slider tempslider Attributes ID : 15 Scope : local Dragging : 0 Send Component ID: on press and release Position : 0 Upper range limit: 500 Lower range limit: 153 Events Touch Release Event covx tempslider.val,va1.txt,0,0 temp_value.txt=va1.txt temp_value_2.txt=va1.txt lightsetting.txt="{\"page\": \"light\", \"key\": \"color_temp\", \"value\": "+va1.txt+"}" printh 92 prints "localevent",0 printh 00 prints lightsetting.txt,0 printh 00 printh FF FF FF Button button_back Attributes ID : 31 Scope : local Dragging : 0 Send Component ID: on press and release State : unpressed Text :  Max. Text Size : 3 Events Touch Press Event page back_page_id Hotspot hsv2rgb Attributes ID : 6 Scope : local Dragging : 0 Send Component ID: on press and release Events Touch Release Event // https://de.wikipedia.org/wiki/HSV-Farbraum#Umrechnung_HSV_in_RGB // The values range from 0..255 instead of 0..1 // h ranges from 0..(6*256) if(s>=256) { s=255 }else if(s<0) { s=0 } if(v>=256) { v=255 }else if(v<0) { v=0 } f=h&0xff p=256-s p*=v p=p>>8// / 256 q=s*f// 0-256*256 = 0-65536 q=65536-q q*=v q=q>>16 t=256-f t*=s t=65536-t t*=v t=t>>16 // f=h>>8 if(f==1) { r=q g=v b=p }else if(f==2) { r=p g=v b=t }else if(f==3) { r=p g=q b=v }else if(f==4) { r=t g=p b=v }else if(f==5) { r=v g=p b=q }else { r=v g=t b=p } Hotspot rgb888to565 Attributes ID : 7 Scope : local Dragging : 0 Send Component ID: on press and release Events Touch Release Event r=r&0xff g=g&0xff b=b&0xff sys1=r>>3 sys2=sys1<<6 sys1=g>>2 sys2+=sys1 sys2=sys2<<5 sys1=b>>3 sys2+=sys1 rgb565.val=sys2 Hotspot light_touch Attributes ID : 17 Scope : local Dragging : 0 Send Component ID: on press and release Events Touch Press Event vis light_b_press,1 vis lightslider,1 vis light_value,1 vis temp_value_2,1 // #### OFF Button ##### vis temp_b_press,0 vis color_b_pres,0 // #### OFF Value ##### vis temp_value,0 vis light_value_2,0 // #### OFF Slider ##### vis tempslider,0 vis colorwheel,0 Hotspot temp_touch Attributes ID : 18 Scope : local Dragging : 0 Send Component ID: on press and release Events Touch Press Event vis temp_b_press,1 vis tempslider,1 vis temp_value,1 vis light_value_2,1 // #### OFF Button ##### vis light_b_press,0 vis color_b_pres,0 // #### OFF Value ##### vis light_value,0 vis temp_value_2,0 // #### OFF Slider ##### vis lightslider,0 vis colorwheel,0 Hotspot color_touch Attributes ID : 19 Scope : local Dragging : 0 Send Component ID: on press and release Events Touch Press Event vis color_b_pres,1 vis colorwheel,1 vis light_value_2,1 // #### OFF Button ##### vis light_b_press,0 vis temp_b_press,0 // #### OFF Value ##### vis light_value,0 vis temp_value,0 vis temp_value_2,0 // #### OFF Slider ##### vis lightslider,0 vis tempslider,0 // #### OFF Color ##### Timer swipestore Attributes ID : 21 Scope : local Period (ms): 50 Enabled : no Events Timer Event swipex=tch0 swipey=tch1 Timer wakeup_timer Attributes ID : 32 Scope : local Period (ms): 100 Enabled : yes Events Timer Event if(dimswipedx) { //page } // Right to Left swipec2=0-swipedx if(swipec100) { //page } // Down to Up swipec2=0-swipedy if(swipec<-100) { //page } }