From 9778291b3d475df92be8f69ce16d85e6942a3079 Mon Sep 17 00:00:00 2001 From: Tyler Perkins Date: Tue, 29 Mar 2022 19:26:41 -0400 Subject: [PATCH] Initial Commit --- CODES.txt | 21 + README.md | 21 + .../rev1.0/Gerber_PCB_Remote_2022-03-29.zip | Bin 0 -> 15873 bytes gerber/rev1.0/PCB_PCB_Remote_2022-03-29.png | Bin 0 -> 52988 bytes remote/LowPower.cpp | 1182 +++++ remote/LowPower.h | 173 + remote/Makefile | 22 + remote/remote.ino | 50 + .../rev1.0/Schematic_Remote_2022-03-29.pdf | 4354 +++++++++++++++++ 9 files changed, 5823 insertions(+) create mode 100644 CODES.txt create mode 100644 README.md create mode 100644 gerber/rev1.0/Gerber_PCB_Remote_2022-03-29.zip create mode 100644 gerber/rev1.0/PCB_PCB_Remote_2022-03-29.png create mode 100644 remote/LowPower.cpp create mode 100644 remote/LowPower.h create mode 100644 remote/Makefile create mode 100644 remote/remote.ino create mode 100644 schematic/rev1.0/Schematic_Remote_2022-03-29.pdf diff --git a/CODES.txt b/CODES.txt new file mode 100644 index 0000000..1972ef2 --- /dev/null +++ b/CODES.txt @@ -0,0 +1,21 @@ +CODES +==== + +The following are recoded codes for the Z606 sound system. It is using NEC +encoding + + Button | Address | Command +----------------------------- + Power | 0x7484 | 0xFF + Mute | 0x7080 | 0xB9 + 2.1/5.1 | 0x7080 | 0xEC + VOL- | 0x7080 | 0xC8 + CHANNEL | 0x7080 | 0xC1 + VOL+ | 0x7080 | 0xC7 + AUX | 0x7080 | 0xB4 + BLE | 0x7080 | 0xBA + RCA | 0x7080 | 0xF9 + BACK | 0x7080 | 0xAE + PLAY/P | 0x7282 | 0xA8 + FORWARD | 0x7080 | 0xAF + diff --git a/README.md b/README.md new file mode 100644 index 0000000..3c73e95 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +Remote +====== + +This is a programable remote control that uses an ATMega328P and mechanical +switches to create a more pleasent remote control experience + +Features/TODO +------------- + +- Programmable controls +- Mechanical keys +- Several "virtual" remotes + +Design +====== + +Pinout +------ + +The IR led attaches to Pin 13 + diff --git a/gerber/rev1.0/Gerber_PCB_Remote_2022-03-29.zip b/gerber/rev1.0/Gerber_PCB_Remote_2022-03-29.zip new file mode 100644 index 0000000000000000000000000000000000000000..9bdfb7dfd51cbd95a8b7cacac5fd5e0c46219e1a GIT binary patch literal 15873 zcmZ|019)Z2wl*B6W81c^j%~YR+qP}nw$-t1r{i>N>(4&-+;89A=lpZ6v7V|~quw>D zp2Axga+1IxkN^Mx-vHXuy_6C^^f_Sx0RVEo1oi8!kiD6urH+i8l9-N?slAPpi7Bm+ zf|T_1v_&61a?iELN4S=A#X;9wsaXX0tVWPZ#6G=C9J@{lJa()Q>&lou3 z8l~W*G;KOk{%ceKz7^c$DOBO+tg5Ahm1sjkb#pdlR*mZ9^>Xxe%dxq>%@HzB_0{Jk zT+iEgJ6*Fw+7?UB!)5XX0x&IKc;HxI1cyi@z%WGWO<}G?8Bt6zN~I=6e@7~mp>k9K zP_a@L&iLra@Qv@RuX(6S-5H#S!NGvdyc46BBe$7T`YBLFF&ktHJlKHZ+S57<#cUzE&goNzPzweX*hqx z0GQaTQU9@NxeTYOb7@28eAJk0+_wI!YWlJnt>fOPVZ%A+-E4O2yc*AWx@0dWXL{0p zv&*NNj&2Q(i_L+>0s(&7cZ$A|k{TWrGvlDZOKAbaBA2Y{E^mG%L#<4C23&|ov5Qf} ziN~pHx!D8qV-({Ij`yuM|8i4GxK-N6{Y>_}*ymJs^K!53{kQBT-Ea%)p9Md%p&DM@}yhVd&)*L0t0OQ#NgW7j_*bt_%o!{lu;9MiFzzHapV(a)8 z^Lq@}-=i3R^qTq=8B#dXb2FF~a>acVFkf>VYGImPF13qyGrK-+&_y+ZWAzp4U_zvc z$-WfzzPXj}PlMeaDW<%w>Uv+KfZaNDGpFXfex+>C!5mIk|CNfh_a4ZLH8K4@_lL@} zg!qU10i^YtO5c~lF;$8&x-IQ@1vw{?&M~D(=6-zXo4YIF=-@tL*~^lVJ@pLnY*?NB z>n4Q+?k*F;7>}%*qREKPtE0ysHzonk9CU9ibZ?nxAL(e`Q&2vWP`pP$-G@Orw|zRd zeL3BD@qgLiwo~J_bJTgY+e*ll9|OA}EUzb2K66Sd z%^Gfgfn^OaU^B{yx$oWb<2h|x#~Xb3i|*>>&($33j_&AR!`)lj zUSLmVpAWb54}y>VTO%-5oGKHSN#4_W1-9cSOIL=jHkaa;gW)Gl1h&ON#=yXsztxAC%UKkv44s9(3N#H6#oKbE|H1ja0XH1gufZpM7vIkW$CJ|P`? zxz+pJ_~l%v^w`DAb60aD{WyHx$@>`7vRNbgHqXoR2zUL<+TGN{^;id-*Jg94$%BKN z7nr@@X+P)neQ)Pp^HJ7^^QY5rNxRp(7@LsWr?;V=!M4v}>c^Ux zEXSDl{vD%FXxZiNx95X?RU$5;%j%lyOYe@3{-eeFkn`k)VVGom5ts>p82~kEBEUDh zem444KpvoIV!*?_VCz6MJVpSGs2DA6pJ%U#>2v&pWdcNR=VU?MqGofY7%&kJSOG4{ zU~$t7KVbiM;h6@OWM}<=6g~^QFg+8oRYMu%PB3yn;Yt32NM&T2CKYbt65&eBcq|%i zbcHRBY0hc2goHSTV2(60_#XkXxeUY_x3C!KCT<5r44kp|6b5@ytfXf{zbYNz-%n#r zfvSeX0nLZ<9cCCgbqTgV~ z@>#~eARtGicSvHu;@2svH?G?0S3aaC*iWE38z0R`QHB*JU7zo>n=0(O2yTuRia7dj zhZwYEk{!#CFAwCQL2nEwgsymQtN|0eQE(Je;ZHh2S~zx?ahWg>)gm%HbrDCXg;4C* zz7ZHkr!Xz)L1FZjGk6c$FvTW0$&|crBk!Ji`iUgixESgOcg*PH-i}BpaQyHTayX-U zGjhOl0B2j&5emQQ#diB`1ws4W78vq8I0K`|ZcaE)7#pqtLUE~sJ}eMwXQOcN`}_d| z_oW06H`_crjVLNw&2HQ1cLSB{a+2el4?6nWbu&&K z;*4||JR0d`DZzP8T_;&<3k^}J^dF&WFj*2`Itj&21BJ&yp$DVNX5kSD<{**jocZHn>-xnDDIMGOXHTpPy7~Apq%yBy1(jw@Yx6PAN&bgJ{(DRpuyJ&>vHJJ0E+7@9A#H=x z0=s#nIx&>d!y@E0-qE?ino;QGx_L)yb7rU4^FVX94s>2~IU89x3r^w&E6BlXy zraLq5ch2tJ?Zemg z<0GbzRJ`oNj=Q7A?~bmX**f`IEyveJ?%tm6K(>Cz#6Ib=k1=%JvY!(*M=i&1Z?3(! z^Y@M~FV5aCw~VqrnZI!9#&4G~Noj8{uWs(_dDD))e|mU+=jokWlUg;sPoaByzc}gN;oIF~N!D!)jsGSGLY*83_g04i@w>_-y&7Gf;52}#1SxNUEroh z-|BrSYGF*7-L~Lxwu9xX@YV=3BVfon<#9?A1FXSDso>-iZWH;6iU79!GIcQdEqZoS z2zCOQMJ;Lt(ilfmb(^knOp|QIge=6dF!>9l!Mfx^f6a1UCOKk6a^l;Eucg``nuH3} zWcNsHj^t|FWEGwDj15uRUE?1VAi~|oql~T9KWfD3@X;w_allL))=aI#vu5)g@*#&U ztW4~OEEy*DQ81_#Cz13Aq+FzCmojN_^_fR&m>-YDCHXh1;Dk;#ideHQ$>F;-4#B#g z?jltCClb32FM(o)NZ1QmG2`znK$sETN8h_IN=c38=WaiN9y^YlKne#aftz=MVJ^w1 zaKf94%by1}kKxs6u61N$vfBzZ1M5kO5+3j{76OxW!mBgEdjlx+m^ILZ2ASI^dvgzP zn*sNTfTsNfQ2|-ErpJxxPys2EIX5i;ke5nS=>liFA31qPNZKScQgyQV=9E9^O2>Vo zu|4td;ibuAVq8$|FIO=yDE~+-o_hknvkSq|0k~&>%r`_|ZP&NMiJ1wDUCtSz=!|uA z?R%o|lXjC5ABV-of?)NV+h+M*rJCM=$mq*8&QUx_kpR}I1K`8LLeL^dBD_`G$i20X zY}YyvE3V*^gk7nkUZs{gP)X;gGCSF*8g&E61*8qv>1Rn)CY&^Qyw#Z^>q%=Ra1E`U z$*^tH36ENnb8CtbyFXsu=q3`PCZVE6tiw9`+u)1ehFt)j2sn(F5aj(T3tRbhozXgR zM;Hq_F1ekZ8+Cbs5`l9am$&CS#{n>8qvhf(WY`X=q73Hu+2HZpb+^&21V~joDbOMJ z=~o=5sYg$H5vLDdtcLmNJl0$bQf&T6d)lU95wRHK+}_+~rSan3i;O1MnKV-%8ol-n zmKQv%QqVp8ZQBOIvbSdLqGYUYKs#z|53Jg13auoD>_92A7uX`(4z4b76*;h-8Dzat zdyA-qC_7pAQwunhb#I(?KtrL;?-GeQtz^RWYid}RbBmR3U9cb%KPjVf?~W?KD>Q>* z**{9P%ve zLiCP-*-Q7_;hr|D8H+5Zcq*PpnIuPo)tJ^REsgiiSRF8kdDl7$z`>mc=3uN__Sj*U zfvWq)f|ZLAD${DGLMVQvW80B8k}l~s=5k^U%P+Nqs}AWGux9qnZCF&e$5jT2bM(VG z3M;@kuJF{&-wj7_v0~K8JKHx@?@eq51n32fwIvp-f%#ipvS=;TO|sf$ayRO-EP5)i zN^~kn-V26z%tU9Z`%@WUWeQQld+65JskvYUArOEh6G~!QWFybwjwq^~F?NR&mQ`T{ zx~T~Rx{wzty-|i2HV3ay!BmjzirV3`New?+mYo5LNJYE=hs9hfrz@JIkhY1L$NJB6 z?vpaCmiC&*rTR9`QwPBTf>#xY=}N{~p2>-6!M;)23N6%zL$e~U4&eqdCF_7rF~d}h z{7*W%c>Gtq6iX$pH<)mJrGT$uyoT_nBj#5;nQ(Pw{UQ+tGl3*WUU<&;_d#%EIX`Iu zdUzr?jW8HixMe_z+%*eg2jqsZ-j~r9;ra$4K$Gm?)^-)>pGON0?->xu}iD5#+JVr_}4H?7p#75^83~Td7 zSY085)-CS=)>o`sAk3ZE#m#3xHb9Iz5~46G$!#as7X$nV$u)4QDG*oW46(S7Ij}^+ zGr3{@Wtu?@p%JiPTzpB&?#@ zOG6p4*(OrivpO_NZL2Q<%I+uF#i0{$p>4^qAMrYJF*Xv_F_J{$p{T zRDC`pP7KYNdxT<8Y&W9DMq(_ZzZa8895*uljD_g9+Zt|GkC-CAfcO%KNStd}Y|fe~ z{)6Z>R=H`PuTk1#(?{Nt;N){vPgCjB2POmS{b-NUbyITI{Iy**YaQeC7l=wpm&av2 z^;oA)cWe05FN(grj>=zfh7dG%BQROfm(bJ&*(6ObDdZn$|Kv*3?m}I`5C8xgL;wId z|5*Pjnps*n7}y&bS^w`!ST;&y+#071Ve^&hVhBqRw^j@lZwq5~Kunj6KQpMSGkG1D zpx#hy3?QLqT8}MavV0wBLgGq~2d-j7U#HvQ`tIXx{pRWLt|kNz&*t*u-SM`S`jP74 zWRQ#c)6@Iq{OGi$L}y<14M{tz^Y)_&s>X{)-fM3&<2PF`-7!=U6PdGQC~|jJfe!jy zocY_KS7&}u>Tze_t%5$MPt}2iakpm&#jkie$)AKR>h3Mv-s-s5N8WDSyu94m-rBf1 z)_51P7bO>`dy~)BZVrS;GQ7#d83!NFCwJ2!M_(N7e)8A`?rHeu+`8@fliNySx#d^N ztMSpXqleFnw}%V(Hb(L5%clK@yT|AFargLM|NQaJ>p9b%tZK<^N=Zn^CpTRQ9-M5; zbj62qVA#}xFrK@V) z4P3MblyTAmPz)i1>}yZ}IAXuWMk3dLW|~VUCirfl>CpTp6lFa5$vCKs{T!d^Kw1b$ zno@qL3(bOvSG1_=_ziVqFb$_JihURod&yvgCR&?Y6ivH;i2xXa)Ps_uQCAB>o)3*( z7NJ^KfPK)w^(_BSG=4z{2KA zaGTP#Ic8llp)x3^u{ioFfpS;|9P8>z@@oab>#alu3WgU`0rC-MVkFD3G>ck%t-6*I zrHY10`H{K`R${=T^ePG^pUkD^e8JjncsSbO#4J>}Tt+$e($#GwMd$WJ{}_tr%7|*G z8Y=M=lU#{xx}Gzpw0O8c*5SBZ9C^bQ&UABBKgJW8VdQpM;%GZck8jv9>BNgOJTOo?xWk`zL!WynYZrL@9|Sb$`7ZKnLNMOk4Q zJR(nw(fHxSQewcF=Bxt>wnW&)O;x|)saqrVAj5h^GA$^o#OW+pQ_}5OiW24N@>28r z9pzTiZYBme()!UA~H_%5F|ft5*}XN_!V7eanr7wP&fKl_7ft>{!-AiOR5Q~+?l6Kx~9gKt{hPNp*6w32R^aM&xuh#+;WXx|L(8!+tQ+%$c#Vs=x(xef%6hcBJM^d*C( zd}pDsews&B1my52&7hJj%NABhNLo&U@$aZ;l?^SrAV;g^9^CP}SJ|q?P{NTOK<*Og z=#JGZ2~Ll&5OOE5A$J<2=qP4ltTGt|zU9ygK4py?b_<-7IZ7^ESarm^EV>yqPp_;m zkS7jn!&T6fOgvf;xG>Qg ziS(>4;0&ihmWv!QlQ_{5QU)#}V&NzdKLU89tF|EcyP_tOqRoz$R zTc%h~vQQ36TZ-4_AToEcPjp%8>A?cEe}S~KZiD30y3Adq$>^OlZrw}|U*%5% z^GMg|LdwU!CtV_dDD}tloHBc$(m?{MQ?W^Izn@zqmP|M20?WA_g0bD&&8rU2Yq;}) zGQVir@%lOPZtN-{i7A7C4+CEA+8)*tJg;lRUbTfK!*v2vqPE(L>Rfw*MAcCcmc&CW z>fkg zAtJAB8^M`@`RK%zcX7mM%$kxsE@x{Symz?V+%*~cdPI{Y1_Xq8Rj;URf}^|K>u zI10T^qcYx6z5p$HaTf9D?`5hK27Hg_kL97y^O{)a5ncZIif61Wi1;xlT_VDC$`hgORA(sRE-+Xb3(9vna@zFo6F zzs7}US3&mETuJW*mZFfXPWc%~L-L(m$vLQ>NUlt>Ib|!5j^w*oCJY>E3}4oIvQ3LU z-=11pueC(l7i7Jm$FU^3;x3SR$L0`0=>o~Rq)lHcBAOfqDppADl+`%f9x`vSUFC!> zq-PzH=t`yM=Er;=S*N>$bv7jZ+7oj*DuwdZXB$eJl^fzq~CRDV{+(naCyB!u7H-j-uLcz z-uI4v(SCM(=k;pi_Hy^^{TR;}@2}Cx{{HcL;Qsu6JiaHn{z>XPIDXG&`h4~LPV!?* z=NFH+`_nfWozMFtyzW<$fmitM=a-5apO;rz-ko1HKR+%mrqa7R{U8|7H2}9^dt8To zNqR)k*0S+F?LvI`A0}112M~`xA8FHK`?AckYpnojYaX@^6uf?(s$DY#d8j(nHXAJR zDRe%P7R9397NN4~F@Pf$J{+oP&oP>ZB^x>h!Bz(APITSU4wo`O@i;7a&>-_X;xby& z|8%d4aBAi(aB5yELTt2xJpC@`(NU8ad7)M$S)I2quUgXZ>W|2*N5=5M%wVy*-&y9? z-$vIN&Hkd%uxJ;t)VA-qk$=tZ_gIb0<%tL1rvTrQ9+g4AD_`8jm`vUO%MHPeW>z0MJS1@?q{}yUa}~U6c-ugQGt32r;HR1%jA7zUto!CBh6S>&U}XI2c(`5O@W;@$PfHMx0P#S{W6M5;n+Mv_(L zwt?-tSm-u1;mYJ(qwN{vcmk*6)Va1xvh^UVB2lpCYH{hdnQdayYv}kq-X$ zG`E8(nf*%Eo?+ybKPaZ&49x(I1**#jp`q{nVfMS~-(G?I^8@_n0ejm~Ur#(4&H7*q z7Pr!&C3bmG&uR<$#)$<%#!Q~N0-FFbp-c=tW%eDM*uA1r2~=ipR`+~354_4DmSohX zX4EdFA*yGDhe|@j;~Qxs!+_`?#Flr&nl}szM~qP8Lx1l1qv`^ zWHzX9lVSx}2jhD6NhQHI5y=}VtC4dIj@A*Nl~+oLh%Lrzl|dQIadfJ3f~U=tw>ZMu zTU+yepLr^T!sS%xlV8Pd`gz5vpW&50T@=J#Ff5|95%}ADyh>2=YgisCJm^%_m}1;d zyJ#lz;})p3HR8ZXejmE|c}1zOTDBnFRE&EPf=u)~8+$NH$z+ zAqz{!1I9zt7FiF^rfn~Y?Pc236>>%#&Dt!2FXDkFVW)ls_O(Q>9h8eYFSs3L=4(?i zo%Ux76~1;dr9+2&bkxUnspfRGFerBk9^y}{OXaMUN23u9sr_APAk{3fRe^lMXqaRY zl*p#*Q03hxkgs3;*te{7RS0b&IpHp3D0RH?NV(n)eGpI`5x%`Iq}yuiEy#vH;W#p& zgku!YuKAGU?~F4{aze_X{J1}z1U!L4bDj-paAoF;E`a1`-FTF$D7*t^I@5Fuf*Nbg zYeffo-y`KOQT*9CPl>_|!K9hX9}u1(E0;P*DMn{_f^)5;65BsHI}52lz*c7onbbAP zf}<3faIbgyE1rd-9YF^MUQUjx$Z*&WEG-uC2{IKrhUe- zX;cz0NP5^t(GF-L;Y$FY2kc&x2B$KuCR3-a{}41?N=461bOMKFkZ z0#T$!=Au#dIpwk${P9_YecS}7Ae`kNv^K4Yuj!K$1px|hsaokY%ykqzL*c?dx`VMb zj_j+kb0bj5=JWVDWq2bz#2lD|8~QMTnQ4g8E#>6Unc+7zXbG*1X9}@58#i}bhqxj7 zKmzKF6(Br;Lfpu^o0R>+2>IrSw51Axa|!M-tW*Rr%=en^AOqqV-eJ2Q&(z##+VWlt zQ6Xv$N#J40oFG8>T0nqsm|GNyf$jVW;SD;V2jGc;8IqQ)P{cb^paE?>0y_A07fy@TiwVWpI$RpK6w}5Z?NWx(r1=I(eaQKP7nq z$TVevlRr+wphK#PK&*I4PW(%}Eh>Pnm*c1+fNeRr1W0joPvw6lfs#{*jv%M@A!uoB z4#Bg!_Ng0e^+nYU%5(VgYbM}Ld%1Sl`${(%725+`(Dg2?su(0|Fk|PwA6as#w0a72 zk#Eip^>o;K9Q28IU!HkL)UwbyIg5HH9@G&+vGaA@A)8txXZx>rtGi3|2-V&t`X)5r zCGs(3dPvwV(eRMW+%C42oLMRB)}KFqMghCG`28S{uvDqsO62zQ=_#lYi=$^f_xi5# zLo(WMpiF@vUlc$xl$%F2T`dzX~e%Ha|2h*p zsMq}ZDwPC$aCq|h?zha`xrCMwPOxglSjL8mLPr0jW&Dh?<_5vU+^Ex5huqr~FU7&8 zYT77cQSZB=IzldVzHVk^sh`$n;rta0n9`=I^^|a>-ZZk!%w7%ICZf_mhAlpXqsw znO;m_+qfu-W_gbZtQ<;Yt?#DK)(4@%(&;%t1Db=`(}8S60a*)t>haaGL=<(CEUB%P zoK*g5l#13V>9R+AU=z-BcrC`NI6%K&Ae~Zcv@yW0t z=3W>0kp7}IwpFItTQ1sPpA0W9qxaUv#P8(#`dyD>ELbj@xo}$Zp=j1T*iyzkGd?-r zB#?mbTtQSXW9BR3wox@sb|%Tjj;C2{7E23g*eWnU z=Z9-Kttj~IbO!#7lL=ZX61r1W2AWzB7P>Mb6HVYF4lOJQN#CIA;44bX+X2h~ux68cdeoeH$A z4JeaF6}xI+-^4jsYZDL(+j$i_m4Y5}L#G-;PZ!FBY16J20whxl*7g!4ta+|~`(&x_ z`hGk&ThEjMU7u><3v0pJc$g=Wq4n1r!H6CZ)d!VKDgnKiPmN0U-l~59gr{ysseL8x zr0!uxAZ=*$MygOvq2$p!bO2gcZRhHv(!WLueD#f+4FIkfEJA4aQ`Q1Ro|WwJS(w_} z)IRM1F2|yjK_!vva0-Ix{jycO4QKq@m55Ll1&^&zKAVzdW#$$v-J?3VNAp3oI7kP> z$L%dh<3Tf}5>oB$!ptNGIftXN)PI6i)j+iT~8L8v(QU?5mFb!+^ilnnHJfH%X z@)hz46?ZUTWEtme`FxRX#v940Az<2fgJF3*n9a50h+jw zk-vF8qSn!P8it^)-M(E#|6J)GiBPhT6*|84%Ljkbka|_?(@i}oDHcjN7It^HsyvYe zm8iap61=-pN`p(IirX5ri2;_S_W++ko5(cULW6H{TeFUkg`PvcOviVB&9MR6 zYNDgo56(MMWpHfiYJt$^iL`N{pGwG;f(xC7b2ruPY#D5I-Gcv(BP)mM9+yE;H#r2R z;0y!r!X6^tTWI^8CeP-G(htKrp}H@eAxadYUzvSumJPl+Qiq)$7+e9h&E7vOJ7#7W z;m+1$gFH3~L<4&PaJPJalBer*&kY*Qu1MB$VOeq{!P660aauOQHZB;l`n{BSL%O>J z0J;=~NMkbZ?uC2m=9vPfiBsbl!?<=#!m#B>P8#bK&5zZ|FLB znUe0}m5#WWy?Y)0vpXlsd9FILNUa@NJ%f}nqUjpA^E-Eghs*}=sVcO`M zx~$s2R2--7kPB+o9xymmnzw^9vq5Ab&W?|EtVE)dXj%zs^u)KL7`=q;N~Vh*it|Z_ z1{Xm8!cTiG=Sr|JGX4uxSe?y7(M{M+)TjeNnYosw9IBN7t(fsq*@bj@Y+^fDD;0BA z;-UB^d@3zle-yQ4dZg~J^4+-)CHA08oqi`89z)%T6+FxA!7_3cwtr+v?^lvSbU<7X zeEeAts%o!zl6INJwN}zHFa3u9uZqAm=W%M;p?8umt|7n3)TiP&iez*GRJAvwbkK1! zv9FqdwjK#8%Pht+dI{gn?u&Z6HOrnMhDuZ3DsEQPv*Cf+hXC*`h(&G&9?-m6&Gpcrfd2@3+k6OwJ0P z3+LqvQ9#GGyOxUwn+dk>yM0L$7cA357hZd>)!~`sC2#BbR#m^K^J?P?&c-#((S)<8 z^UC=nF7$WK%1iB*RUDt%?u&&Sb)OX&Z{Cc$i-V0zAGqlElj)8fuTQC$(BAheW#?fS zqGr3(&Aj#3!qe#(xJTLeY?4ha9qpQ*)hZuuPF~$=womKyeR^kT0C)p zKt|a~$(VkqS6k%WmAQ;p&4e(^5eWO~SW@(cwq;e3a<*oMph3deHZisEgXej)a47=6 z3hN=l6dNpoX52GT^>(5#goD=9dWUChd(T}x0)xn{ZBnE)Mjy-)lI60T{oB}#_E9ML z6tkLv5EsqJQX}RboL3=(ta6$K=&*B~{e#$ykx>vsPa0A3s%5x(1&~|V#t+9NQMifF zPcM0?G7@&h9zG>t+wNg4fT1xsCQz0nd_-x2>Qo}?2zwL|7)g;oJSG}D_;!4Tw1w2j z^@kD#63kuvB(BRNzDWv?q{_kDTe|RPo_S8&L!xS1$xQy^vx$#OPHEBO!v8RxSj{t14&_ zsgW59s_@H5FZ=_mFA00K;=U{a`-(9yxWwt^g<>Er;}rATA)bdxP=SKzm4}V#8RTPz z({mRQ_6Z;`twH8Rwkd7b)OA|d?<&};jS{E_rB-tp?$axZeZ~wI`Ah74ZvTLsLIFe# zPi4ppotLB9y+RKEpCSaBnUeQiC58k1t9;*>801V(-NLE6Ptj+7nnxk^7uIGMjodt; z(?{!c3BUibi}<^z$u{N7X+ZqzDENi$ABm4i;$&?hml6Y*^>EVN2J|Ss;01e{D z=;XKHOEe5v%{qpPuH^&g)g%AwK6Fa*C?7;j8px*LmWR90_@h!R`0HUX%kyS8_k-1W za1_sbnz?F(N6h8f@p*MSL5(?yY9&4&U^PWIm|&_pur^dH^+p-ao(iQn4w@8pB>>sG zd2b{;K&U?lDM>@LrYfY7h2oNiKiAoKfdAaF|Ey$*2iw`kHeD9h*$UkLB1}o~U-P-ox&OjqhH?`OhvET6{!Bf4nF%$-F}CXhvSF%9?egiz#$?IW$&XHoiSP z+1?WGtBh0}=(j!Btv;RVyD2IIw18?tNF1kSLcKNnCLu}<`lmvsH>kxP(LfHoqB_x< z&d@t~J*hueTzWRSBBsA=c|s{M8Au6}sauM8VtBf+(w_3hs^gLuUGq&*cp`jLkmHV%Ec+>jJciCKZ%_Lb zPyo&*H%jC7I$`F9-({A{v>PiUw<~e*XO{*pn3vLZOeYm7NgMdhEFCGs6gF#?j-F+V z7%)GBYlrz@lKF!+b)JJiv)FIejFg^J8tE&C{y%f{mK~nl+OV@PLXsn*XPOUv&$--o zlzCIV^vaP3gG)>&DR`>c8|I6V+`iH)Am=v{tM!MU8iUT0*bYpgX5#m(_yz$EN|3@7 z4L?K5#Lunz&5x0ZpBS<@hIbBzK+ivMpbP;q8=0UNR=|HYaiGOF_UaHGaf?-;4?*D{4BmqENiJ!>A2Zgub+rUVX{cJ@m;ySIAS|h(* z!Vp89W~EGL187hXSFdO<>_Cn@ZDz3S3c7p1+`FcszcJk9K7*G+?_Ey(Yqu z?fAgo=k(y|a(;EBN=)4K;QU$KUyJDTD9BcLUiDNk%zJE=^W#>BfoAP&YhG`GBW#nu z^YXz11T1mt?Yq!tILx^(>n!bhUdwSppe#;ZpQC?W#?vKeOt645T-PWqeS_1@Q9&$F%&}Q0Xx(*_41uWw*uE%JwOf6TE9Ac z<2*3-Hf0o$W@>D(NfrJHg-HWox(fVSJ-sBLpOE^f=BOeJlL0hPnJ!zra{SuG z3vM=c+wdInf*$4m{(!<>S!4tL2>}{7IJg^BjlFXiq#7DXCe?Y7;qq`GR_aXfpW%Jf z3)~;H735zfYI68jiPZN_e<0WD`N6^bEA?tgOIf~0q~msjy^MudUS>!8)85rJmiZ}6 zpE^{%^k8R)e@kF*&sb_hBqHWUxPxiW5P&?(NnRGqxF_FE4`IiXOrM&uL5@kG!mJ;9 zr8c*%jOHuf>{YGqIN>ymL0npq1}-kDr5c|pG%~{N&l9y6Bt6fH>%~YsQo=(8T-%Z! zgOr;md$qzwoSff~oz${-X3%8&>gx0Z+gygDa=}bgNgZlzS>3wE-rJc+Fipuuf@6((Vrfg!iDvzAj8!-k z^T9+$8e9s+FvFQ;!(6mEWiI#_{a?Wr@$d5-0Xb<#I6sfCgO@7Ish&96nT0reo^}{C zO@Ug$5)}2&JyUGxpI?iOuZZgFfKMp<_xbfw&4w_*JT1?B55x7Y%x)R>w%@EKOBtlL z_$OzoF-TR%=s9qLN5ht&o&5CdkI+e7GW2c&7oepVGu^Q9>i;~c(+&o^7y5E*-1!ph z|4U`{>q5s8W-T6T|2q>&Mz*~OiwO1fsD!P zb6)tx4!nZPx!z0-BEox0leYFC`b2OEW}5}W4abmbZ+p%GpShvi|F!uS`OR^kN?Io% zIGu7mEm?ea*t%Saby9c`mkR#&K)H2HC64JooN&A}D_C|?` z$jF+5!T7_=^G}FBo!$P1u>G1T|BLI}p8$V)R{RYh^i|mZ?q~5Q#-BG1 z|HiQWa=`oBi2pddR+9Y_>d&+9zo8huNbEn%`42RK|3Le5srfe=JnbK7|GDt|)3iSc z_1|DF4F3=8%ga#lPbQ+I_$Sn#Oy+MWapwOA_3!ikKhXsK1MSaI=x?-j_Wy(SU&f?A j?fSDv{f(r~`QQ7OoFpjNUs_OKAGEJU{lb?X0KoqTMbmDR literal 0 HcmV?d00001 diff --git a/gerber/rev1.0/PCB_PCB_Remote_2022-03-29.png b/gerber/rev1.0/PCB_PCB_Remote_2022-03-29.png new file mode 100644 index 0000000000000000000000000000000000000000..045b9f45ab6e94f3663d13e6bd50f5c8e11fb7a1 GIT binary patch literal 52988 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 + #include + #include + #include +#elif defined (__arm__) + +#else + #error "Processor architecture is not supported." +#endif + +#include "LowPower.h" + +#if defined (__AVR__) +// Only Pico Power devices can change BOD settings through software +#if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168P__) +#ifndef sleep_bod_disable +#define sleep_bod_disable() \ +do { \ + unsigned char tempreg; \ + __asm__ __volatile__("in %[tempreg], %[mcucr]" "\n\t" \ + "ori %[tempreg], %[bods_bodse]" "\n\t" \ + "out %[mcucr], %[tempreg]" "\n\t" \ + "andi %[tempreg], %[not_bodse]" "\n\t" \ + "out %[mcucr], %[tempreg]" \ + : [tempreg] "=&d" (tempreg) \ + : [mcucr] "I" _SFR_IO_ADDR(MCUCR), \ + [bods_bodse] "i" (_BV(BODS) | _BV(BODSE)), \ + [not_bodse] "i" (~_BV(BODSE))); \ +} while (0) +#endif +#endif + +#define lowPowerBodOn(mode) \ +do { \ + set_sleep_mode(mode); \ + cli(); \ + sleep_enable(); \ + sei(); \ + sleep_cpu(); \ + sleep_disable(); \ + sei(); \ +} while (0); + +// Only Pico Power devices can change BOD settings through software +#if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168P__) +#define lowPowerBodOff(mode)\ +do { \ + set_sleep_mode(mode); \ + cli(); \ + sleep_enable(); \ + sleep_bod_disable(); \ + sei(); \ + sleep_cpu(); \ + sleep_disable(); \ + sei(); \ +} while (0); +#endif + +// Some macros is still missing from AVR GCC distribution for ATmega32U4 +#if defined __AVR_ATmega32U4__ + // Timer 4 PRR bit is currently not defined in iom32u4.h + #ifndef PRTIM4 + #define PRTIM4 4 + #endif + + // Timer 4 power reduction macro is not defined currently in power.h + #ifndef power_timer4_disable + #define power_timer4_disable() (PRR1 |= (uint8_t)(1 << PRTIM4)) + #endif + + #ifndef power_timer4_enable + #define power_timer4_enable() (PRR1 &= (uint8_t)~(1 << PRTIM4)) + #endif +#endif + +/******************************************************************************* +* Name: idle +* Description: Putting ATmega328P/168 into idle state. Please make sure you +* understand the implication and result of disabling module. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control: +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +* 4. timer1 Timer 1 module disable control: +* (a) TIMER1_OFF - Turn off Timer 1 module +* (b) TIMER1_ON - Leave Timer 1 module in its default state +* +* 5. timer0 Timer 0 module disable control: +* (a) TIMER0_OFF - Turn off Timer 0 module +* (b) TIMER0_ON - Leave Timer 0 module in its default state +* +* 6. spi SPI module disable control: +* (a) SPI_OFF - Turn off SPI module +* (b) SPI_ON - Leave SPI module in its default state +* +* 7. usart0 USART0 module disable control: +* (a) USART0_OFF - Turn off USART0 module +* (b) USART0_ON - Leave USART0 module in its default state +* +* 8. twi TWI module disable control: +* (a) TWI_OFF - Turn off TWI module +* (b) TWI_ON - Leave TWI module in its default state +* +*******************************************************************************/ +#if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168__) || defined (__AVR_ATmega168P__) || defined (__AVR_ATmega88__) +void LowPowerClass::idle(period_t period, adc_t adc, timer2_t timer2, + timer1_t timer1, timer0_t timer0, + spi_t spi, usart0_t usart0, twi_t twi) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + + power_timer2_disable(); + } + + if (adc == ADC_OFF) + { + ADCSRA &= ~(1 << ADEN); + power_adc_disable(); + } + + if (timer1 == TIMER1_OFF) power_timer1_disable(); + if (timer0 == TIMER0_OFF) power_timer0_disable(); + if (spi == SPI_OFF) power_spi_disable(); + if (usart0 == USART0_OFF) power_usart0_disable(); + if (twi == TWI_OFF) power_twi_disable(); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + lowPowerBodOn(SLEEP_MODE_IDLE); + + if (adc == ADC_OFF) + { + power_adc_enable(); + ADCSRA |= (1 << ADEN); + } + + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + + power_timer2_enable(); + } + + if (timer1 == TIMER1_OFF) power_timer1_enable(); + if (timer0 == TIMER0_OFF) power_timer0_enable(); + if (spi == SPI_OFF) power_spi_enable(); + if (usart0 == USART0_OFF) power_usart0_enable(); + if (twi == TWI_OFF) power_twi_enable(); +} +#endif + +/******************************************************************************* +* Name: idle +* Description: Putting ATmega32U4 into idle state. Please make sure you +* understand the implication and result of disabling module. +* Take note that Timer 2 is not available and USART0 is replaced +* with USART1 on ATmega32U4. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control: +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. timer4 Timer 4 module disable control: +* (a) TIMER4_OFF - Turn off Timer 4 module +* (b) TIMER4_ON - Leave Timer 4 module in its default state +* +* 4. timer3 Timer 3 module disable control: +* (a) TIMER3_OFF - Turn off Timer 3 module +* (b) TIMER3_ON - Leave Timer 3 module in its default state +* +* 5. timer1 Timer 1 module disable control: +* (a) TIMER1_OFF - Turn off Timer 1 module +* (b) TIMER1_ON - Leave Timer 1 module in its default state +* +* 6. timer0 Timer 0 module disable control: +* (a) TIMER0_OFF - Turn off Timer 0 module +* (b) TIMER0_ON - Leave Timer 0 module in its default state +* +* 7. spi SPI module disable control: +* (a) SPI_OFF - Turn off SPI module +* (b) SPI_ON - Leave SPI module in its default state +* +* 8. usart1 USART1 module disable control: +* (a) USART1_OFF - Turn off USART1 module +* (b) USART1_ON - Leave USART1 module in its default state +* +* 9. twi TWI module disable control: +* (a) TWI_OFF - Turn off TWI module +* (b) TWI_ON - Leave TWI module in its default state +* +* 10.usb USB module disable control: +* (a) USB_OFF - Turn off USB module +* (b) USB_ON - Leave USB module in its default state +*******************************************************************************/ +#if defined __AVR_ATmega32U4__ +void LowPowerClass::idle(period_t period, adc_t adc, + timer4_t timer4, timer3_t timer3, + timer1_t timer1, timer0_t timer0, + spi_t spi, usart1_t usart1, twi_t twi, usb_t usb) +{ + if (adc == ADC_OFF) + { + ADCSRA &= ~(1 << ADEN); + power_adc_disable(); + } + + if (timer4 == TIMER4_OFF) power_timer4_disable(); + if (timer3 == TIMER3_OFF) power_timer3_disable(); + if (timer1 == TIMER1_OFF) power_timer1_disable(); + if (timer0 == TIMER0_OFF) power_timer0_disable(); + if (spi == SPI_OFF) power_spi_disable(); + if (usart1 == USART1_OFF) power_usart1_disable(); + if (twi == TWI_OFF) power_twi_disable(); + if (usb == USB_OFF) power_usb_disable(); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + lowPowerBodOn(SLEEP_MODE_IDLE); + + if (adc == ADC_OFF) + { + power_adc_enable(); + ADCSRA |= (1 << ADEN); + } + + if (timer4 == TIMER4_OFF) power_timer4_enable(); + if (timer3 == TIMER3_OFF) power_timer3_enable(); + if (timer1 == TIMER1_OFF) power_timer1_enable(); + if (timer0 == TIMER0_OFF) power_timer0_enable(); + if (spi == SPI_OFF) power_spi_enable(); + if (usart1 == USART1_OFF) power_usart1_enable(); + if (twi == TWI_OFF) power_twi_enable(); + if (usb == USB_OFF) power_usb_enable(); +} +#endif + +/******************************************************************************* +* Name: idle +* Description: Putting ATmega644P & ATmega1284P into idle state. Please make sure +* you understand the implication and result of disabling module. +* Take note that extra USART 1 compared to an ATmega328P/168. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control: +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +* 4. timer1 Timer 1 module disable control: +* (a) TIMER1_OFF - Turn off Timer 1 module +* (b) TIMER1_ON - Leave Timer 1 module in its default state +* +* 5. timer0 Timer 0 module disable control: +* (a) TIMER0_OFF - Turn off Timer 0 module +* (b) TIMER0_ON - Leave Timer 0 module in its default state +* +* 6. spi SPI module disable control: +* (a) SPI_OFF - Turn off SPI module +* (b) SPI_ON - Leave SPI module in its default state +* +* 7. usart1 USART1 module disable control: +* (a) USART1_OFF - Turn off USART1 module +* (b) USART1_ON - Leave USART1 module in its default state +* +* 8. usart0 USART0 module disable control: +* (a) USART0_OFF - Turn off USART0 module +* (b) USART0_ON - Leave USART0 module in its default state +* +* 9. twi TWI module disable control: +* (a) TWI_OFF - Turn off TWI module +* (b) TWI_ON - Leave TWI module in its default state +* +*******************************************************************************/ +#if defined (__AVR_ATmega644P__) || defined (__AVR_ATmega1284P__) +void LowPowerClass::idle(period_t period, adc_t adc, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart1_t usart1, usart0_t usart0, twi_t twi) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + + power_timer2_disable(); + } + + if (adc == ADC_OFF) + { + ADCSRA &= ~(1 << ADEN); + power_adc_disable(); + } + + if (timer1 == TIMER1_OFF) power_timer1_disable(); + if (timer0 == TIMER0_OFF) power_timer0_disable(); + if (spi == SPI_OFF) power_spi_disable(); + if (usart1 == USART1_OFF) power_usart1_disable(); + if (usart0 == USART0_OFF) power_usart0_disable(); + if (twi == TWI_OFF) power_twi_disable(); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + lowPowerBodOn(SLEEP_MODE_IDLE); + + if (adc == ADC_OFF) + { + power_adc_enable(); + ADCSRA |= (1 << ADEN); + } + + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + + power_timer2_enable(); + } + + if (timer1 == TIMER1_OFF) power_timer1_enable(); + if (timer0 == TIMER0_OFF) power_timer0_enable(); + if (spi == SPI_OFF) power_spi_enable(); + if (usart1 == USART1_OFF) power_usart1_enable(); + if (usart0 == USART0_OFF) power_usart0_enable(); + if (twi == TWI_OFF) power_twi_enable(); +} +#endif + +/******************************************************************************* +* Name: idle +* Description: Putting ATmega2560 & ATmega1280 into idle state. Please make sure +* you understand the implication and result of disabling module. +* Take note that extra Timer 5, 4, 3 compared to an ATmega328P/168. +* Also take note that extra USART 3, 2, 1 compared to an +* ATmega328P/168. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control: +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. timer5 Timer 5 module disable control: +* (a) TIMER5_OFF - Turn off Timer 5 module +* (b) TIMER5_ON - Leave Timer 5 module in its default state +* +* 4. timer4 Timer 4 module disable control: +* (a) TIMER4_OFF - Turn off Timer 4 module +* (b) TIMER4_ON - Leave Timer 4 module in its default state +* +* 5. timer3 Timer 3 module disable control: +* (a) TIMER3_OFF - Turn off Timer 3 module +* (b) TIMER3_ON - Leave Timer 3 module in its default state +* +* 6. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +* 7. timer1 Timer 1 module disable control: +* (a) TIMER1_OFF - Turn off Timer 1 module +* (b) TIMER1_ON - Leave Timer 1 module in its default state +* +* 8. timer0 Timer 0 module disable control: +* (a) TIMER0_OFF - Turn off Timer 0 module +* (b) TIMER0_ON - Leave Timer 0 module in its default state +* +* 9. spi SPI module disable control: +* (a) SPI_OFF - Turn off SPI module +* (b) SPI_ON - Leave SPI module in its default state +* +* 10.usart3 USART3 module disable control: +* (a) USART3_OFF - Turn off USART3 module +* (b) USART3_ON - Leave USART3 module in its default state +* +* 11.usart2 USART2 module disable control: +* (a) USART2_OFF - Turn off USART2 module +* (b) USART2_ON - Leave USART2 module in its default state +* +* 12.usart1 USART1 module disable control: +* (a) USART1_OFF - Turn off USART1 module +* (b) USART1_ON - Leave USART1 module in its default state +* +* 13.usart0 USART0 module disable control: +* (a) USART0_OFF - Turn off USART0 module +* (b) USART0_ON - Leave USART0 module in its default state +* +* 14.twi TWI module disable control: +* (a) TWI_OFF - Turn off TWI module +* (b) TWI_ON - Leave TWI module in its default state +* +*******************************************************************************/ +#if defined (__AVR_ATmega2560__) || defined (__AVR_ATmega1280__) +void LowPowerClass::idle(period_t period, adc_t adc, timer5_t timer5, + timer4_t timer4, timer3_t timer3, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart3_t usart3, usart2_t usart2, usart1_t usart1, + usart0_t usart0, twi_t twi) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + + power_timer2_disable(); + } + + if (adc == ADC_OFF) + { + ADCSRA &= ~(1 << ADEN); + power_adc_disable(); + } + + if (timer5 == TIMER5_OFF) power_timer5_disable(); + if (timer4 == TIMER4_OFF) power_timer4_disable(); + if (timer3 == TIMER3_OFF) power_timer3_disable(); + if (timer1 == TIMER1_OFF) power_timer1_disable(); + if (timer0 == TIMER0_OFF) power_timer0_disable(); + if (spi == SPI_OFF) power_spi_disable(); + if (usart3 == USART3_OFF) power_usart3_disable(); + if (usart2 == USART2_OFF) power_usart2_disable(); + if (usart1 == USART1_OFF) power_usart1_disable(); + if (usart0 == USART0_OFF) power_usart0_disable(); + if (twi == TWI_OFF) power_twi_disable(); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + lowPowerBodOn(SLEEP_MODE_IDLE); + + if (adc == ADC_OFF) + { + power_adc_enable(); + ADCSRA |= (1 << ADEN); + } + + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + + power_timer2_enable(); + } + + if (timer5 == TIMER5_OFF) power_timer5_enable(); + if (timer4 == TIMER4_OFF) power_timer4_enable(); + if (timer3 == TIMER3_OFF) power_timer3_enable(); + if (timer1 == TIMER1_OFF) power_timer1_enable(); + if (timer0 == TIMER0_OFF) power_timer0_enable(); + if (spi == SPI_OFF) power_spi_enable(); + if (usart3 == USART3_OFF) power_usart3_enable(); + if (usart2 == USART2_OFF) power_usart2_enable(); + if (usart1 == USART1_OFF) power_usart1_enable(); + if (usart0 == USART0_OFF) power_usart0_enable(); + if (twi == TWI_OFF) power_twi_enable(); +} +#endif + +/******************************************************************************* +* Name: idle +* Description: Putting ATmega256RFR2 into idle state. Please make sure +* you understand the implication and result of disabling module. +* Take note that extra Timer 5, 4, 3 compared to an ATmega328P/168. +* Also take note that extra USART 1 compared to an +* ATmega328P/168. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control: +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. timer5 Timer 5 module disable control: +* (a) TIMER5_OFF - Turn off Timer 5 module +* (b) TIMER5_ON - Leave Timer 5 module in its default state +* +* 4. timer4 Timer 4 module disable control: +* (a) TIMER4_OFF - Turn off Timer 4 module +* (b) TIMER4_ON - Leave Timer 4 module in its default state +* +* 5. timer3 Timer 3 module disable control: +* (a) TIMER3_OFF - Turn off Timer 3 module +* (b) TIMER3_ON - Leave Timer 3 module in its default state +* +* 6. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +* 7. timer1 Timer 1 module disable control: +* (a) TIMER1_OFF - Turn off Timer 1 module +* (b) TIMER1_ON - Leave Timer 1 module in its default state +* +* 8. timer0 Timer 0 module disable control: +* (a) TIMER0_OFF - Turn off Timer 0 module +* (b) TIMER0_ON - Leave Timer 0 module in its default state +* +* 9. spi SPI module disable control: +* (a) SPI_OFF - Turn off SPI module +* (b) SPI_ON - Leave SPI module in its default state +* +* 10.usart1 USART1 module disable control: +* (a) USART1_OFF - Turn off USART1 module +* (b) USART1_ON - Leave USART1 module in its default state +* +* 11.usart0 USART0 module disable control: +* (a) USART0_OFF - Turn off USART0 module +* (b) USART0_ON - Leave USART0 module in its default state +* +* 12.twi TWI module disable control: +* (a) TWI_OFF - Turn off TWI module +* (b) TWI_ON - Leave TWI module in its default state +* +*******************************************************************************/ +#if defined (__AVR_ATmega256RFR2__) +void LowPowerClass::idle(period_t period, adc_t adc, timer5_t timer5, + timer4_t timer4, timer3_t timer3, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart1_t usart1, + usart0_t usart0, twi_t twi) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + + power_timer2_disable(); + } + + if (adc == ADC_OFF) + { + ADCSRA &= ~(1 << ADEN); + power_adc_disable(); + } + + if (timer5 == TIMER5_OFF) power_timer5_disable(); + if (timer4 == TIMER4_OFF) power_timer4_disable(); + if (timer3 == TIMER3_OFF) power_timer3_disable(); + if (timer1 == TIMER1_OFF) power_timer1_disable(); + if (timer0 == TIMER0_OFF) power_timer0_disable(); + if (spi == SPI_OFF) power_spi_disable(); + if (usart1 == USART1_OFF) power_usart1_disable(); + if (usart0 == USART0_OFF) power_usart0_disable(); + if (twi == TWI_OFF) power_twi_disable(); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + lowPowerBodOn(SLEEP_MODE_IDLE); + + if (adc == ADC_OFF) + { + power_adc_enable(); + ADCSRA |= (1 << ADEN); + } + + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + + power_timer2_enable(); + } + + if (timer5 == TIMER5_OFF) power_timer5_enable(); + if (timer4 == TIMER4_OFF) power_timer4_enable(); + if (timer3 == TIMER3_OFF) power_timer3_enable(); + if (timer1 == TIMER1_OFF) power_timer1_enable(); + if (timer0 == TIMER0_OFF) power_timer0_enable(); + if (spi == SPI_OFF) power_spi_enable(); + if (usart1 == USART1_OFF) power_usart1_enable(); + if (usart0 == USART0_OFF) power_usart0_enable(); + if (twi == TWI_OFF) power_twi_enable(); +} +#endif + + +/******************************************************************************* +* Name: adcNoiseReduction +* Description: Putting microcontroller into ADC noise reduction state. This is +* a very useful state when using the ADC to achieve best and low +* noise signal. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control. Turning off the ADC module is +* basically removing the purpose of this low power mode. +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +*******************************************************************************/ +void LowPowerClass::adcNoiseReduction(period_t period, adc_t adc, + timer2_t timer2) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + #if !defined(__AVR_ATmega32U4__) + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + } + #endif + + if (adc == ADC_OFF) ADCSRA &= ~(1 << ADEN); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + lowPowerBodOn(SLEEP_MODE_ADC); + + if (adc == ADC_OFF) ADCSRA |= (1 << ADEN); + + #if !defined(__AVR_ATmega32U4__) + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + } + #endif +} + +/******************************************************************************* +* Name: powerDown +* Description: Putting microcontroller into power down state. This is +* the lowest current consumption state. Use this together with +* external pin interrupt to wake up through external event +* triggering (example: RTC clockout pin, SD card detect pin). +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control. Turning off the ADC module is +* basically removing the purpose of this low power mode. +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. bod Brown Out Detector (BOD) module disable control: +* (a) BOD_OFF - Turn off BOD module +* (b) BOD_ON - Leave BOD module in its default state +* +*******************************************************************************/ +void LowPowerClass::powerDown(period_t period, adc_t adc, bod_t bod) +{ + if (adc == ADC_OFF) ADCSRA &= ~(1 << ADEN); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + if (bod == BOD_OFF) + { + #if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168P__) + lowPowerBodOff(SLEEP_MODE_PWR_DOWN); + #else + lowPowerBodOn(SLEEP_MODE_PWR_DOWN); + #endif + } + else + { + lowPowerBodOn(SLEEP_MODE_PWR_DOWN); + } + + if (adc == ADC_OFF) ADCSRA |= (1 << ADEN); +} + +/******************************************************************************* +* Name: powerSave +* Description: Putting microcontroller into power save state. This is +* the lowest current consumption state after power down. +* Use this state together with an external 32.768 kHz crystal (but +* 8/16 MHz crystal/resonator need to be removed) to provide an +* asynchronous clock source to Timer 2. Please take note that +* Timer 2 is also used by the Arduino core for PWM operation. +* Please refer to wiring.c for explanation. Removal of the external +* 8/16 MHz crystal/resonator requires the microcontroller to run +* on its internal RC oscillator which is not so accurate for time +* critical operation. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control. Turning off the ADC module is +* basically removing the purpose of this low power mode. +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. bod Brown Out Detector (BOD) module disable control: +* (a) BOD_OFF - Turn off BOD module +* (b) BOD_ON - Leave BOD module in its default state +* +* 4. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +*******************************************************************************/ +void LowPowerClass::powerSave(period_t period, adc_t adc, bod_t bod, + timer2_t timer2) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + #if !defined(__AVR_ATmega32U4__) + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + } + #endif + + if (adc == ADC_OFF) ADCSRA &= ~(1 << ADEN); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + if (bod == BOD_OFF) + { + #if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168P__) + lowPowerBodOff(SLEEP_MODE_PWR_SAVE); + #else + lowPowerBodOn(SLEEP_MODE_PWR_SAVE); + #endif + } + else + { + lowPowerBodOn(SLEEP_MODE_PWR_SAVE); + } + + if (adc == ADC_OFF) ADCSRA |= (1 << ADEN); + + #if !defined(__AVR_ATmega32U4__) + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + } + #endif +} + +/******************************************************************************* +* Name: powerStandby +* Description: Putting microcontroller into power standby state. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control. Turning off the ADC module is +* basically removing the purpose of this low power mode. +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. bod Brown Out Detector (BOD) module disable control: +* (a) BOD_OFF - Turn off BOD module +* (b) BOD_ON - Leave BOD module in its default state +* +*******************************************************************************/ +void LowPowerClass::powerStandby(period_t period, adc_t adc, bod_t bod) +{ + if (adc == ADC_OFF) ADCSRA &= ~(1 << ADEN); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + if (bod == BOD_OFF) + { + #if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168P__) + lowPowerBodOff(SLEEP_MODE_STANDBY); + #else + lowPowerBodOn(SLEEP_MODE_STANDBY); + #endif + } + else + { + lowPowerBodOn(SLEEP_MODE_STANDBY); + } + + if (adc == ADC_OFF) ADCSRA |= (1 << ADEN); +} + +/******************************************************************************* +* Name: powerExtStandby +* Description: Putting microcontroller into power extended standby state. This +* is different from the power standby state as it has the +* capability to run Timer 2 asynchronously. +* Not implemented on Atmega88 and Atmega168. +* +* Argument Description +* ========= =========== +* 1. period Duration of low power mode. Use SLEEP_FOREVER to use other wake +* up resource: +* (a) SLEEP_15MS - 15 ms sleep +* (b) SLEEP_30MS - 30 ms sleep +* (c) SLEEP_60MS - 60 ms sleep +* (d) SLEEP_120MS - 120 ms sleep +* (e) SLEEP_250MS - 250 ms sleep +* (f) SLEEP_500MS - 500 ms sleep +* (g) SLEEP_1S - 1 s sleep +* (h) SLEEP_2S - 2 s sleep +* (i) SLEEP_4S - 4 s sleep +* (j) SLEEP_8S - 8 s sleep +* (k) SLEEP_FOREVER - Sleep without waking up through WDT +* +* 2. adc ADC module disable control. +* (a) ADC_OFF - Turn off ADC module +* (b) ADC_ON - Leave ADC module in its default state +* +* 3. bod Brown Out Detector (BOD) module disable control: +* (a) BOD_OFF - Turn off BOD module +* (b) BOD_ON - Leave BOD module in its default state +* +* 4. timer2 Timer 2 module disable control: +* (a) TIMER2_OFF - Turn off Timer 2 module +* (b) TIMER2_ON - Leave Timer 2 module in its default state +* +*******************************************************************************/ +void LowPowerClass::powerExtStandby(period_t period, adc_t adc, bod_t bod, + timer2_t timer2) +{ + // Temporary clock source variable + unsigned char clockSource = 0; + + #if !defined(__AVR_ATmega32U4__) + if (timer2 == TIMER2_OFF) + { + // Store current setting + clockSource = TCCR2B; + + // Remove the clock source to shutdown Timer2 + TCCR2B &= ~(1 << CS22); + TCCR2B &= ~(1 << CS21); + TCCR2B &= ~(1 << CS20); + } + #endif + + if (adc == ADC_OFF) ADCSRA &= ~(1 << ADEN); + + if (period != SLEEP_FOREVER) + { + wdt_enable(period); + WDTCSR |= (1 << WDIE); + } + + + #if defined (__AVR_ATmega88__) || defined (__AVR_ATmega168__) // SLEEP_MODE_EXT_STANDBY not implemented on Atmega88 / Atmega168 + #else + if (bod == BOD_OFF) + { + #if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168P__) + lowPowerBodOff(SLEEP_MODE_EXT_STANDBY); + #else + lowPowerBodOn(SLEEP_MODE_EXT_STANDBY); + #endif + } + else + { + lowPowerBodOn(SLEEP_MODE_EXT_STANDBY); + } + #endif + + if (adc == ADC_OFF) ADCSRA |= (1 << ADEN); + + #if !defined(__AVR_ATmega32U4__) + if (timer2 == TIMER2_OFF) + { + // Restore previous setting + TCCR2B = clockSource; + } + #endif +} + +/******************************************************************************* +* Name: ISR (WDT_vect) +* Description: Watchdog Timer interrupt service routine. This routine is +* required to allow automatic WDIF and WDIE bit clearance in +* hardware. +* +*******************************************************************************/ +ISR (WDT_vect) +{ + // WDIE & WDIF is cleared in hardware upon entering this ISR + wdt_disable(); +} + +#elif defined (__arm__) +#if defined (__SAMD21G18A__) +/******************************************************************************* +* Name: standby +* Description: Putting SAMD21G18A into idle mode. This is the lowest current +* consumption mode. Requires separate handling of clock and +* peripheral management (disabling and shutting down) to achieve +* the desired current consumption. +* +* Argument Description +* ========= =========== +* 1. idleMode Idle mode level (0, 1, 2) where IDLE_2 level provide lowest +* current consumption in this mode. +* +*******************************************************************************/ +void LowPowerClass::idle(idle_t idleMode) +{ + SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk; + PM->SLEEP.reg = idleMode; + __DSB(); + __WFI(); +} + +/******************************************************************************* +* Name: standby +* Description: Putting SAMD21G18A into standby mode. This is the lowest current +* consumption mode. Use this together with the built-in RTC (use +* RTCZero library) or external pin interrupt to wake up through +* external event triggering. +* +* Argument Description +* ========= =========== +* 1. NIL +* +*******************************************************************************/ +void LowPowerClass::standby() +{ + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + __DSB(); + __WFI(); +} + +#else + #error "Please ensure chosen MCU is ATSAMD21G18A." +#endif +#else + #error "Processor architecture is not supported." +#endif + +LowPowerClass LowPower; diff --git a/remote/LowPower.h b/remote/LowPower.h new file mode 100644 index 0000000..5a8864b --- /dev/null +++ b/remote/LowPower.h @@ -0,0 +1,173 @@ +#ifndef LowPower_h +#define LowPower_h + +#include "Arduino.h" + +enum period_t +{ + SLEEP_15MS, + SLEEP_30MS, + SLEEP_60MS, + SLEEP_120MS, + SLEEP_250MS, + SLEEP_500MS, + SLEEP_1S, + SLEEP_2S, + SLEEP_4S, + SLEEP_8S, + SLEEP_FOREVER +}; + +enum bod_t +{ + BOD_OFF, + BOD_ON +}; + +enum adc_t +{ + ADC_OFF, + ADC_ON +}; + +enum timer5_t +{ + TIMER5_OFF, + TIMER5_ON +}; + +enum timer4_t +{ + TIMER4_OFF, + TIMER4_ON +}; + +enum timer3_t +{ + TIMER3_OFF, + TIMER3_ON +}; + +enum timer2_t +{ + TIMER2_OFF, + TIMER2_ON +}; + +enum timer1_t +{ + TIMER1_OFF, + TIMER1_ON +}; + +enum timer0_t +{ + TIMER0_OFF, + TIMER0_ON +}; + +enum spi_t +{ + SPI_OFF, + SPI_ON +}; + +enum usart0_t +{ + USART0_OFF, + USART0_ON +}; + +enum usart1_t +{ + USART1_OFF, + USART1_ON +}; + +enum usart2_t +{ + USART2_OFF, + USART2_ON +}; + +enum usart3_t +{ + USART3_OFF, + USART3_ON +}; + +enum twi_t +{ + TWI_OFF, + TWI_ON +}; + +enum usb_t +{ + USB_OFF, + USB_ON +}; + +enum idle_t +{ + IDLE_0, + IDLE_1, + IDLE_2 +}; + +class LowPowerClass +{ + public: + #if defined (__AVR__) + + #if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168__) || defined (__AVR_ATmega168P__) || defined (__AVR_ATmega88__) + void idle(period_t period, adc_t adc, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart0_t usart0, twi_t twi); + #elif defined __AVR_ATmega644P__ || defined (__AVR_ATmega1284P__) + void idle(period_t period, adc_t adc, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart1_t usart1, usart0_t usart0, twi_t twi); + #elif defined __AVR_ATmega2560__ + void idle(period_t period, adc_t adc, timer5_t timer5, + timer4_t timer4, timer3_t timer3, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart3_t usart3, usart2_t usart2, usart1_t usart1, + usart0_t usart0, twi_t twi); + #elif defined __AVR_ATmega256RFR2__ + void idle(period_t period, adc_t adc, timer5_t timer5, + timer4_t timer4, timer3_t timer3, timer2_t timer2, + timer1_t timer1, timer0_t timer0, spi_t spi, + usart1_t usart1, + usart0_t usart0, twi_t twi); + #elif defined __AVR_ATmega32U4__ + void idle(period_t period, adc_t adc, timer4_t timer4, + timer3_t timer3, timer1_t timer1, timer0_t timer0, + spi_t spi, usart1_t usart1, twi_t twi, usb_t usb); + #else + #error "Please ensure chosen MCU is either 88, 168, 168P, 328P, 32U4, 2560 or 256RFR2." + #endif + void adcNoiseReduction(period_t period, adc_t adc, timer2_t timer2) __attribute__((optimize("-O1"))); + void powerDown(period_t period, adc_t adc, bod_t bod) __attribute__((optimize("-O1"))); + void powerSave(period_t period, adc_t adc, bod_t bod, timer2_t timer2) __attribute__((optimize("-O1"))); + void powerStandby(period_t period, adc_t adc, bod_t bod) __attribute__((optimize("-O1"))); + void powerExtStandby(period_t period, adc_t adc, bod_t bod, timer2_t timer2) __attribute__((optimize("-O1"))); + + #elif defined (__arm__) + + #if defined (__SAMD21G18A__) + void idle(idle_t idleMode); + void standby(); + #else + #error "Please ensure chosen MCU is ATSAMD21G18A." + #endif + + #else + + #error "Processor architecture is not supported." + + #endif +}; + +extern LowPowerClass LowPower; +#endif diff --git a/remote/Makefile b/remote/Makefile new file mode 100644 index 0000000..83f474b --- /dev/null +++ b/remote/Makefile @@ -0,0 +1,22 @@ +############################################################################### +# Tyler Perkins +# 27-3-22 +# Arduino remote controller +# + +# Target board and cpu +# Default Arduino pro mini@5V +FQBN = arduino:avr:pro +CPU = :cpu=16MHzatmega328 + +# Serial port for Programmer +PORT = /dev/ttyUSB0 + +# path to the ino file +TARGET = ./remote.ino + +compile: $(TARGET) + arduino-cli compile -b $(FQBN)$(CPU) $(TARGET) + +upload: compile + sudo arduino-cli upload -b $(FQBN) -p /dev/ttyUSB0 $(TARGET) diff --git a/remote/remote.ino b/remote/remote.ino new file mode 100644 index 0000000..6527b48 --- /dev/null +++ b/remote/remote.ino @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////////////// +// Tyler Perkins +// 2-1-22 +// Remote Entry point +// + +#include +#include "LowPower.h" + +// IR library +IRsend irsend; + +void setup() { + //set input pins + //interrupt + pinMode(2, INPUT); + + //buttons + pinMode(9, INPUT); + pinMode(10, INPUT); + pinMode(11, INPUT); + + //pinMode(13, OUTPUT); + + //attachInterrupt(digitalPinToInterrupt(2),readInput, RISING); + + irsend.begin(3, ENABLE_LED_FEEDBACK); +} + +void loop() { + attachInterrupt(digitalPinToInterrupt(2),readInput, RISING); + + LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); + + detachInterrupt(digitalPinToInterrupt(2)); +} + +void readInput(){ + if(digitalRead(10) == HIGH){ + //vol + + irsend.sendNEC(0x7080, 0xC7, 1); + } else if(digitalRead(11) == HIGH){ + //vol - + irsend.sendNEC(0x7080, 0xC8, 1); + } else if(digitalRead(9) == HIGH){ + // 2.1/5.1 + irsend.sendNEC(0x7080, 0xEC, 1); + } + delay(25); +} diff --git a/schematic/rev1.0/Schematic_Remote_2022-03-29.pdf b/schematic/rev1.0/Schematic_Remote_2022-03-29.pdf new file mode 100644 index 0000000..758f380 --- /dev/null +++ b/schematic/rev1.0/Schematic_Remote_2022-03-29.pdf @@ -0,0 +1,4354 @@ +%PDF-1.4 +%ºß¬à +3 0 obj +<> +endobj +4 0 obj +<< +/Length 51344 +>> +stream +0.20 w +0 G +2 J +0 j +100 M +1.00 g +[] 0 d +0.00 826.60 1169.00 -826.60 re +f +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +216.000 806.600 m +216.000 816.600 l +216.000 20.600 m +216.000 10.600 l +412.000 806.600 m +412.000 816.600 l +412.000 20.600 m +412.000 10.600 l +608.000 806.600 m +608.000 816.600 l +608.000 20.600 m +608.000 10.600 l +804.000 806.600 m +804.000 816.600 l +804.000 20.600 m +804.000 10.600 l +1000.000 806.600 m +1000.000 816.600 l +1000.000 20.600 m +1000.000 10.600 l +20.000 610.600 m +10.000 610.600 l +1149.000 610.600 m +1159.000 610.600 l +20.000 414.600 m +10.000 414.600 l +1149.000 414.600 m +1159.000 414.600 l +20.000 218.600 m +10.000 218.600 l +1149.000 218.600 m +1159.000 218.600 l +20.000 22.600 m +10.000 22.600 l +1149.000 22.600 m +1159.000 22.600 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 708.60 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 708.60 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 512.60 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 512.60 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 316.60 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 316.60 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 120.60 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 120.60 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 808.10 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 12.10 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 808.10 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 12.10 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 808.10 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 12.10 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 808.10 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 12.10 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 808.10 Td +(5) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 12.10 Td +(5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +20.00 806.60 1129.00 -786.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +10.00 816.60 1149.00 -806.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.00 100.60 444.00 -80.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +705.100 61.350 m +1148.630 61.350 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 41.350 m +1148.630 41.350 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.610 100.530 m +1069.630 61.350 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.630 61.350 m +1069.630 41.350 l +S +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +710.00 87.60 Td +(TITLE:) Tj +ET +10.00 w +BT +/F1 13 Tf +13.00 TL +0.000 0.000 1.000 rg +767.62 75.01 Td +(Main) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1074.62 74.35 Td +(REV:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1112.62 74.35 Td +(1.0) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 25.60 Td +(Date:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +861.62 25.12 Td +(2022-01-02) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1073.62 45.60 Td +(Sheet:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1118.62 45.12 Td +(1/1) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +953.62 25.35 Td +(Drawn By:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1018.63 25.35 Td +(Clortox) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 47.35 Td +(Company:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +881.25 47.24 Td +(Your Company) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 61.350 m +809.630 21.350 l +S +0.33 0.53 1.00 rg +[] 0 d +760.394 39.165 m +760.535 39.271 760.707 39.323 760.904 39.323 c +761.168 39.323 761.451 39.230 761.752 39.048 c +762.053 38.866 762.342 38.580 762.618 38.187 c +763.687 39.821 l +763.355 40.278 762.944 40.635 762.446 40.887 c +761.948 41.139 761.420 41.262 760.867 41.262 c +760.081 41.262 759.393 41.033 758.815 40.577 c +758.238 40.120 757.949 39.522 757.949 38.796 c +757.949 38.275 758.133 37.777 758.502 37.309 c +758.766 36.975 759.245 36.571 759.933 36.102 c +760.529 35.698 760.898 35.417 761.033 35.259 c +761.168 35.101 761.236 34.948 761.236 34.796 c +761.236 34.609 761.150 34.451 760.972 34.310 c +760.793 34.175 760.560 34.105 760.265 34.105 c +759.522 34.105 758.834 34.498 758.207 35.288 c +756.825 33.754 l +757.439 33.133 757.998 32.700 758.496 32.465 c +758.993 32.231 759.552 32.114 760.161 32.114 c +761.217 32.114 762.022 32.401 762.581 32.975 c +763.140 33.549 763.417 34.164 763.417 34.808 c +763.417 35.300 763.281 35.751 763.011 36.172 c +762.741 36.588 762.176 37.092 761.316 37.678 c +760.775 38.047 760.456 38.293 760.351 38.421 c +760.241 38.550 760.185 38.679 760.185 38.808 c +760.179 38.943 760.253 39.060 760.394 39.165 c +h +f +0.33 0.53 1.00 rg +[] 0 d +745.024 39.575 m +740.699 39.575 l +741.055 42.017 l +741.055 42.017 745.644 42.023 745.669 42.023 c +746.271 42.023 746.762 42.492 746.762 43.066 c +746.762 43.640 746.271 44.108 745.669 44.108 c +745.650 44.108 739.009 44.108 739.009 44.108 c +737.314 32.336 l +744.268 32.336 l +744.268 32.336 l +744.852 32.348 745.325 32.805 745.325 33.361 c +745.325 33.929 744.839 34.392 744.243 34.392 c +744.219 34.392 739.931 34.386 739.931 34.386 c +740.385 37.508 l +740.385 37.508 744.790 37.502 744.827 37.502 c +745.429 37.502 745.921 37.970 745.921 38.544 c +745.933 39.066 745.540 39.493 745.024 39.575 c +h +f +0.33 0.53 1.00 rg +[] 0 d +782.922 44.102 m +782.903 44.102 776.262 44.102 776.262 44.102 c +774.579 32.342 l +781.539 32.342 l +781.539 32.342 l +782.123 32.354 782.596 32.811 782.596 33.367 c +782.596 33.935 782.111 34.398 781.515 34.398 c +781.490 34.398 777.202 34.392 777.202 34.392 c +777.657 37.514 l +777.657 37.514 782.062 37.508 782.105 37.508 c +782.707 37.508 783.198 37.976 783.198 38.550 c +783.198 39.066 782.805 39.493 782.289 39.575 c +777.964 39.575 l +778.320 42.017 l +778.320 42.017 782.909 42.023 782.934 42.023 c +783.536 42.023 784.027 42.492 784.027 43.066 c +784.015 43.634 783.530 44.102 782.922 44.102 c +h +f +0.33 0.53 1.00 rg +[] 0 d +795.350 38.468 m +795.350 39.622 795.067 40.647 794.508 41.531 c +793.949 42.416 793.224 43.066 792.327 43.476 c +791.430 43.891 790.072 44.096 788.236 44.096 c +786.282 44.096 l +784.599 32.336 l +788.432 32.336 l +790.042 32.336 791.301 32.565 792.204 33.022 c +793.107 33.478 793.863 34.205 794.459 35.194 c +795.055 36.190 795.350 37.279 795.350 38.468 c +h +792.315 36.038 m +791.866 35.394 791.277 34.937 790.539 34.673 c +790.011 34.486 789.163 34.392 787.990 34.392 c +787.228 34.392 l +788.315 42.029 l +788.899 42.029 l +789.851 42.029 790.613 41.888 791.184 41.601 c +791.756 41.314 792.198 40.910 792.517 40.383 c +792.831 39.856 792.990 39.206 792.990 38.427 c +792.984 37.484 792.763 36.682 792.315 36.038 c +h +f +0.33 0.53 1.00 rg +[] 0 d +804.472 38.603 m +803.102 37.883 l +802.992 36.934 802.144 36.202 801.124 36.202 c +800.025 36.202 799.134 37.051 799.134 38.099 c +799.134 39.148 800.025 39.997 801.124 39.997 c +801.548 39.997 801.941 39.868 802.261 39.657 c +803.962 40.553 l +803.041 44.079 l +801.094 44.079 l +794.459 32.366 l +796.941 32.366 l +798.341 34.861 l +803.219 34.861 l +803.870 32.366 l +806.106 32.366 l +804.472 38.603 l +h +f +0.33 0.53 1.00 rg +[] 0 d +800.393 38.146 m +800.393 37.742 800.737 37.414 801.161 37.414 c +801.585 37.414 801.929 37.742 801.929 38.146 c +801.929 38.550 801.585 38.878 801.161 38.878 c +800.737 38.878 800.393 38.550 800.393 38.146 c +h +f +0.33 0.53 1.00 rg +[] 0 d +755.056 39.669 m +755.056 39.669 755.056 39.675 755.056 39.669 c +754.288 39.669 l +754.208 39.809 l +753.895 40.284 753.501 40.641 753.028 40.887 c +752.549 41.133 751.793 41.256 751.228 41.256 c +750.387 41.256 749.582 41.039 748.814 40.606 c +748.046 40.172 747.432 39.569 746.977 38.790 c +746.523 38.017 746.289 37.197 746.289 36.342 c +746.289 35.218 746.645 34.234 747.358 33.385 c +748.071 32.536 749.035 32.114 750.245 32.114 c +750.774 32.114 751.247 32.196 751.671 32.372 c +752.095 32.541 752.549 32.840 753.034 33.273 c +753.034 33.273 753.606 32.799 753.612 32.805 c +753.968 32.536 754.411 32.366 754.890 32.336 c +755.111 32.336 l +755.142 32.588 l +755.922 38.849 l +755.916 38.849 755.916 38.849 755.910 38.849 c +755.910 39.300 755.529 39.663 755.056 39.669 c +h +753.262 35.470 m +752.985 34.972 752.641 34.603 752.230 34.369 c +751.818 34.134 751.339 34.017 750.786 34.017 c +750.123 34.017 749.582 34.222 749.158 34.644 c +748.734 35.060 748.525 35.610 748.525 36.290 c +748.525 37.174 748.802 37.894 749.361 38.457 c +749.920 39.019 750.596 39.294 751.394 39.294 c +752.082 39.294 752.635 39.083 753.053 38.667 c +753.471 38.246 753.679 37.695 753.679 37.004 c +753.679 36.483 753.538 35.967 753.262 35.470 c +h +f +0.33 0.53 1.00 rg +[] 0 d +729.837 42.960 m +729.377 44.126 728.627 45.174 727.638 46.023 c +726.121 47.323 724.155 48.044 722.109 48.044 c +720.340 48.044 718.650 47.517 717.225 46.521 c +716.537 46.041 715.941 45.473 715.450 44.828 c +715.143 44.869 714.829 44.893 714.510 44.893 c +712.747 44.893 711.082 44.237 709.835 43.048 c +708.588 41.859 707.900 40.278 707.900 38.591 c +707.900 37.028 708.508 35.528 709.607 34.369 c +710.480 33.449 711.610 32.799 712.857 32.495 c +713.398 30.960 714.921 29.853 716.709 29.853 c +718.951 29.853 720.776 31.593 720.776 33.730 c +720.776 33.853 720.770 33.982 720.758 34.105 c +726.465 36.963 l +725.218 39.025 l +719.762 36.295 l +719.019 37.104 717.925 37.613 716.709 37.613 c +714.946 37.613 713.441 36.536 712.876 35.036 c +711.438 35.640 710.431 37.004 710.431 38.597 c +710.431 40.741 712.255 42.486 714.510 42.486 c +715.302 42.486 716.046 42.269 716.672 41.894 c +717.428 44.067 719.578 45.637 722.109 45.637 c +725.058 45.637 727.478 43.517 727.804 40.793 c +727.908 40.805 728.013 40.811 728.117 40.811 c +729.880 40.811 731.312 39.446 731.312 37.765 c +731.312 36.172 730.028 34.866 728.394 34.732 c +726.569 34.732 l +726.489 34.749 726.403 34.755 726.317 34.755 c +725.611 34.755 725.039 34.211 725.039 33.537 c +725.039 32.899 725.555 32.377 726.213 32.325 c +726.213 32.313 l +728.394 32.313 l +728.504 32.313 l +728.615 32.325 l +730.040 32.442 731.361 33.057 732.332 34.064 c +733.308 35.077 733.849 36.389 733.849 37.765 c +733.849 40.190 732.159 42.263 729.837 42.960 c +h +716.709 35.230 m +717.575 35.230 718.282 34.556 718.282 33.730 c +718.282 32.905 717.575 32.231 716.709 32.231 c +715.843 32.231 715.136 32.905 715.136 33.730 c +715.136 34.556 715.843 35.230 716.709 35.230 c +h +f +0.33 0.53 1.00 rg +[] 0 d +768.810 35.880 m +767.035 41.039 l +764.836 41.039 l +767.404 33.525 l +764.811 29.156 l +767.176 29.156 l +774.346 41.039 l +771.931 41.039 l +f +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 417.00 509.60 Tm +(GND) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +430.000 525.600 m +430.000 535.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +421.000 525.600 m +439.000 525.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +424.000 523.600 m +436.000 523.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +427.000 521.600 m +433.000 521.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +429.000 519.600 m +431.000 519.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 742.00 539.60 Tm +(GND) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +755.000 555.600 m +755.000 565.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +746.000 555.600 m +764.000 555.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +749.000 553.600 m +761.000 553.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +752.000 551.600 m +758.000 551.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +754.000 549.600 m +756.000 549.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 565.600 m +675.000 565.600 l +755.000 565.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 713.00 587.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +725.000 585.600 m +725.000 575.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +720.000 585.600 m +730.000 585.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 545.600 m +675.000 545.600 l +725.000 545.600 l +725.000 575.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +565.000 545.600 m +550.000 545.600 l +430.000 545.600 l +430.000 535.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 508.00 737.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +520.000 735.600 m +520.000 725.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +515.000 735.600 m +525.000 735.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 507.00 674.60 Tm +(GND) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +520.000 690.600 m +520.000 700.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +511.000 690.600 m +529.000 690.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +514.000 688.600 m +526.000 688.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +517.000 686.600 m +523.000 686.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +519.000 684.600 m +521.000 684.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +615.000 710.600 m +615.000 695.600 l +570.000 695.600 l +570.000 705.600 l +560.000 705.600 l +520.000 705.600 l +520.000 700.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +575.000 710.600 m +575.000 715.600 l +560.000 715.600 l +520.000 715.600 l +520.000 725.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +565.000 535.600 m +550.000 535.600 l +505.000 535.600 l +505.000 610.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +455.000 595.600 m +455.000 610.600 l +465.000 610.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 442.00 569.60 Tm +(GND) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +455.000 585.600 m +455.000 595.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +446.000 585.600 m +464.000 585.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +449.000 583.600 m +461.000 583.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +452.000 581.600 m +458.000 581.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +454.000 579.600 m +456.000 579.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 724.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 733.60 Td +(1) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +844.68 724.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 708.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 713.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 711.600 m +848.685 711.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 688.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 693.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 691.600 m +848.685 691.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 721.600 m +848.690 681.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 681.600 m +888.690 681.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 681.600 m +888.690 721.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 721.600 m +848.690 721.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 669.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 678.60 Td +(2) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +844.68 669.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 653.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 658.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 656.600 m +848.685 656.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 633.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 638.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 636.600 m +848.685 636.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 666.600 m +848.690 626.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 626.600 m +888.690 626.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 626.600 m +888.690 666.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 666.600 m +848.690 666.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 619.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 628.60 Td +(3) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +844.68 619.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 603.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 608.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 606.600 m +848.685 606.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 583.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 588.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 586.600 m +848.685 586.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 616.600 m +848.690 576.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 576.600 m +888.690 576.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 576.600 m +888.690 616.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 616.600 m +848.690 616.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 569.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 578.60 Td +(4) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +844.68 569.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 553.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 558.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 556.600 m +848.685 556.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 858.21 533.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 822.72 538.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +829.000 536.600 m +848.685 536.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 566.600 m +848.690 526.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +848.690 526.600 m +888.690 526.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 526.600 m +888.690 566.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +888.690 566.600 m +848.690 566.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 569.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 578.60 Td +(5) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +944.68 569.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 553.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 558.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 556.600 m +948.685 556.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 533.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 538.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 536.600 m +948.685 536.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 566.600 m +948.690 526.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 526.600 m +988.690 526.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 526.600 m +988.690 566.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 566.600 m +948.690 566.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 619.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 628.60 Td +(6) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +944.68 619.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 603.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 608.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 606.600 m +948.685 606.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 583.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 588.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 586.600 m +948.685 586.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 616.600 m +948.690 576.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 576.600 m +988.690 576.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 576.600 m +988.690 616.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 616.600 m +948.690 616.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 669.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 678.60 Td +(7) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +944.68 669.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 653.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 658.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 656.600 m +948.685 656.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 633.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 638.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 636.600 m +948.685 636.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 666.600 m +948.690 626.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 626.600 m +988.690 626.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 626.600 m +988.690 666.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 666.600 m +948.690 666.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 724.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +954.03 733.45 Td +(8) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +944.68 724.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 708.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 713.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 711.600 m +948.685 711.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 958.21 688.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 922.72 693.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +929.000 691.600 m +948.685 691.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 721.600 m +948.690 681.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +948.690 681.600 m +988.690 681.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 681.600 m +988.690 721.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +988.690 721.600 m +948.690 721.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1059.03 569.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1059.03 578.45 Td +(9) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +1049.68 569.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1063.21 553.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1027.72 558.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1034.000 556.600 m +1053.685 556.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1063.21 533.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1027.72 538.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1034.000 536.600 m +1053.685 536.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1053.690 566.600 m +1053.690 526.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1053.690 526.600 m +1093.690 526.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1093.690 526.600 m +1093.690 566.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1093.690 566.600 m +1053.690 566.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1059.03 619.60 Td +(CHERRY-MX) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1059.03 628.45 Td +(10) Tj +ET +10.00 w +BT +/F1 6 Tf +6.00 TL +0.514 g +1049.68 619.60 Td +(CHERRY-MX) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1063.21 603.65 Tm +(PIN-1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1027.72 608.57 Tm +(SW1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1034.000 606.600 m +1053.685 606.600 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1063.21 583.65 Tm +(PIN-2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 1027.72 588.57 Tm +(SW2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1034.000 586.600 m +1053.685 586.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1053.690 616.600 m +1053.690 576.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1053.690 576.600 m +1093.690 576.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1093.690 576.600 m +1093.690 616.600 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1093.690 616.600 m +1053.690 616.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +479.04 618.60 Td +(220) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +479.04 627.60 Td +(R1) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +500.000 610.600 m +497.000 605.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +492.000 615.600 m +487.000 605.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +497.000 605.600 m +492.000 615.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +505.000 610.600 m +500.000 610.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +478.000 605.600 m +473.000 615.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +487.000 605.600 m +483.000 615.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +483.000 615.600 m +478.000 605.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +473.000 615.600 m +470.000 610.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +465.000 610.600 m +470.000 610.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 798.00 722.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +810.000 720.600 m +810.000 710.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +805.000 720.600 m +815.000 720.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 798.00 667.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +810.000 665.600 m +810.000 655.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +805.000 665.600 m +815.000 665.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 798.00 617.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +810.000 615.600 m +810.000 605.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +805.000 615.600 m +815.000 615.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 798.00 567.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +810.000 565.600 m +810.000 555.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +805.000 565.600 m +815.000 565.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 710.600 m +829.000 710.600 l +829.000 711.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 655.600 m +829.000 655.600 l +829.000 656.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 605.600 m +829.000 605.600 l +829.000 606.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 555.600 m +829.000 555.600 l +829.000 556.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 903.00 722.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +915.000 720.600 m +915.000 710.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +910.000 720.600 m +920.000 720.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 903.00 667.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +915.000 665.600 m +915.000 655.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +910.000 665.600 m +920.000 665.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 903.00 617.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +915.000 615.600 m +915.000 605.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +910.000 615.600 m +920.000 615.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 903.00 567.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +915.000 565.600 m +915.000 555.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +910.000 565.600 m +920.000 565.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1008.00 617.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1020.000 615.600 m +1020.000 605.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1015.000 615.600 m +1025.000 615.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1008.00 567.60 Tm +(VCC) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1020.000 565.600 m +1020.000 555.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1015.000 565.600 m +1025.000 565.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +915.000 710.600 m +929.000 710.600 l +929.000 711.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +915.000 655.600 m +929.000 655.600 l +929.000 656.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +915.000 605.600 m +920.000 605.600 l +929.000 605.600 l +929.000 606.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +915.000 555.600 m +929.000 555.600 l +929.000 556.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1020.000 555.600 m +1025.000 555.600 l +1034.000 555.600 l +1034.000 556.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1020.000 605.600 m +1034.000 605.600 l +1034.000 606.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 465.600 m +675.000 465.600 l +770.000 465.600 l +770.000 691.600 l +829.000 691.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 475.600 m +675.000 475.600 l +775.000 475.600 l +775.000 636.600 l +829.000 636.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +784.04 519.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +784.04 528.60 Td +(D1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 504.600 m +795.000 510.600 l +785.000 516.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 510.600 m +795.000 510.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +770.000 510.600 m +785.000 510.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +795.000 516.600 m +795.000 504.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +505.000 495.600 m +505.000 415.600 l +690.000 415.600 l +690.000 440.600 l +865.000 440.600 l +865.000 510.600 l +810.000 510.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +815.000 500.600 m +865.000 500.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +789.04 509.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +789.04 518.64 Td +(D2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +790.000 494.600 m +800.000 500.600 l +790.000 506.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +815.000 500.600 m +800.000 500.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +775.000 500.600 m +790.000 500.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +800.000 506.600 m +800.000 494.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +600.31 588.60 Td +(ARDUINO_PRO_MINI_NO_PROGRAMMING COPY) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +600.31 597.60 Td +(U1.1) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +575.000 585.600 m +575.000 425.600 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +575.000 425.600 m +645.000 425.600 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +645.000 425.600 m +645.000 585.600 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +645.000 585.600 m +575.000 585.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 532.60 Tm +(2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 536.60 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 535.600 m +575.000 535.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 522.60 Tm +(*3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 526.60 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 525.600 m +575.000 525.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 512.60 Tm +(4) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 516.60 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 515.600 m +575.000 515.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 502.60 Tm +(*5) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 506.60 Tm +(8) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 505.600 m +575.000 505.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 492.60 Tm +(*6) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 496.60 Tm +(9) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 495.600 m +575.000 495.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 482.60 Tm +(7) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 557.57 486.60 Tm +(10) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 485.600 m +575.000 485.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 472.60 Tm +(8) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 557.57 476.60 Tm +(11) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 475.600 m +575.000 475.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 462.60 Tm +(*9) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 557.57 466.60 Tm +(12) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 465.600 m +575.000 465.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 624.86 462.60 Tm +(*10) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 466.60 Tm +(13) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 465.600 m +645.000 465.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 624.86 472.60 Tm +(*11) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 476.60 Tm +(14) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 475.600 m +645.000 475.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 630.57 482.60 Tm +(12) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 486.60 Tm +(15) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 485.600 m +645.000 485.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 630.57 492.60 Tm +(13) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 496.60 Tm +(16) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 495.600 m +645.000 495.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 630.14 502.60 Tm +(A0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 506.60 Tm +(17) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 505.600 m +645.000 505.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 630.14 512.60 Tm +(A1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 516.60 Tm +(18) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 515.600 m +645.000 515.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 630.14 522.60 Tm +(A2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 526.60 Tm +(19) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 525.600 m +645.000 525.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 630.14 532.60 Tm +(A3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 536.60 Tm +(20) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 535.600 m +645.000 535.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 542.60 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 546.60 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 545.600 m +575.000 545.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 621.36 562.60 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 566.60 Tm +(23) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 565.600 m +645.000 565.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 620.71 572.60 Tm +(RAW) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 576.60 Tm +(24) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 575.600 m +645.000 575.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 552.60 Tm +(RST) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 556.60 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 555.600 m +575.000 555.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 624.05 552.60 Tm +(RST) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 556.60 Tm +(22) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 555.600 m +645.000 555.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 562.60 Tm +(RXI) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 566.60 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 565.600 m +575.000 565.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 578.00 572.60 Tm +(TXO) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 563.28 576.60 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +565.000 575.600 m +575.000 575.600 l +S +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 623.29 542.60 Tm +(VCC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.553 0.137 0.137 rg +1.00 -0.00 0.00 1.00 651.00 546.60 Tm +(21) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +655.000 545.600 m +645.000 545.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +225.000 700.600 m +210.000 700.600 l +210.000 655.600 l +530.000 655.600 l +530.000 525.600 l +565.000 525.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +239.04 708.60 Td +(100) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +239.04 717.45 Td +(R2) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +260.000 700.600 m +257.000 695.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +252.000 705.600 m +247.000 695.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +257.000 695.600 m +252.000 705.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +265.000 700.600 m +260.000 700.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +238.000 695.600 m +233.000 705.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +247.000 695.600 m +243.000 705.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +243.000 705.600 m +238.000 695.600 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +233.000 705.600 m +230.000 700.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +225.000 700.600 m +230.000 700.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +265.000 700.600 m +280.000 700.600 l +S +BT +/F2 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 322.00 674.60 Tm +(GND) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +335.000 690.600 m +335.000 700.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +326.000 690.600 m +344.000 690.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +329.000 688.600 m +341.000 688.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +332.000 686.600 m +338.000 686.600 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +334.000 684.600 m +336.000 684.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +320.000 700.600 m +335.000 700.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +829.000 586.600 m +780.000 586.600 l +780.000 485.600 l +655.000 485.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +829.000 536.600 m +765.000 536.600 l +765.000 495.600 l +655.000 495.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +565.000 515.600 m +550.000 515.600 l +550.000 395.600 l +895.000 395.600 l +895.000 485.600 l +895.000 691.600 l +929.000 691.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +565.000 505.600 m +545.000 505.600 l +545.000 390.600 l +900.000 390.600 l +900.000 485.600 l +900.000 636.600 l +929.000 636.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +565.000 495.600 m +555.000 495.600 l +555.000 400.600 l +905.000 400.600 l +905.000 485.600 l +905.000 586.600 l +929.000 586.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +565.000 485.600 m +560.000 485.600 l +560.000 405.600 l +910.000 405.600 l +910.000 485.600 l +910.000 536.600 l +929.000 536.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 505.600 m +670.000 505.600 l +670.000 455.600 l +995.000 455.600 l +995.000 485.600 l +995.000 586.600 l +1034.000 586.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 515.600 m +675.000 515.600 l +675.000 450.600 l +1000.000 450.600 l +1000.000 485.600 l +1000.000 536.600 l +1034.000 536.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +794.04 499.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +794.04 508.45 Td +(D3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +795.000 484.600 m +805.000 490.600 l +795.000 496.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +820.000 490.600 m +805.000 490.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +780.000 490.600 m +795.000 490.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +805.000 496.600 m +805.000 484.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +779.04 534.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +779.04 543.45 Td +(D4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +780.000 519.600 m +790.000 525.600 l +780.000 531.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +805.000 525.600 m +790.000 525.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +765.000 525.600 m +780.000 525.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +790.000 531.600 m +790.000 519.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +805.000 525.600 m +840.000 525.600 l +840.000 520.600 l +865.000 520.600 l +865.000 510.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 490.600 m +865.000 490.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +909.04 524.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +909.04 533.45 Td +(D5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +910.000 509.600 m +920.000 515.600 l +910.000 521.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +935.000 515.600 m +920.000 515.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +895.000 515.600 m +910.000 515.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +920.000 521.600 m +920.000 509.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +935.000 515.600 m +985.000 515.600 l +985.000 440.600 l +865.000 440.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +914.04 514.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +914.04 523.45 Td +(D6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +915.000 499.600 m +925.000 505.600 l +915.000 511.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +940.000 505.600 m +925.000 505.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +900.000 505.600 m +915.000 505.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +925.000 511.600 m +925.000 499.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +940.000 505.600 m +985.000 505.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +919.04 504.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +919.04 513.45 Td +(D7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +920.000 489.600 m +930.000 495.600 l +920.000 501.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +945.000 495.600 m +930.000 495.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +905.000 495.600 m +920.000 495.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +930.000 501.600 m +930.000 489.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +945.000 495.600 m +985.000 495.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +924.04 494.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +924.04 503.45 Td +(D8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 479.600 m +935.000 485.600 l +925.000 491.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +950.000 485.600 m +935.000 485.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +910.000 485.600 m +925.000 485.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +935.000 491.600 m +935.000 479.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +950.000 485.600 m +985.000 485.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1009.04 524.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1009.04 533.45 Td +(D9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1010.000 509.600 m +1020.000 515.600 l +1010.000 521.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1035.000 515.600 m +1020.000 515.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +995.000 515.600 m +1010.000 515.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1020.000 521.600 m +1020.000 509.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1035.000 515.600 m +1075.000 515.600 l +1075.000 440.600 l +985.000 440.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1014.04 514.60 Td +(1N4007W) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1014.04 523.45 Td +(D10) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1015.000 499.600 m +1025.000 505.600 l +1015.000 511.600 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1040.000 505.600 m +1025.000 505.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1000.000 505.600 m +1015.000 505.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1025.000 511.600 m +1025.000 499.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1040.000 505.600 m +1075.000 505.600 l +S +10.00 w +BT +9.00 TL +0.000 0.000 0.502 rg +293.01 724.60 Td +/F3 9 Tf +(LED-3MM) Tj +/F4 9 Tf +<7ea2> Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +305.000 693.600 m +305.000 707.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +1.00 0.00 0.00 rg +[] 0 d +295.000 694.600 m +305.000 700.600 l +295.000 707.600 l +h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +320.000 700.600 m +305.000 700.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 700.600 m +295.000 700.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +308.000 721.600 m +304.000 719.600 l +306.000 717.600 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +312.000 717.600 m +308.000 715.600 l +310.000 713.600 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +301.000 714.600 m +308.000 721.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +305.000 710.600 m +312.000 717.600 l +S +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +586.44 722.87 Td +(MY-1220-01) Tj +ET +10.00 w +BT +/F3 9 Tf +9.00 TL +0.000 0.000 0.502 rg +586.44 731.87 Td +(BT1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +590.000 719.600 m +590.000 703.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +593.000 715.600 m +593.000 706.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +596.000 719.600 m +596.000 703.600 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +599.000 715.600 m +599.000 706.600 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 579.28 711.60 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +575.000 710.600 m +590.000 710.600 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 605.00 711.60 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +615.000 710.600 m +600.000 710.600 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +505.000 495.600 m +505.000 535.600 l +S +0.80 0.00 0.00 rg +772.50 510.60 m 772.50 511.98 771.38 513.10 770.00 513.10 c +768.62 513.10 767.50 511.98 767.50 510.60 c +767.50 509.22 768.62 508.10 770.00 508.10 c +771.38 508.10 772.50 509.22 772.50 510.60 c +f +0.80 0.00 0.00 rg +867.50 500.60 m 867.50 501.98 866.38 503.10 865.00 503.10 c +863.62 503.10 862.50 501.98 862.50 500.60 c +862.50 499.22 863.62 498.10 865.00 498.10 c +866.38 498.10 867.50 499.22 867.50 500.60 c +f +0.80 0.00 0.00 rg +777.50 500.60 m 777.50 501.98 776.38 503.10 775.00 503.10 c +773.62 503.10 772.50 501.98 772.50 500.60 c +772.50 499.22 773.62 498.10 775.00 498.10 c +776.38 498.10 777.50 499.22 777.50 500.60 c +f +0.80 0.00 0.00 rg +782.50 490.60 m 782.50 491.98 781.38 493.10 780.00 493.10 c +778.62 493.10 777.50 491.98 777.50 490.60 c +777.50 489.22 778.62 488.10 780.00 488.10 c +781.38 488.10 782.50 489.22 782.50 490.60 c +f +0.80 0.00 0.00 rg +867.50 510.60 m 867.50 511.98 866.38 513.10 865.00 513.10 c +863.62 513.10 862.50 511.98 862.50 510.60 c +862.50 509.22 863.62 508.10 865.00 508.10 c +866.38 508.10 867.50 509.22 867.50 510.60 c +f +0.80 0.00 0.00 rg +867.50 490.60 m 867.50 491.98 866.38 493.10 865.00 493.10 c +863.62 493.10 862.50 491.98 862.50 490.60 c +862.50 489.22 863.62 488.10 865.00 488.10 c +866.38 488.10 867.50 489.22 867.50 490.60 c +f +0.80 0.00 0.00 rg +897.50 515.60 m 897.50 516.98 896.38 518.10 895.00 518.10 c +893.62 518.10 892.50 516.98 892.50 515.60 c +892.50 514.22 893.62 513.10 895.00 513.10 c +896.38 513.10 897.50 514.22 897.50 515.60 c +f +0.80 0.00 0.00 rg +867.50 440.60 m 867.50 441.98 866.38 443.10 865.00 443.10 c +863.62 443.10 862.50 441.98 862.50 440.60 c +862.50 439.22 863.62 438.10 865.00 438.10 c +866.38 438.10 867.50 439.22 867.50 440.60 c +f +0.80 0.00 0.00 rg +902.50 505.60 m 902.50 506.98 901.38 508.10 900.00 508.10 c +898.62 508.10 897.50 506.98 897.50 505.60 c +897.50 504.22 898.62 503.10 900.00 503.10 c +901.38 503.10 902.50 504.22 902.50 505.60 c +f +0.80 0.00 0.00 rg +987.50 505.60 m 987.50 506.98 986.38 508.10 985.00 508.10 c +983.62 508.10 982.50 506.98 982.50 505.60 c +982.50 504.22 983.62 503.10 985.00 503.10 c +986.38 503.10 987.50 504.22 987.50 505.60 c +f +0.80 0.00 0.00 rg +907.50 495.60 m 907.50 496.98 906.38 498.10 905.00 498.10 c +903.62 498.10 902.50 496.98 902.50 495.60 c +902.50 494.22 903.62 493.10 905.00 493.10 c +906.38 493.10 907.50 494.22 907.50 495.60 c +f +0.80 0.00 0.00 rg +987.50 495.60 m 987.50 496.98 986.38 498.10 985.00 498.10 c +983.62 498.10 982.50 496.98 982.50 495.60 c +982.50 494.22 983.62 493.10 985.00 493.10 c +986.38 493.10 987.50 494.22 987.50 495.60 c +f +0.80 0.00 0.00 rg +912.50 485.60 m 912.50 486.98 911.38 488.10 910.00 488.10 c +908.62 488.10 907.50 486.98 907.50 485.60 c +907.50 484.22 908.62 483.10 910.00 483.10 c +911.38 483.10 912.50 484.22 912.50 485.60 c +f +0.80 0.00 0.00 rg +987.50 485.60 m 987.50 486.98 986.38 488.10 985.00 488.10 c +983.62 488.10 982.50 486.98 982.50 485.60 c +982.50 484.22 983.62 483.10 985.00 483.10 c +986.38 483.10 987.50 484.22 987.50 485.60 c +f +0.80 0.00 0.00 rg +997.50 515.60 m 997.50 516.98 996.38 518.10 995.00 518.10 c +993.62 518.10 992.50 516.98 992.50 515.60 c +992.50 514.22 993.62 513.10 995.00 513.10 c +996.38 513.10 997.50 514.22 997.50 515.60 c +f +0.80 0.00 0.00 rg +987.50 440.60 m 987.50 441.98 986.38 443.10 985.00 443.10 c +983.62 443.10 982.50 441.98 982.50 440.60 c +982.50 439.22 983.62 438.10 985.00 438.10 c +986.38 438.10 987.50 439.22 987.50 440.60 c +f +0.80 0.00 0.00 rg +1002.50 505.60 m 1002.50 506.98 1001.38 508.10 1000.00 508.10 c +998.62 508.10 997.50 506.98 997.50 505.60 c +997.50 504.22 998.62 503.10 1000.00 503.10 c +1001.38 503.10 1002.50 504.22 1002.50 505.60 c +f +0.80 0.00 0.00 rg +1077.50 505.60 m 1077.50 506.98 1076.38 508.10 1075.00 508.10 c +1073.62 508.10 1072.50 506.98 1072.50 505.60 c +1072.50 504.22 1073.62 503.10 1075.00 503.10 c +1076.38 503.10 1077.50 504.22 1077.50 505.60 c +f +0.80 0.00 0.00 rg +767.50 525.60 m 767.50 526.98 766.38 528.10 765.00 528.10 c +763.62 528.10 762.50 526.98 762.50 525.60 c +762.50 524.22 763.62 523.10 765.00 523.10 c +766.38 523.10 767.50 524.22 767.50 525.60 c +f +0.80 0.00 0.00 rg +507.50 535.60 m 507.50 536.98 506.38 538.10 505.00 538.10 c +503.62 538.10 502.50 536.98 502.50 535.60 c +502.50 534.22 503.62 533.10 505.00 533.10 c +506.38 533.10 507.50 534.22 507.50 535.60 c +f +endstream +endobj +1 0 obj +<> +endobj +5 0 obj +<< +/Descent -209 +/CapHeight 727 +/StemV 0 +/Type /FontDescriptor +/Flags 32 +/FontBBox [-559 -303 1446 1050] +/FontName /Verdana +/ItalicAngle 0 +/Ascent 1005 +>> +endobj +6 0 obj +<> +endobj +7 0 obj +<< +/Type /Font +/BaseFont /Times-Roman +/Subtype /Type1 +/Encoding /WinAnsiEncoding +/FirstChar 32 +/LastChar 255 +>> +endobj +8 0 obj +<< +/Descent -325 +/CapHeight 500 +/StemV 80 +/Type /FontDescriptor +/Flags 32 +/FontBBox [-665 -325 2000 1006] +/FontName /Arial +/ItalicAngle 0 +/Ascent 1006 +>> +endobj +9 0 obj +<> +endobj +10 0 obj +<< +/Type /FontDescriptor +/FontName /simhei +/FontBBox [-11 -156 996 859] +/Flags 32 +/StemV 0 +/ItalicAngle 0 +/Ascent 859 +/Descent -140 +/CapHeight 687 +>> +endobj +11 0 obj +<< +/Type /Font +/BaseFont /simhei +/FontDescriptor 10 0 R +/W [1 95 500 738 813 1000] +/Subtype /CIDFontType2 +/CIDSystemInfo +<< +/Ordering (GB1) +/Registry (Adobe) +/Supplement 2 +>> +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /simhei +/Encoding /UniGB-UCS2-H +/DescendantFonts [11 0 R] +>> +endobj +2 0 obj +<< +/ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << +/F1 6 0 R +/F2 7 0 R +/F3 9 0 R +/F4 12 0 R +>> +/XObject << +>> +>> +endobj +13 0 obj +<< +/Producer (jsPDF 0.0.0) +/CreationDate (D:20220329192107-04'00') +>> +endobj +14 0 obj +<< +/Type /Catalog +/Pages 1 0 R +/OpenAction [3 0 R /FitH null] +/PageLayout /OneColumn +>> +endobj +xref +0 15 +0000000000 65535 f +0000051522 00000 n +0000054621 00000 n +0000000015 00000 n +0000000125 00000 n +0000051579 00000 n +0000051749 00000 n +0000052803 00000 n +0000052930 00000 n +0000053099 00000 n +0000054143 00000 n +0000054309 00000 n +0000054503 00000 n +0000054756 00000 n +0000054842 00000 n +trailer +<< +/Size 15 +/Root 14 0 R +/Info 13 0 R +/ID [ <63494B6C9315A981F468923C0CFDD508> <63494B6C9315A981F468923C0CFDD508> ] +>> +startxref +54946 +%%EOF \ No newline at end of file