From aeb867d4abe18c9bf6701bbd9de9bc474e8fae9c Mon Sep 17 00:00:00 2001 From: NP v/d Spek Date: Wed, 13 Dec 2023 00:01:23 +0100 Subject: [PATCH] Touchscreen update to explain the new features added (#3405) Co-authored-by: Keith Burzinski Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> --- components/touchscreen/ft63x6.rst | 61 ++++++++++++++++++++++++++ components/touchscreen/index.rst | 68 ++++++++++++++++++++++++++--- components/touchscreen/xpt2046.rst | 14 +++--- images/wt32-sc01.png | Bin 0 -> 21923 bytes index.rst | 6 +-- 5 files changed, 132 insertions(+), 17 deletions(-) create mode 100644 components/touchscreen/ft63x6.rst create mode 100644 images/wt32-sc01.png diff --git a/components/touchscreen/ft63x6.rst b/components/touchscreen/ft63x6.rst new file mode 100644 index 000000000..b206d21cb --- /dev/null +++ b/components/touchscreen/ft63x6.rst @@ -0,0 +1,61 @@ +FT63X6 Touchscreen Controller +================================ + +.. seo:: + :description: Instructions for setting up FT63X6 touchscreen controller with ESPHome + :image: wt32-sc01.png + :keywords: FT63X6, WT32-SC01 + +The ``ft63x6`` component allows using the touchscreen controller found in +`Seeed Studio's WT32-SC01 `__ +with ESPHome. +The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. + +.. code-block:: yaml + + # Example configuration entry + esp32: + board: m5stack-core2 + framework: + type: arduino + + i2c: + sda: GPIO18 + scl: GPIO19 + scan: false + + output: + - platform: ledc + pin: GPIO23 + id: screen_led + + light: + - platform: monochromatic + output: screen_led + default_transition_length: 0.2s + name: 'Backlight' + restore_mode: ALWAYS_ON + + touchscreen: + - platform: ft63x6 + interrupt_pin: GPIO39 + on_touch: + - logger.log: + format: Touch %d at (%d, %d) + args: [touch.id, touch.x, touch.y] + +Configuration variables: +------------------------ + +- **id** (*Optional*, :ref:`config-id`): Manually set the ID of this touchscreen. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The reset pin of the controller. +- **interrupt_pin** (*Optional*, :ref:`Pin Schema `): The touch detection pin. + +- All other options from :ref:`config-touchscreen`. + +See Also +-------- + +- :doc:`Touchscreen ` +- :apiref:`ft63x6/ft63x6.h` +- :ghedit:`Edit` diff --git a/components/touchscreen/index.rst b/components/touchscreen/index.rst index 586ec40af..26ea94196 100644 --- a/components/touchscreen/index.rst +++ b/components/touchscreen/index.rst @@ -5,7 +5,7 @@ Touchscreen Components :description: Instruction for using touchscreen components. :image: folder-open.svg -The ``touchscreen`` component holds the base code for most touchscreen components +The ``touchscreen`` component contains the base code for most touchscreen driver components available in ESPHome and is responsible for passing the touch events to ``binary_sensors`` with the ``touchscreen`` platform. @@ -19,28 +19,82 @@ Base Touchscreen Configuration # Example touchscreen touchscreen: - platform: ... + display: display1 on_touch: then: ... + on_update: + then: + ... + on_release: + then: + ... Configuration variables: ************************ +- **display** (*Required*, :ref:`config-id`): The display to use this touchscreen with. This will be provided automatically if only one display is configured on the device. - **on_touch** (*Optional*, :ref:`Automation `): An automation to perform when the touchscreen is touched. See :ref:`touchscreen-on_touch`. -- **display** (**Required**, :ref:`config-id`): The display to use. If only one display is - available, this can be omitted. +- **on_update** (*Optional*, :ref:`Automation `): An automation to perform + when the touchscreen is touched. See :ref:`touchscreen-on_update`. +- **on_release** (*Optional*, :ref:`Automation `): An automation to perform + when the touchscreen is no longer touched. See :ref:`touchscreen-on_release`. + + +.. _touchscreen-touchpoint: + +``TouchPoint`` Argument Type +---------------------------- + +Both the :ref:`touchscreen-on_touch` and :ref:`touchscreen-on_update` have an argument of the type :apistruct:`touchscreen::TouchPoint` in a +list (``on_update``) or as an ``optional`` (``on_touch``). + +The integer members for the touch positions below are in relation to the display width and height: + +- ``x`` and ``y`` are the current position. +- ``x_last`` and ``y_last`` are the previous position. +- ``x_first`` and ``y_first`` are the position of the touch when it was first detected. +- ``x_raw`` and ``y_raw`` are for calibrating the touchscreen in relation of the display. This replaces the properties with the same name in the touchscreen classes. + +- ``id`` is a number provided by the touchscreen to uniquely identify the touch on a multi-touch screen. +- ``state`` indicates the state of the touch. This can be **1**, indicating it is an initial touch, or **2** indicating the touch position has changed/moved. .. _touchscreen-on_touch: ``on_touch`` Trigger -------------------- -This automation will be triggered when the touchscreen detects a touch. +This automation will be triggered when the touchscreen initially detects a touch on the touchscreen; it will not be fired again until +all touches (for multi-touch supported drivers) are released. + +NOTE: This has changed (from ESPHome 2023.11.6.) To receive continuous updates from touch drags, use :ref:`touchscreen-on_update`. + +This trigger provides two arguments named ``touch`` of type *touchpoint* and ``touches`` with a list of all touches. + +.. _touchscreen-on_update: + +``on_update`` Trigger +--------------------- + +This new automation will be triggered when the touchscreen detects an extra touch or that a touch has moved around on the screen. + + +This trigger provides one argument named ``touches`` of type :apiref:`touchscreen::TouchPoints_t` which has a list of + :ref:`touchscreen-touchpoint`. + +This trigger may be useful to detect gestures such as swiping across the display. + + +.. _touchscreen-on_release: + +``on_release`` Trigger +---------------------- + +This automation will be triggered when all touches are released from the touchscreen. + +At this point of time it has no extra arguments. -This trigger provides one argument named ``touch`` of type :apistruct:`touchscreen::TouchPoint` which has two integer members: ``x`` and ``y`` which -represent the position of the touch in relation to the display width and height. It also has optional members that will be set -depending on the touchscreen platform. Binary Sensor ------------- diff --git a/components/touchscreen/xpt2046.rst b/components/touchscreen/xpt2046.rst index d000fa970..f3b8ac79a 100644 --- a/components/touchscreen/xpt2046.rst +++ b/components/touchscreen/xpt2046.rst @@ -108,10 +108,10 @@ values nor ``swap_x_y``. on_touch: - lambda: |- ESP_LOGI("cal", "x=%d, y=%d, x_raw=%d, y_raw=%0d", - id(my_touchscreen).x, - id(my_touchscreen).y, - id(my_touchscreen).x_raw, - id(my_touchscreen).y_raw + touch.x, + touch.y, + touch.x_raw, + touch.y_raw ); Get a stylus or a similar object, run the project and touch the corners of the screen at @@ -175,9 +175,9 @@ using a display lambda similar to the following. display: - platform: ili9341 lambda: |- - it.fill(BLACK); - if (id(my_touchscreen).touched) - it.filled_circle(id(my_touchscreen).x, id(my_touchscreen).y, 10, RED); + auto touch = id(my_touchscreen)->get_touch(); + if (touch) // or touch.has_value() + it.filled_circle(touch.value().x, touch.value().y, 10, RED); To be exact, the component does the following diff --git a/images/wt32-sc01.png b/images/wt32-sc01.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0ccfa03470693c4d1c516b06f03d7c5fd15f9e GIT binary patch literal 21923 zcmb??RZtvU&}D$&1cF;2!Gg>{@ZcIeI1GckLvRW1?lQPL3^2I6Lm=o7Tmm7u2cOw* zxBiEH-KxD0w@=-NKDX*rS9f2DR#TCCgF}V$>eZ_^3i4kxUcEvA{)aoT(Egjt0tS{9he;y+R{OmvJe;X(om&_7>S`&wZSCb*&Oa)RRUWLLcd#u zj(Sz@^W_o6%E)pBWQ8KKN(ot`jHppZ)~X@vz9M02$VPQ!lP0o7^QB1((V~rL10mZ% zh)x|u4;V3^hv+j$c1ab?%hfYakj})>`7TG9_tm8&N*%1xA zh_26w9zjIE5MoFeIVy}C6GcvnA;)Bp6ROA`n&^1M$WnPk!+%`bh*l#cOc2>3ii8Th zRB|HfxL+DMk)vYBQDsDfG@_apIif^BNc>W%E+i&~Ec$||H$=2pBHO+qi{%hq4v76> z`4)Mxg>~&|1$Fp z(aDCGGJaXlepwEGSxH15%^_#fkW;b9gDK?30HRbBIp&3&4n!{GB8Kf>_My)U-w_uh zh^rsS(_e_~7Q|W^V!!95kS;bZ5^=waxLrW}TYah5KveL(oV33jHNBkmB1*ZDgYt+% zu9tlFmmHS4xmiLIQW8?KI7{xwZfQh?8lqGcng7LGpX0ee4w)p68ixs{|YI&phC7?sXINyG8 zv579a>pKK#9RI5@UZJ2ljC7&D38bhX#1#AF9`DsvkQ;Sq*wVC7(Ocdx-zRv zFy^;5X$}T?{4I?MYj_$jqjE#?-;O;4MNugv7U9fbaFVTfr&ofh-h)7n11Xsd6Z`#> z?{TZttK4wRU~bd_>>+B0XL?lSVFMXb6lK7`^w+EJC|ERpy#1HHAD{>RAqTz2@&E#+ zw(k^p<>VSE3s8ur_w9@EB@z~vw38WV9L@MDBl_-@WtL7?SiyDUH+|(5beC!JwN{VK zn{wqj#Lhw0@$H&wbYMj?iPWwq{jl6GoVR1HbpDkL4WY=ExM04M<-p;(8g%^uJirGG z`hQ1Mz+wGve_eRjagN>btuXlwHWOoRx?UmJt-F($tUXE*IQw8?qewmNBTZ7CN75?-%jKeHDt=)7Dc zU1vsY#Sr)1uU{pFrwpb39*^Xv$%_B{RS*Ca8WFo5I_U8E@D}&F@`oU^)~BDrWA;y7 zzoY1Fl^v2X4wz4T&&2fXd#WJoWOhkID6|b7_*!o^>HSpVlQmP`Y*RONNI+_p;T zTTW48uFNUwX5cR_>9hm-y4}o1{^i6`dK@(j=^4@HqyqwP$5fB91F?3cOR%8TTvOYmm%h> z_>njp7QXP?!q=wZsiSrUziS2Tpon+7`0%DCgJ{s(j-PuxMc40wWga0(Om>YFy*7&CEkSyl@J+dVv8pD)gW0UqsFBqh|lQ z-TR3(rTotK3-rFXYlG{Y>UD-`$CUNbFHVlh)Nc<_x`Bn)_Y+koE6hOY+#XW>15T zjR9CCED4p2T)FlJ%Wm_$qF>r+c0^>E4Z1eY)J|2}md|gUZ$Cfr&dTj*K5d4hgA=io zYLon%d^|6>GN}JtJ)q*(1{G)|&lGF@={;1wubjjBEKywW`||$o{8Cj9ps!qADLWR1 z1<+*Ov)Xas*}|m4d3NrVxOANWD?oHP2~h9^_he}F8y5cAc5R3rE9e^-2bJ|KCCZNa zggCa#g+C2ctiRoF_fvs}#Y`_M{)tP+im4qwrZ$bYII84Y9o>b z0JgB~$<6vS{fGQZi$TT*`~B~ABlK(y#lLX0GR(>hp1_ZulJ)pHVP&CZPGx^d&2>4T zgG^e>A_kM_RVi`gOeNu|AMGuem0$shRpR;v0#Udcuxb_JcXV$cMGf3V#6mm_2KH5~ zN`?l*Q|OvIKe)TznC=TyNo$#vflvS0-r?Q;>mZq$Ne??OU;f;`nge(Y%$OjmSzF(D z**HbZpn=h=QVIOhr{yMRkpt0-$yp2XXetfOPA>988I163bn&7>Z}{w@50Ft zf5jj|zaH1qB1qZ2^4koUdx{;V9{L)Bo&qCxZnKaONaDxb(&=92O_?sM;2;FN9K9I# zMF@so7SN!A2fk6*1P}Rem85GbR6!3(C1V$G%>hD*fD8C3&aPC7q|kQ43f!st4vs0AY^y>a35g=m zzy;8by-|N3LB{c|mZ>}aNBO)O+f*tpW52zdM}{ihkJOFTI)1A7s`}P}qi-hBd2j#Y zSyojM_eX}R=2XbFtpvE=?5w6T(?OZ1K~L&WcwO{k9^7tZH}Bg69;UWT@sQ3HaWVaR z{X{d_^FA(#i&g3-V;&GRK!(pvH~n|0`P#YxKdk`w1mtXs90ah5U{`gS@Qxa@6d9G$ z3jr4&v%w&1dARJH#}5H_AC}G~KV5FGo^Z8A*`73={h0)a!c(c2s*kGuUYkObNJ;*r zkN^8KVtIV@xO-Ln5-f4MGgmUz1bT88zksLy=?5BS9P3<=j*$+AgmCSBfRj-4uD?=#58YF5qO024^;H%cE!+2tLw)=XuTD{+5XIG7d*>en9 zZkZ)V(cpnEE0O}oP3W)T4mVZ=*XEg;e6>lj?%?Pz3|ZY)?m}6<>Qd1ax~-=RZbx6P z(RSy8?eu9c6+uSV7n4cvh11jwHz~Hu;OP}~1tcBlVE5dw_?Q-~4~;yYj}sXl{C-*b z$EI`dD+)>HF@f8wx^z9Ht4e)e%~MA$a@=bcGrPb3J{)2NG#p0TN`Dh?zP4U9~}FHxxo_zL;oPw z6&G~YTzp|7HG775lTrX~_T_4Z+->H&98F~&PRrF;C&}$Q>d?Qrfo1QGUE>5=`P3Y= zHHouRqmql>IYeg;#9QS4EnQ<~2w6GyjAUH-6u*&Cz5u?7tkU8?#eX0v7KeWG+1MW# z8eP`P)1o%^jSz|Y+-lR8t@85;r_`umpLAJanztThN<^3l)@v)?(S1*5!lAdWrwXr^ zymId|WmT41W4yg5GSkgwpQX%TICig}O3`G#M{1_Hm@l zl4Ygrc7uHzJ;Tpy&oO5nmjb^QIm6kZ{hA>pDiNq~++Nr3 z+_N8O*ioBZJ0|;EL?Oq{;4v|`+U}tJU#(o6CoCot@8I&+luc>zlt6W5>#?!+gFdJ& z8-v0SweV{g#sb|Q6nXgcN4b}FsCNG7l*Y)Cq z0Zjo+GvVi=5AW*eYa3U@b}I{0cPRP$V|h*@gPZD>@3ISqbQfCrLPqW z6^QWa9x-Ji;@SdqW}m5vMSQxxR&CpRU_gGD9<5^EgKS+Wb=Ff8|KTcDeV!j*?s_9j zNm(|;*7@|vTMr6~S-|mmdiuO%D1qu>&uqs}xg4u{5v*)e4R^C;o-Q+186dwu|yPis$ZGBmO7 z8idq=m9v#pb(bC`K?jxKNQ`5v^BYg#oXo+@%(-!^%1^zFQ@HTC6iTh;j2(ZZYPNAE z-&>iVogVNXs$S4=MFIn}&v>Tn>sIiPAkulZb|P!^{SUAGKhhU@?BqsecyEs^wl;ha zkVG_>BVKnDWEfsSOKCj~n}3$awZ@JXVCP*>84x!yk~RC+fh0=)>ZR-2`8K zh!D3Ds-*><`-NFrSy^H6*kol`~~JV zNWbDX{Nm;5$tD&?t&|LFM?nDwJkXokWuKXOTqQm)X(gB)R=R@F@vzZgvDWcerg#w! z*eNvayJQHHq0UTe3dAGTg$XKBdzm2cLx)B8P3q$Me=XP~n}R8}0SfD&9oW<<|9YG= z{W{&x()=MexbnjYXU|fJ<*ht6naHq0v$VwX-|dWC4|m6(l4G+tAZGN~TpP}zlrY8B zcvAJl>6yt;36(1tS%NYEs{4)*msIyJpOGG8qeoo&lb%J8+j`MXEDGApVw2>_aI{B1Rr+ptt%;FqK)|5E*$ZCOsWW z5FSCfwsVV{jnO}lsU>(6U61k$b!;U_D$eBY`s^TVA5Uy8%vo^>!K;p5^G|mRH&OKd z{`UY5n;^6~ZgQqGEi%xrqE$iR_qgAe@4Bo2?ORUAj7Z1sI09**9TcNKQAsV=*9vX-U+O#>=a za|dWT-Bk^tT$7A=kqvchNpk`$*-PSY4f1`AKY*YcPZw$8rS^A1|;+)AFV1| zvcUK|SsBH^*lwi}Y>$12yDmVI7pOsBWW)Xf?z{0GthT>VFnA+*blRrBSq;O`pW+7U z*O1H1?Y<5UZ0LL`A3=`eAU~w{UM+G8UY>lRjWv6J(ztwKZBOx}iomypSd-q}Mt6CfyOn=n+Z z5uJi2m>*3p9!OL2xJWMF&GbPm!L&ynL}JS)nAY;u-h^oD*Ui$~QZ1bfji4oJnk#zm zA3y#AsR3FcnN&9Hz2h-R%f+i^54n%(m1IsK4WO?zH|dcW(WTjVVzpSSI%hTH{)uz& zl&|(`6RBjT`JmFC2VQZC3Oql%TuM1CsCb z@H}E0#EjKZGve94skE;!ggTR{ryp{mx93w;B~dOF;KgmB9LE z-I}fkJri*F!jV;N#NAFS9d6>Z#MPS(P(_XWwz~PTI%g9Vu>5qe?m7=vetqz6Fw)ML zD|}{q$mOT;Sv8!9!?)%fmJTb7dhfq<_!h1(FmFghJ=IJEIYHM**!2kQ(H2%3K8hdi zX53WKbA~%g$be=8Y1h{17;8AmWHelWI1ern z*p6~?VrS)9g1^-Yjr$&~c<|Fu^0U9BY8wz{N&ih)iwui_X`Qz&B~r-L)Vq$&b^LXs zqGYt@#5q3n%N~Xm>gi8Z&o(xR@K-hi!N*zx$M;;5*DShutxfBCua~S(JMb$p<~nz} zR1wb-&5ccst=?ds=Jp=q!s5-GjvngP?7t0@PobJ3vH_*!gONSESY$_b?tXsj&32AU zD1%KPme9Wx{En7-dZj<1rz?R%1@0zzswhj^72Fa05gbAPS%Ur-?tVBs;}d`P3x1>!J* z0!V|FR~nZGJnU!4#j)w4Ky&ZcD?{Z+R2;46^k+;P8=JmF2R}?(E8EowCVg|vS*+O_HETs zS8r5zt}?i+Wqdruv-kBY;WYXIGo_>y>||Jp5Nf zx?4wDD3JO2q|aVo&~Rfd*4R04l@wggLobSJY--49*cw+G+J6aC3DQv=0q`nDbmM|85##)`(Ln;6DjkHO7$oc%e|M6G9ZA z!PnQ}m8gY^wYCRr)f^_B zdQ|tr$FxQLBcLNqTB@Ie)!>3ITrVW1qOtm1nNqi7Vq#+5Gl(9@pbFp<)IIX3z6Ko=hG!0D;s>m{Nr@hpS=d>#Fa&GicE27AhnFt9kiFtHO^#97|-|%9lGO ztW;XKb9z(wRn(>vdzCS;i>}aHZ6PK3%lY0kf`wV#dNwxU6Rtel-ya&d1+#27zICw+ z6ME}A*txPjRI^Lcp(_u8?+K`HYXmaPoMl@0BiBQcs7rVOucx?S15!iu59xD=5;sOzo_%EC3 zs^c76u8plN+Pz~u`?Z;V0{^ipCL%JsK^=SRsfw1VwHv$UWBw^6{V_(vSovI_V8GB3 z94})}3XbedqoRoAemciL@`im=`6J+UUN-OM#^V;+waYSL6pn6B%D}mrr>Nw-VoFdK zLA^`x4rm8l z$L+^$4SAk$>JHZVm!xN%kCP3K^@=F`_c5a(^S;F_nVvc!TAhNZeSc-MBu0klYdSBt zdvG=Saoq~jXYyWMwPvZkflE{VSsB8B)PLE^PSNRU>W|!{XCYl-CxrXtg_1j3#A*}N zG^}*4OlE#u{s$Hl;w2f;Cbl!b@tCJ)!^CA)XRV>hcny!UCZ*`6hE1X@$6}0Pi@K_+ z+0Wh|ZI@9XhUcAq@XbzlTZ8^IE05p-M0CXsf9HRnXM1sB@fO1bNl%1#d>>S7aG}6cA51HK; zZUzGLTwif-rE&OY!C=Z)znA60V~*gm;L@_I89T82vx^QzrB)1H@zUmFxV@|+HYzD! z1}z8OfLED^3IKcTn-5o>t)d)n1lnADe|u$GV7`q-}6|{v{06jITdr zd{Tu+{M9MXe|)YQT11yD(&4wPXi7D+LQ~h(1nhn+z}Vw4!v}fPNJ1Odx;Eo=3=kQd zcgX*7+*#<2X8(r_t7m$D#OtZq`rr2>TFb^XV%J|q@}nAsepj81e4jX1Mfb z3~5s7za=Y|Nhg&H6%LMpmRrA4TAdKh_zO^pvznkI<@~7+f2@&n?hKG5Ieiai1ad7` z_Rp)+FXn55(+atpS-QH)F{Xw)8{o?sy~Q(w`s$pix0lmf{kJY?$1R;tbf5AEC%3B| zvDO3DB-jWmhy-Z(!pmu=5WgBw8}l|c8297&#!pXk?fyEdR-he9sLFszP`?ct8p>#O z7VO+-RlUwn|1eiHZgU>epM3{QgM@1rTq;h5bf8Egw6dQu8l*RW|O|5LZ{E- zY1%V&G04j5c1^AKNa31!pZ;0NT~eT-%DCy=rq?qF=5sS>#`UtoRNU!tT2k) zy+XvW$w%G7?bfH|;?W?FlSA`8Es1%8f}*oad49qiMd*4-5IWsUR3Ph6te==Huf>*l)BK;y>+aqNROv$@aGuE5_o^C3sve%Cit5W6mlQF>+JrB| ztmDO&2T+R+pNA`l0ZRMjLKYh0FV)VZd)cAcI*$fNC=14-DMk@wWy5GNahk9JmmNETTVu_-Cl0LrHh)6oaNM2m^JN`ojER$LJmo)=97Dld*;?ifyD-FF=!T36Z&SVFB*i$EYbkNnqMrg%0;6vn61~sWg zjRtbOg5Z^U+1l(Bibwjaz39>Nh=~V4_3B;&STBUMe-x}`)RV~V*5RQj347;Se6bTc zhBaH5448NeW*0HRfOQe31a_R{(I4s0Y?9_ROuE&gUxddM)d=CVqrSCH1g6#Jrh`Q0 zW#c%dRQYcL{g9K~_=-|B@4vi;4<-m$D|1zPo>85|zuG*d3oc9ll~T@5=bGuZB9dUdXlw$Hy{%t;2EW9vRdGUZ!%^o-qO zTJ4~$HQ)9X&Fjt@PF>w4q*3*uP{T#P%9P#edEf4C*bphpq@Q2EOxK#h(~0VP60k)} z=SS!}=*a%J)dTWai4!OCYo0BZI=(LA00YhiC7?l&Z6?Hq>)kk=b>xKif@Z zgsm0$WLJhnMr#=2+qy*7E|*I0om^M{=H5~t0CQ={RGR!QUHOwUdF4WPCnsM`dD#-; zKzri6Xz)X{q5$VK;Zac2s@nde?a=+IiTRZ=g9R82qpD@QfrE(BFucL}&7FdN_DARd zZ%$0_hET`;dDKI1KBU3M64^8IwL^nrGheG4|np9!PYBLt$=__=N>F^Zj9Ssg`DPz4#qWqo5AAy{R zj+Xr`#M#|c!mp$L_od1 zk@)MWQ^jjO&VHrde@gMI4uP(&^eh*H_2OH*CUo2OGa7mhN}mHphZ@_v8=QL~&Csxn zfRB4<1^$%D!F;QhapB(eOCQv3wI+8owAxGY(Wf_87rvFJ;r>jFgu@Zwm^4|rtpH&@ zq3q~!6QPdw&Q8umw;ew)yt3gHHHHj_7#w3sY)`*^ec@`Bj<@1|?Y&gJ$9C`2vmHSm zx;-m2yBFaWhhK*0Ur;tz*G&RBY!LyDq-W=5XCLKgd^Z4PWh+u*0z8HfNEfaC#bRV* z$4tgO=#)x;sYL)V6`HYl=hM6v@kV&uV@h50tJ?69)6#v?Gn<2MTX~bJ7BPq4WO*{i zwnmhCSllj24p{eaC2mk@fP9%8j9*n)&BMLL#rn$Hbb42z|xzgZqISPE%u*hdpk~tjT63( zW_UyXi-fjsm8N5y+aCwZJ-k8x+dRJ6$BpCj-aGhO<4X z8@O{#*`iC+qajf5+CR9_@-6MZRxp5_k79Vf$^Sf(Lqy!?p7Z1SdtV0xO(AN%y?wFe zJNtm`p{U3%XL;%Y_U>=nB~@iGXxo=tO?@1DCCB)s3_4U=7{477;WAsjK|pOPD5Yvj zA45HYGjT?)lgg;&+I(NOX``2a>1}){RR6V)5p)f1ARS%Z=U)~=cY$vPmaQe7UJIP8 z7x>9F|FIC#ER&g*#%=%eMd-rz_a2$bnxw$WFAcE%i-ycJNIyJXDE37dzlV~IBS)9y z>ry(vxHNS9j~SoNw(5&vA0NxkM+cGmJr1&+j^yOzOEY`w-I$m3vp$?`>x^gqz2lq@ z@B6%J6G&|+jbaqplCv2&&Y@XU)dXiVqrM01pbW~WrJPtt~x8y6h zVeW*?;uq-}Un%{j-)7{F8ny^VY2>3v`_h&8`@Mc#V9hv1*;qa>&C=0b6g_BhJ`a(KlOv;`tLM$x(Wxx%`W4uiK#_OfJPu?G{ zG!`#V<6ChjaJn(o8{BHw_A`QK&Cqx0qWe17%LFK|OPE$W)ESo{wMX9qo0r0?YEg>; z4&(O;fcjjHm&NJd4{DfXUn}85eBbVq!SuFnuthiuv7Jl};|=ef!(Tqb1`m@j4=j{_ zGJ4UtKnsQ2ap!x1Kh_lEES*9ZaddlzhH{QSZR!EY$Twv4T8WnQdj-S4ovPI>7Q z5J5^xd3f~V8~3qby$=d!=1;N;EhTL|GA}{GipK4cAPftj$RkQ<$sShm~ z$rPtb{49nv{KfE>1F~Wy2&NHYUf6BQJGbVnPv!bKhqOTQ4Z8m6{8QWFuv$wH;iv4; zP=;2JkdsJ+4%sf+TX^FMfxL?Kl72SE@iQBeLp*-oevBJl8r65Qv@)zEExM|lyeu;N z7Ja`ESX5o4KwBC9;(PwC)Jv!pja4ZYX=VKlaAFV4XS&mb3q}# zYtpi^Od@F|j@B6=1X68&UTJFFByuCv@n=3aw^zsIavT*EYjrk*bf9i6<`(KVsUax?hBOq{C906c1yB>kKdt`i{oJb=@w8 z(Rb>rj0m-V;#7C}tn+kd>u|F)6O3Tj$lVx16ML`E`!rjAamPO&BVEpXdT@uoGOM1R z{0UKYy8C+4eX1hZBLni_%ic{J3PaXG5`mbq{|6s$2m^j1;V849BbZ= zg$-$qdbn-GE$w3yBKe7@eNCZjFMz!58fnt6=I_`FM7-bH6Q6BFB<|9fTG#m*>)nM0 zl7snM$B$p`5Eol5Uda2$_ZQ~uPavfJr`q0!RadAzQ;zb!tJ49f%Ph7*i!NQHpv$p2 z4RE5;_6MWu$#67MZ))dH!o>#7(jSKgPEfmV-~3}>=ZuuXHwLUBQ z({1#P--xUchWLWGAIp+{A*po17E@%CHY%!n2DX8RhP)>FmwytoTh(?CYDos|Mtao0 zgww_ys*3&_)_fdN4f8O>j*vC_W?J9sJUtoq%br@+^GwiRZ+o!6_yH}A$9j6w<`$Zj z8S>7!3ZZeyYkw>&N=<#~D4Oi(Dz#bZNpLfXw${p=qJHkFdP2as>82lpZAx& zFNJfD#l6z%9aR3MKc}y-Vh1M&{GdqUouo$&I1j^AUKh{$BW zyBeodO#*PVKlD5h+)Ez6sPz7e*G1d?hRIBQui{5KYZO|xFvrf{pI~*p|2mZt0(>6c zEWZ$w{lzQ~4lgX?or1$cBhWb|hknv=QRmu}1QGu$HhFA2_(NenJCm2Auz}nT{khPx z^N9{PYRc=U=R|P5J%xsl_(<`1-|=I{C4 zzM6Eb{v&7?EW4ALKM3Z7$^TetI&qLHGE>B5v$=U&ouNYzr=ms1M(Sot*xc-{w+CEh zEZaV6Pd6DjdwO$mQU~A&Ztsk?G4!oP!^Idb$lRYqxshub(SLl07nP)npD3j&-Z8YAQ)3E=hfw%IkygTS<$}CIudy0X>}3gq#33BseKrNkp8X?b0Dk zX84|1)O|djWSj{A>v#2REDl*6k!AtR5gOZE=J-?2Y3y#AE;&;l!~cT1#=Jtf-E=%@ zI~(Df42K^yS})6dY2@;MZ4RG@oj(zbi=EE}j{bJp6n;EJ`agX?`St0F5VzK3??HV} z1~-|&7W||Z3F|Op9}7>`$NjUjFR}NnM21Gy`@-{x z<>BymcXB7>{raiduOOR{E zpawXw;82N1PG^sE9Q$8?G69k+4<#b;VYi!i~g9IUgG z>=N=Qr2KUMRsHnN#GD(^nXY8rjF@pIGJI7*=z5EUzNAwGYJJ9J_;_#?C&Q13Lbh&5O<)V^mEYOFXsf^6$$|#no5Be}4 z0a=c#K3f62ZG0?e#|Rq5c%|R`eii!ocCgt?x|TO5lDF2i=)&XsRon@_UTMoQ9%=uo zr<2!`^tn}vNSbl|T=Tq#)qK+@j))(9Zd|f?D3An+IJH|Gnpt1UO&4jfQ&<@Ns;FJ(0ALF=$X0{7))TG%dq=4x zFtyN5QiJ<2!tOqe)2S)lz=6SQ7QQoR+4H(yOQLE49ce-pQQG$zGnDkm-wuFg z_bZk%OcitY)jy4}o8DzimNK8@;4QXji_sb+0z7C5O z$m?QI`)WR^D6F)6uDxmlB@#J>im+20hq6KgomQ@1;1c}5M1j_Jl3kFTC7CGTh7?#TK`cm%V6&r|rkyyqs%L2H5BlJp}zL z+w(R+O6D;&gy~a_m2)j7kS4;UW#8D?5p@xd|0c%<2AY1Po7)DMX|n{VPy?>7nkrm- z2YoYIH!#hMl#F!k50}`PNTUxL3%lPjvX;N`=n3LL!-cvZs`U4>DPIWcm~QOE2bJjt z!*3igCi8}bv?5>EbjaE7#4V5!eA;_kn77hZXI41}U(I9hp?&jVprOi|&)1o2|vQ+#Y<#{k8oa*-WT9o9st>Kx= z@*_G&j95 zq@y0nSKjU9^Xue-FRSVZM)~`w z(eR?5fA36y&A>4X;NPP^hSlS!%;8@*k1xLUXX_0q2p(HbvyI$NhiZX04RA=4LbO7u zB3!F3E<GPy!a~9@?!5gHXE|SNK%Sl40Q3z3~qgFMniB!2?yc8s%w@C03VU zrFsE_$bYxLl-@DuW%M_K{t=<)b7<+asm%C}$fbO}c%y^c8k+RUVClZqf6v}6#PMZq zBC|(6RV@;L27}O!WYZ7xLeUvEV1_9>{nz#b_`-8AV%^rCQWzs~9yDvzp6%w|rp#RI zkJ{a$S9nh$Vd&P{9@SD@F=%0QOSXz{2F)Ncr%5z4ez z$bZ)!!snhRG02StIRLIes!5Ut{X?d{eiPvR7?$Zp6w+eRq=p5Pz!ZPY$1`a#sCypK zR4(uIqrqq4(c{?2S6M(Y3pZ5dw)F6D{hG4bxv#Rf07cOs9ZWF3j$hVdbJ})YyLv_= ztk<_{m{m^<{qwxC7019sX{~k$Md#XXkS(A7frWI~^2#e(_~&50x7sbbBi`WcD?ek$ zEasFWO{P!WsEr54rTO-fi)oeC%0*Rj+mFB@CD5RXUeRRe8^df@TCyGOi^AX z-pnA=n(g&3myK{-;x&&4^vAro55J++)eZenHd!IE86UoVC_z28wEO_kgyP5AK6AzE zV_M7L2y1*Stt2UQb4mGA8AoW>dDmPMSoK}j;qqOZUZ2B~9y>SLbb!z8LEY~U)|R+f z^#FC#8;Th=ZNbnot|W(XH2J80P2WUoe$_*QBtRD4kqXdS`QxG>*~e|7XEgzU`DC|U|HJ^oB6iE`s6qmoBSXO=j06M8i{o`|}gEHysi*gX7+MWt~B z(m+B;y`5Y#$Xj|!Dl|ha{|$gu%qHXRl`&W1opW%tIqR!>7OuhQ#L#iCvER}Cx#25| zC93kr(A9a+Y5FT4ZjC#kpUvV+d{oCpauD}^yjAQMg5$Zf`x+dpcF0c(v;dc;j zP+33DKswQs+DP+%k55A4(!i$yYgd!bBV3`fB{nj(G@^lso0j8`>2zJ*W2LgWNmi=WrvE1F>Dyme zMVA%#3(pL$xhqxT7{#N%-^P;e6xWKqnrk{I`e#A5PUSJhyDxY;E^ zW)oHo1$1!E2OvF4^4aLYi`u8Lk6GW+*rQY{{88{z@#Hn2(atp9dRYb+w-j%Vla*@3 zm_uEP{uX2}2mTDA7 z*HZOz+3ziG`ZwAg!(%}`A^*;TNejbHo-&2vl1aGC=4iJHJCm`$8jlEVQ?sV=ZmrjT zN=;mIu5UrN=+(%igvZWii;fyp5*>1dGrIbdN<@^`T3|WycHiT0ReYD*rV3;;JHdL- znxY|uE|yGetR`6V-P#HzNtU-XoO`(99Ex{Nq#HgEGat%{gn!k!dskX7A5(eHZ7ey~ zZ)d~t7!t?SGmAxPjcT@#ZlDw`EIz5o##=X|*!xBeHCtC#g>^{lia1aEfiUu?q*1*q z#y}|V6A;!ot4A>jjCQo`v$av^ky9zc!t}-Pf)k$0G}Rlus)eL)X@xIed{9~$?y@Kh zlWlLu&H`g=E=amcbyI%?b{{p?VJr3cYIE&8%m{f~z@Iu>Y?khY3=YO69ER3IrxBG3B*kDu9_s0(IgxW7?pn_YTOMh z4OKFAkD4y3!KoIv8*Tb;;1R{YNF4Z3Sz$3*`^`p5eV9at-+XrKL_?EP60YotEz%EjSfd!Eltl5Yh zVGHzE;~US@dk|@UO{?0`7w1$GTe`~Ogi%T~^|0s}sVA{sI)(gJ5BC1UJOcp;L9Yrn z=%C6lcnYf0?1%KC1c9B4cY}FQtq?TpcfgS+5x^r(nl~lKRv;PBQgfR)b3`qsTQTh& z=bRjq80RP}k)3_Q=jxBO3XA(wZLK;~J=aFT8Ok=RRYSY7OGOsYMe9om8&?f(knbpE zHjl|Z)p}2-PIP)7giSLVKDm;`lt!BK>QEY|LQptZa~3bNJ@dD${2}ipKw>ZiHlRxy zU-n5>I-QSTGmV3t%%Vl$HK3&!d{jToCW7VmhHZTU=Q96F5ehp=X#yoIXw6A=j@eup zX1g*_rDT2grY>gPd9A|NXq)0Lc!Zy;-BEjjH$6l*QZMf{a}=LewLfUuQ8U<_h{KR& z5Gq)Y6??h4q6q!4qSz3=JURAYTEQW*rjWZDNyWeKJwd?dOqk5O6Kfxo`o-EMe;?B} zG+cONX;6@hc+qr}Qn!AbtK3y3nN$sJ)bS-@LRQMQwoAEXIuVg97E z3}Y1zi?+%&sK6Tbl~@TC<2_|Nn=4~wJMZV!mhLar5$F;sf5`cbbXab36G1^1-L^5B z=%<>u0IEmo4wr$F)&Og#q2l!_FaN5T0-k4R^$dIiRHNlx28$vqraL*QXNcK8++XQA zXtZ7gDJabu3{%$1^Kz5#QY}bz=$jN$JulVsC6_|n7-176fx5G{X0T|jN@ACVKf=uV z7S8I1SOwp(2w^V5`q5ZvgiO7b=I!d+pEgq1lviT4hsOFMp9eV&P10fKV?keqj zyV7sB8LXu=R<^!@+9X(Qdv*W2AKu@44nFemBac4uTrb+6&c__`a$|*|%nN}P6?&}? ze!oOobxl@iO+o5vQwz=dfdkxC_G+W+lhMe*(?`2)LL`}%L* zd;8ulu*8r;*CVXl`5x7VmtsY0loo2kD;ccNtQHn958jfW2dpF0VsQ_9l>2f8TPHj}OsrMa3Ma8o~h0%#@8l5N+W6QSP`^#U>>N>#e z?x{|1_m4^!nWnGoc2(tf9Y@tg3Jy^()YS8*PHmbVun4sSTh-e@*6#ZpmZ92#+fkfW z-}Rloqjoz3TUA0*jL#hT@{xEh zc_j3~;7`VkXFB8 z>qgsioSvQlAGn;at7g+yjZUX+JFa2Wl#Z^{baF(?vRW;`0vHyvh!>U8VSizL%SBRpDbXT)|2Qn-)k!IN^DT!L7QTGz(RDhgh{Jj!E*%@oEtL}EOT}@iz!tEc zkcwG3TZ~MsR3fQ#&DVpE>(^<`EUSz6k2CFy*n`kxK!|2pd{dT*hn5MpJw}?o8M``$Z)%N=J zhTr!T&47n$ic6p%t4^@scM#t?1h=rPk2vUKAr(!*Xz@l$)DNtdAjS z5RZP0#ij9axjZgMIjjl5T9YQ^N-ZVXy2ezyP%kRXAJVi*6a0W8tH`eoN% zi9GAlgRHn^!3__KuTX#^Zt?@B6Y-V5`m>5sdAQoH8>3jxV*=;!ptvyOSzM5Nj| zXF5&W1R4P;RNrt^N0su4-0CKd=+Bu3Xfe4vL9JUeY%Qn}EURxclx;=Z>6%SbaXapg zX}h-R^@$T;4F-V4Qw3J+u)2`t@MKvbtWkv_OTb!4&K$laxp_J~(mglx<*|5@!MYIVEdgtO>EvMv2mSK%eovK-Cgl=XLDP6EH9m11n2N=61cp^E(xAAU zi4@DJRC;AOlS)JP3m-hN=Y>Eu2ll5=$Bm{ei^zEMFHv^-I zPbFv~_A5a!9bT9@oLn6$F+Ck0-FLn# z%&#KD6f4C0?OrBOWyXs))_?FE_6ZSPDLR?RBQwO_w_{X z>D4UW8Jmj5`2MQ<$N#sC0udy-nL3Z2JW0Ib;I&>VRVqvKi|a{{vMksZK0#*yI?#aH zfEsl|tvWD;^2iN^UF|b_Buq*H3vW|g@H{D1J=YvM5^hc0x+p_=nJankvHLFiz^I@_ z7gHvcdH7)MEQ;q?It!hFUYeYCWnDqAMupS?j(E)>LPfeYDM?GXaHB=X z_RZ=}r0)Bu1g#+|+#fu+k0WTM*_-$b7=`!Exh!mrEx^AEWlj^*)Iqg79RX^{2m%di zohrUHQSgF!6$%SmKlUhM!PhK-s5S8F7+D7~d7(*#|AET`EMZgBvFx4YTUes`KDVsP z*>2%T_5fET%Yqh?>(gU+sUO!o+S1yw_*#v;yOTdC3Uy%nd*4c2yf0XuG-1A{7di=1$k%Wibj8n0U|C^0v0NZlJ~7 zh3RSVTBugN7MJ2%mZDe|lFn+wcUuFa4yQwus#8OFhkyvEz>)^f02X_>0)(iC7_LXc z06#Jn3RV=euI8}rT}gZX^8RZ>grP2go41w$b$cwh^=y$5ega4GfoK>Wqj2 z6aKwb;M&^yF;9ovYK`CKZU@?R>6}~41t%SmC$db~nTCme>X+70+YQAl6n~I`!^GG>& zRJ%P&iEdI0yexF^Hu9$deTH$0!BQQ)=4e_qZ>pNkVC5TzrPwv3ymrFQJC+9lRyBkr zXgz`!?(}e2%ndIh#CT>|!!_ji;yP4_5-E`~P%;Ww1*t4Y%W_#RPRQvjd}|oqFS>pe z%aGC;LKeOe`~as3SUuMrXujs3H64Q0HJ!7z>S;boIpKC>Pjt6vj3$JPAf&{I30Ss@ z;-*op`CiS?445H0MO709V5z?{ZHqWnxwa@~0TT%|G>1m4XvYE>JcW0VIX}cB#vl6f zKCAfjm&c|d)PwQiL^%FL6s9y$kOiy=>`Ib0h!iPx|Ni@f!wqM&2U4l)GuLNur%C0^ zWVn6!fqKo@Zq~IxGYFQt(@+3QHMdn$b*+7qqB)K+<3&oy2-XsUBGqvLmP@eAUpZQ} zW>g7Qt6tSGQj|P{WdT+d`ZWUGudCb*U*xqkK%rs8mQ7I{60A$F06p<>DT$TVUDgjpE0a<3Os7($ZL>|$J7``oba`J(xNtzBO zCu8i1Zs={UL-k0*u^Xu8l$xE_^%{!dZDUh$IjS&o;wIF=^d>45OV1^$BE96Y8Z{GT zqft{ejUn<))2~+>hNqe4KCD3%kV5?gu<)Rt*x8{fkr9Joz2$q9l+yPaUKuXYpd<0M z(nGfkSksJEGETW@bef}r3Pr5NM2m%Tq#Q}1Lxqz{%PWjk28wZ37g=qGt#QQwNw7rb z(02_*?*vB2Py!d7-|M3bEJv$%h*F42Xe4h+t}Xhl`bhHRD~jRYU>Q!s92iy4@NQ6U z@H~usM>nd*4ZdIZ{pta2u>dc!ER2NUiUjM@%kXTsNaB%2h#Vf4bq7Z!HV6x4O0alv z=ekQI3}N1mmd$b}gr*1;6#AIh`=TMmc}@vGIxHAJ(`T!^eY&YcL1$sq_f4Y@Py!H> zFe%XC-Hi*6dJGZ9-hU}K3nVFmAd2GdZjHNpI4)sGIPUI*?M?O|=vp{BH^AWl8~`U@ zXYQZsuGODaS>1!~i(ff0*)<-v6M4Z{ed8^UVJ2#rmF!l2lD3u3LKuo1qDd35it%hg zIg1)bj|NzkFXUVSRD2yLf0hcVsO({^`;N*H1rJ!oDntyw?)s^^)Ld~>kWwp!>5woI zDKNo=Nph7`esL8@Vof0tHgMJxbCDngulO#V!7A!s8n7-itcs~6EI`@l@2naj!OCcG_qV%6+uQ6wPEu~h2mDnjR zL@J6?$nFA^2f%_6Au<6hAc@p#o4z_I*Y@8}9@Lx_{VlVWIZLjJFGQZ~8nBO07e5xsRlF!sj*eNz!Y9|jyUZCJYC{@(UHjI7^ zuqFU&Qupx?1LcR6sad;q1TraDdhVRpD;0Nizltiq$X>YqJqnXWAA64XIjR(93Qu(_ z;0V?0#7_~vm@H|Lwx_UE>Mf%Sz$yx_>v9(=7EfJwxq7}G^;EA8t0f~+rnKRnGm^1% zedcH*>QohzjjHrUr}`xSB!q;CCE0LH<#-{5RkM})re5F|VJ#$YEh-;K8?60Nu*6Ef zf>mm)U=^s)xi}|7Mry#D-7H8Z?tM9PvMVuEgAuh!jQl;$Gxt;@;&lKbrIL-x>x@iX z=FY0Z(l*3d6H99)2fXQJp{c9)?3aKfW&P0LlvR3F;bEf>Z3=BpwWXrJsb0TN z^tvi{o9a?tvnkCzsl}qRrNx$urMBC2?La%*+IH;R*|yVio5hZ{o!dJu@VU9#T8{o7 zu!;%LN@~_(Y3h=xG`4IM6Ra6H0TrHX7Cy&L80#9-)aWtuX3pzdD?IwqhZP@s(MylI zI*5v%c06TdT0_+Jk{*MrW-VR;meVRs<6|E#9`C(UHYBG2`Sm4aI2DM+wPaEJ;U#gj z%ktv?eVvDKa+#OINGSYV)dA zv(_tKGo>AYb+O-TmiAAGf+w>yeImf6DA&LtZ`zF+S7?7*`G+x)|f(Q63nc+G%tMv9~Tgj)EwOK&|<$5J6GzJ zg`kSRQ|Lq6Tx;iqGfGE6PR7Ed3@p)-U?sC^u#5{xp!y9WNwrW3o1CK7wbsB4Wyg8S z_6j{lcuiGK4+Ts6{3lR!mRM=eYADZu;J7}AwL~)h63qG{SDSQ}nXQ{?0F5W2ssp** z%pDQR@vfHmlkXny=)tF#oHWQxO2H<6NQ ziAyRgml(zl#5!ML5>%@5XkPtgUv0H5M8c-@`Z0`a2hpa}C@gk9ek4Um*+=128Y&%b z_@Au8@DE-;*)g5vPH{UmR9YkgE0!#jS-dhTAGGur*B8TpBBLr;5gkUS>4<>~~1#e0Oqv2`qnu2Lt zb4%*(t0-&~6wOM>eY3S~gDZ^{|Gs`tkGG4@mrHT6Fd}AFci}MCELf_%pm5jWdBOG0 zaAJaCp2B1nNK1Oaq=$gU-7pff4F!e0aZp(?ugdF!#d&1lbA>4vwpR|NI+FZ*I-D&Q z|9!kLrh0@$BNbMJWj3kM{1GDXoI>Qz+0?+4cA(jI%61zQY|c?f$`8MMNBMThjIge~ z7dyV7J#X+NSph9Sx#Q@yg6gX-yA~e=JVGjzeo9wmP%O6Hw~=TWeC4k zsRB`=V#a5Kzqq`-_<7~qs5F#ci`QTF@3o_A<70@kAoyevgU&eIU(Yr#v8 zXN%J9&Brg+*BXc<#qm2n$&Uzb){h^W2cJT5*m`CsGdSI41gxTlEE^^xvJ{HJz|wC1 w2FIP=gxT0qD27bm+EGZhn^83rb1GK<14#fq2ozct>i_@%07*qoM6N<$f+rwZ=Kufz literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index 41b0fde4c..57007ce2b 100644 --- a/index.rst +++ b/index.rst @@ -680,10 +680,10 @@ Touchscreen Components EKTF2232, components/touchscreen/ektf2232, ektf2232.svg, Inkplate 6 Plus Lilygo T5 4.7", components/touchscreen/lilygo_t5_47, lilygo_t5_47_touch.jpg TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png - GT911, components/touchscreen/gt911, esp32_s3_box_3.png XPT2046, components/touchscreen/xpt2046, xpt2046.jpg - - + GT911, components/touchscreen/gt911, esp32_s3_box_3.png + FT63X6, components/touchscreen/ft63x6, wt32-sc01.png + Cover Components ----------------