text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="9.5.2">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1" unitdist="mm" unit="mm" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="mm" altunit="mm"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="24" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="no" active="no"/>
<layer number="89" name="SimProbes" color="9" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="108" name="tplace-old" color="10" fill="1" visible="yes" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="yes" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="113" name="IDFDebug" color="4" fill="1" visible="yes" active="yes"/>
<layer number="114" name="Badge_Outline" color="7" fill="1" visible="no" active="yes"/>
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="no" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="117" name="PM_Ref" color="7" fill="1" visible="no" active="no"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="yes"/>
<layer number="119" name="PF_Ref" color="7" fill="1" visible="no" active="no"/>
<layer number="120" name="WFL_Ref" color="7" fill="1" visible="no" active="no"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
<layer number="130" name="Annotation" color="13" fill="1" visible="yes" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="153" name="FabDoc1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="154" name="FabDoc2" color="7" fill="1" visible="yes" active="yes"/>
<layer number="155" name="FabDoc3" color="7" fill="1" visible="yes" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="231" name="231bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="no"/>
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="no"/>
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="0" x2="30" y2="0" width="0" layer="20"/>
<wire x1="30" y1="0" x2="30" y2="63" width="0" layer="20"/>
<wire x1="30" y1="63" x2="0" y2="63" width="0" layer="20"/>
<wire x1="0" y1="63" x2="0" y2="0" width="0" layer="20"/>
<polygon width="0.1524" layer="41">
<vertex x="3.7" y="35.489021875"/>
<vertex x="3.7" y="33.5"/>
<vertex x="18.7" y="33.5"/>
<vertex x="18.7" y="35.397559375"/>
</polygon>
<polygon width="0.1524" layer="42">
<vertex x="18.7" y="35.600609375"/>
<vertex x="18.7" y="33.6"/>
<vertex x="3.7" y="33.6"/>
<vertex x="3.7" y="35.509146875"/>
</polygon>
<wire x1="1.1" y1="34.5" x2="29.7" y2="34.5" width="0.5" layer="21" style="longdash"/>
<hole x="26.5" y="59" drill="3.5"/>
<hole x="3.5" y="59" drill="3.5"/>
<hole x="3.5" y="40" drill="3.5"/>
<hole x="26.5" y="42" drill="3.5"/>
<hole x="3.5" y="30" drill="3.5"/>
<hole x="26.5" y="30" drill="3.5"/>
<hole x="26.5" y="7" drill="3.5"/>
<hole x="3.5" y="3.5" drill="3.5"/>
</plain>
<libraries>
<library name="SparkFun-Connectors" urn="urn:adsk.eagle:library:16430189">
<description>
SparkFun Connectors

This library contains electrically-functional connectors.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="2X5" urn="urn:adsk.eagle:footprint:16430308/1" library_version="2">
<description>
Plated Through Hole - 2x5

Specifications:

Pin count:10

Pin pitch:0.1"

Example device(s):

CONN_05x2

</description>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="6.35" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-1.27" y2="3.175" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="3.175" x2="-0.635" y2="3.81" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="3.81" x2="0.635" y2="3.81" width="0.1524" layer="21"/>
<wire x1="0.635" y1="3.81" x2="1.27" y2="3.175" width="0.1524" layer="21"/>
<wire x1="1.27" y1="3.175" x2="1.905" y2="3.81" width="0.1524" layer="21"/>
<wire x1="1.905" y1="3.81" x2="3.175" y2="3.81" width="0.1524" layer="21"/>
<wire x1="3.175" y1="3.81" x2="3.81" y2="3.175" width="0.1524" layer="21"/>
<wire x1="3.81" y1="3.175" x2="4.445" y2="3.81" width="0.1524" layer="21"/>
<wire x1="4.445" y1="3.81" x2="5.715" y2="3.81" width="0.1524" layer="21"/>
<wire x1="5.715" y1="3.81" x2="6.35" y2="3.175" width="0.1524" layer="21"/>
<wire x1="6.35" y1="3.175" x2="6.985" y2="3.81" width="0.1524" layer="21"/>
<wire x1="6.985" y1="3.81" x2="8.255" y2="3.81" width="0.1524" layer="21"/>
<wire x1="8.255" y1="3.81" x2="8.89" y2="3.175" width="0.1524" layer="21"/>
<wire x1="1.27" y1="3.175" x2="1.27" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.81" y1="3.175" x2="3.81" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.35" y1="3.175" x2="6.35" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="3.175" x2="8.89" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="6.985" y1="-1.27" x2="8.255" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="9.525" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="8.89" y1="3.175" x2="9.525" y2="3.81" width="0.1524" layer="21"/>
<wire x1="9.525" y1="3.81" x2="10.795" y2="3.81" width="0.1524" layer="21"/>
<wire x1="10.795" y1="3.81" x2="11.43" y2="3.175" width="0.1524" layer="21"/>
<wire x1="11.43" y1="3.175" x2="11.43" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="10.795" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.651" x2="0.635" y2="-1.651" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="-1.651" x2="0.635" y2="-1.651" width="0.2032" layer="22"/>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796"/>
<pad name="2" x="0" y="2.54" drill="1.016" diameter="1.8796"/>
<pad name="3" x="2.54" y="0" drill="1.016" diameter="1.8796"/>
<pad name="4" x="2.54" y="2.54" drill="1.016" diameter="1.8796"/>
<pad name="5" x="5.08" y="0" drill="1.016" diameter="1.8796"/>
<pad name="6" x="5.08" y="2.54" drill="1.016" diameter="1.8796"/>
<pad name="7" x="7.62" y="0" drill="1.016" diameter="1.8796"/>
<pad name="8" x="7.62" y="2.54" drill="1.016" diameter="1.8796"/>
<pad name="9" x="10.16" y="0" drill="1.016" diameter="1.8796"/>
<pad name="10" x="10.16" y="2.54" drill="1.016" diameter="1.8796"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51" rot="R90"/>
<rectangle x1="-0.254" y1="2.286" x2="0.254" y2="2.794" layer="51" rot="R90"/>
<rectangle x1="2.286" y1="2.286" x2="2.794" y2="2.794" layer="51" rot="R90"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51" rot="R90"/>
<rectangle x1="4.826" y1="2.286" x2="5.334" y2="2.794" layer="51" rot="R90"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51" rot="R90"/>
<rectangle x1="9.906" y1="2.286" x2="10.414" y2="2.794" layer="51" rot="R90"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51" rot="R90"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51" rot="R90"/>
<rectangle x1="7.366" y1="2.286" x2="7.874" y2="2.794" layer="51" rot="R90"/>
<text x="-1.27" y="3.937" size="0.6096" layer="25" font="vector" ratio="20">>NAME</text>
<text x="-1.27" y="-2.54" size="0.6096" layer="27" font="vector" ratio="20">>VALUE</text>
</package>
<package name="1X05" urn="urn:adsk.eagle:footprint:16430380/1" library_version="2">
<description>
Plated Through Hole - 5 Pin

Specifications:

Pin count:5

Pin pitch:0.1"

Example device(s):

CONN_05

</description>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.2032" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.2032" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.2032" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.2032" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.2032" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.2032" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.2032" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="11.43" y1="0.635" x2="11.43" y2="-0.635" width="0.2032" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<text x="-1.27" y="1.397" size="0.6096" layer="25" font="vector" ratio="20">>NAME</text>
<text x="-1.27" y="-2.032" size="0.6096" layer="27" font="vector" ratio="20">>VALUE</text>
</package>
</packages>
<packages3d>
<package3d name="2X5" urn="urn:adsk.eagle:package:16430675/1" type="box" library_version="2">
<description>
Plated Through Hole - 2x5

Specifications:

Pin count:10

Pin pitch:0.1"

Example device(s):

CONN_05x2

</description>
<packageinstances>
<packageinstance name="2X5"/>
</packageinstances>
</package3d>
<package3d name="1X05" urn="urn:adsk.eagle:package:16430749/1" type="box" library_version="2">
<description>
Plated Through Hole - 5 Pin

Specifications:

Pin count:5

Pin pitch:0.1"

Example device(s):

CONN_05

</description>
<packageinstances>
<packageinstance name="1X05"/>
</packageinstances>
</package3d>
</packages3d>
</library>
<library name="SparkFun-Resistors">
<description>
SparkFun Resistors

This library contains resistors. Reference designator:R.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="1206">
<description>
Generic 3216 (1206) package

0.2mm courtyard excess rounded to nearest 0.05mm.
</description>
<wire x1="-2.4" y1="1.1" x2="2.4" y2="1.1" width="0.0508" layer="39"/>
<wire x1="2.4" y1="-1.1" x2="-2.4" y2="-1.1" width="0.0508" layer="39"/>
<wire x1="-2.4" y1="-1.1" x2="-2.4" y2="1.1" width="0.0508" layer="39"/>
<wire x1="2.4" y1="1.1" x2="2.4" y2="-1.1" width="0.0508" layer="39"/>
<wire x1="-0.965" y1="0.787" x2="0.965" y2="0.787" width="0.1016" layer="51"/>
<wire x1="-0.965" y1="-0.787" x2="0.965" y2="-0.787" width="0.1016" layer="51"/>
<smd name="1" x="-1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<smd name="2" x="1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
<text x="0" y="1.143" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-1.143" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
<rectangle x1="-1.7018" y1="-0.8509" x2="-0.9517" y2="0.8491" layer="51"/>
<rectangle x1="0.9517" y1="-0.8491" x2="1.7018" y2="0.8509" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
</package>
</packages>
</library>
<library name="RKJXT1F42001">
<description><Multi-Directional Switches 4 drectnl swtch cntr push w/ an encoder

<author>Created by SamacSys</author></description>
<packages>
<package name="RKJXT1F42001">
<description>RKJXT1F42001

</description>
<pad name="1" x="-1.5" y="-7.8" drill="1" diameter="1.5"/>
<pad name="2" x="1" y="-6.98" drill="1" diameter="1.5"/>
<pad name="3" x="6.86" y="-3.75" drill="1" diameter="1.5"/>
<pad name="4" x="7.8" y="-1.5" drill="1" diameter="1.5"/>
<pad name="5" x="7.8" y="1.5" drill="1" diameter="1.5"/>
<pad name="6" x="1.5" y="7.8" drill="1" diameter="1.5"/>
<pad name="7" x="-1" y="5.78" drill="1" diameter="1.5"/>
<pad name="8" x="-1.5" y="7.8" drill="1" diameter="1.5"/>
<pad name="9" x="-7.8" y="1.5" drill="1" diameter="1.5"/>
<pad name="10" x="-7.8" y="-1.5" drill="1" diameter="1.5"/>
<pad name="11" x="-3.8" y="-1.5" drill="1" diameter="1.5"/>
<text x="0" y="0" size="1.27" layer="25" align="center">>NAME</text>
<text x="0" y="0" size="1.27" layer="27" align="center">>VALUE</text>
<wire x1="-9.55" y1="9.55" x2="9.55" y2="9.55" width="0.1" layer="51"/>
<wire x1="9.55" y1="9.55" x2="9.55" y2="-9.55" width="0.1" layer="51"/>
<wire x1="9.55" y1="-9.55" x2="-9.55" y2="-9.55" width="0.1" layer="51"/>
<wire x1="-9.55" y1="-9.55" x2="-9.55" y2="9.55" width="0.1" layer="51"/>
<wire x1="6" y1="-8.5" x2="8.5" y2="-6" width="0.2" layer="51"/>
<wire x1="-8.5" y1="6" x2="-6" y2="8.5" width="0.2" layer="51"/>
<wire x1="-6" y1="-8.5" x2="-8.5" y2="-6" width="0.2" layer="51"/>
<wire x1="6" y1="8.5" x2="8.5" y2="6" width="0.2" layer="51"/>
<wire x1="-8.5" y1="6" x2="-8.5" y2="-6" width="0.2" layer="51"/>
<wire x1="-6" y1="-8.5" x2="6" y2="-8.5" width="0.2" layer="51"/>
<wire x1="8.5" y1="-6" x2="8.5" y2="6" width="0.2" layer="51"/>
<wire x1="-6" y1="8.5" x2="6" y2="8.5" width="0.2" layer="51"/>
<wire x1="-8.5" y1="2.5" x2="-8.5" y2="6" width="0.1" layer="21"/>
<wire x1="-8.5" y1="6" x2="-6" y2="8.5" width="0.1" layer="21"/>
<wire x1="-6" y1="8.5" x2="-2.5" y2="8.5" width="0.1" layer="21"/>
<wire x1="2.5" y1="8.5" x2="6" y2="8.5" width="0.1" layer="21"/>
<wire x1="6" y1="8.5" x2="8.5" y2="6" width="0.1" layer="21"/>
<wire x1="8.5" y1="6" x2="8.5" y2="2.5" width="0.1" layer="21"/>
<wire x1="-8.5" y1="-2.5" x2="-8.5" y2="-6" width="0.1" layer="21"/>
<wire x1="-8.5" y1="-6" x2="-6" y2="-8.5" width="0.1" layer="21"/>
<wire x1="-6" y1="-8.5" x2="-2.5" y2="-8.5" width="0.1" layer="21"/>
<wire x1="-0.5" y1="-8.5" x2="6" y2="-8.5" width="0.1" layer="21"/>
<wire x1="6" y1="-8.5" x2="8.5" y2="-6" width="0.1" layer="21"/>
<wire x1="8.5" y1="-6" x2="8.5" y2="-2.5" width="0.1" layer="21"/>
<wire x1="-8.5" y1="0.5" x2="-8.5" y2="-0.5" width="0.1" layer="21"/>
<wire x1="8.5" y1="0.5" x2="8.5" y2="-0.5" width="0.1" layer="21"/>
</package>
</packages>
</library>
<library name="switch-alps" urn="urn:adsk.eagle:library:373">
<description>ALPS Switch from Markus Faust &lt;mfaust@htwm.de&gt;

Source: EC12E.scr from eagle.support.ger on news.cadsoft.de at 08.10.2007</description>
<packages>
<package name="ALPS_EC12E_SW" urn="urn:adsk.eagle:footprint:27082/1" library_version="2">
<description>ALPS rotary encoder

EC12E series with push-on switch</description>
<wire x1="-6.2" y1="-6.6" x2="6.2" y2="-6.6" width="0.127" layer="21"/>
<wire x1="6.2" y1="-6.6" x2="6.2" y2="6.6" width="0.127" layer="21"/>
<wire x1="6.2" y1="6.6" x2="-6.2" y2="6.6" width="0.127" layer="21"/>
<wire x1="-6.2" y1="6.6" x2="-6.2" y2="-6.6" width="0.127" layer="21"/>
<wire x1="-2.6" y1="1.5" x2="2.6" y2="1.5" width="0.127" layer="21"/>
<circle x="0" y="0" radius="3" width="0.127" layer="21"/>
<pad name="A" x="-2.5" y="-7.5" drill="1" shape="square"/>
<pad name="C" x="0" y="-7.5" drill="1" shape="square"/>
<pad name="B" x="2.5" y="-7.5" drill="1" shape="square"/>
<pad name="D" x="-2.5" y="7" drill="1" shape="square"/>
<pad name="E" x="2.5" y="7" drill="1" shape="square"/>
<pad name="GND1" x="-6.1" y="0" drill="2.2" shape="square"/>
<pad name="GND2" x="6.1" y="0" drill="2.2" shape="square"/>
<text x="-2.5" y="8.5" size="1.27" layer="25">>NAME</text>
<text x="3.5" y="-9" size="1.27" layer="27" rot="R180">>VALUE</text>
</package>
</packages>
<packages3d>
<package3d name="ALPS_EC12E_SW" urn="urn:adsk.eagle:package:27083/1" type="box" library_version="2">
<description>ALPS rotary encoder
EC12E series with push-on switch</description>
<packageinstances>
<packageinstance name="ALPS_EC12E_SW"/>
</packageinstances>
</package3d>
</packages3d>
</library>
<library name="SparkFun-LED" urn="urn:adsk.eagle:library:529">
<description>
SparkFun LEDs

This library contains discrete LEDs for illumination or indication, but no displays.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="LED_3MM-NS" urn="urn:adsk.eagle:footprint:39310/1" library_version="1">
<description>
LED 3MM PTH- No Silk

3 mm, round, no silk outline of package

Specifications:

Pin count: 2

Pin pitch: 0.1inch

Diameter: 3mm

Example device(s):

LED

</description>
<wire x1="1.5748" y1="-1.27" x2="1.5748" y2="1.27" width="0.254" layer="51"/>
<wire x1="0" y1="2.032" x2="1.561" y2="1.3009" width="0.254" layer="51" curve="-50.193108" cap="flat"/>
<wire x1="-1.7929" y1="0.9562" x2="0" y2="2.032" width="0.254" layer="51" curve="-61.926949" cap="flat"/>
<wire x1="0" y1="-2.032" x2="1.5512" y2="-1.3126" width="0.254" layer="51" curve="49.763022" cap="flat"/>
<wire x1="-1.7643" y1="-1.0082" x2="0" y2="-2.032" width="0.254" layer="51" curve="60.255215" cap="flat"/>
<wire x1="-2.032" y1="0" x2="-1.7891" y2="0.9634" width="0.254" layer="51" curve="-28.301701" cap="flat"/>
<wire x1="-2.032" y1="0" x2="-1.7306" y2="-1.065" width="0.254" layer="51" curve="31.60822" cap="flat"/>
<wire x1="1.5748" y1="1.2954" x2="1.5748" y2="0.7874" width="0.254" layer="51"/>
<wire x1="1.5748" y1="-1.2954" x2="1.5748" y2="-0.8382" width="0.254" layer="51"/>
<wire x1="1.8923" y1="1.2954" x2="1.8923" y2="0.7874" width="0.254" layer="21"/>
<wire x1="1.8923" y1="-1.2954" x2="1.8923" y2="-0.8382" width="0.254" layer="21"/>
<pad name="A" x="-1.27" y="0" drill="0.8128"/>
<pad name="K" x="1.27" y="0" drill="0.8128"/>
<text x="0" y="2.286" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-2.286" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
</package>
</packages>
<packages3d>
<package3d name="LED_3MM-NS" urn="urn:adsk.eagle:package:39356/1" type="box" library_version="1">
<description>LED 3MM PTH- No Silk

3 mm, round, no silk outline of package

Specifications:
Pin count: 2
Pin pitch: 0.1inch
Diameter: 3mm

Example device(s):
LED</description>
<packageinstances>
<packageinstance name="LED_3MM-NS"/>
</packageinstances>
</package3d>
</packages3d>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="jlcpcb-2layers">
<description language="en">JLCPCB design rules (2 layers)

Board thickness: 1.6mm

Copper weight: 1oz (35um)

Note: annular ring aren't minimal

</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.6mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="5mil"/>
<param name="mdWirePad" value="5mil"/>
<param name="mdWireVia" value="5mil"/>
<param name="mdPadPad" value="5mil"/>
<param name="mdPadVia" value="5mil"/>
<param name="mdViaVia" value="5mil"/>
<param name="mdSmdPad" value="5mil"/>
<param name="mdSmdVia" value="5mil"/>
<param name="mdSmdSmd" value="5mil"/>
<param name="mdViaViaSameLayer" value="6mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="0.2mm"/>
<param name="mdDrill" value="6mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="5mil"/>
<param name="msDrill" value="0.3mm"/>
<param name="msMicroVia" value="0.3mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.4"/>
<param name="rvPadInner" value="0"/>
<param name="rvPadBottom" value="0.4"/>
<param name="rvViaOuter" value="0"/>
<param name="rvViaInner" value="0"/>
<param name="rvMicroViaOuter" value="0"/>
<param name="rvMicroViaInner" value="0"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="80mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="80mil"/>
<param name="rlMinViaOuter" value="3mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="3mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="0mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="checkStop" value="0"/>
<param name="checkValues" value="0"/>
<param name="checkNames" value="1"/>
<param name="checkWireStubs" value="1"/>
<param name="checkPolygonWidth" value="0"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="AutoGrid" value="1"/>
<param name="Efforts" value="2"/>
<param name="TopRouterVariant" value="1"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="a"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="a"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="SPEC" library="SparkFun-Connectors" library_urn="urn:adsk.eagle:library:16430189" package="2X5" package3d_urn="urn:adsk.eagle:package:16430675/1" value="" x="10.47" y="2.14" smashed="yes">
<attribute name="NAME" x="9.2" y="6.077" size="0.6096" layer="25" font="vector" ratio="20"/>
<attribute name="PROD_ID" value="CONN-08499" x="35.87" y="-41.04" size="1.778" layer="27" display="off"/>
<attribute name="SF_ID" value="PRT-0778" x="35.87" y="-41.04" size="1.778" layer="27" display="off"/>
<attribute name="VALUE" x="9.2" y="-0.4" size="0.6096" layer="27" font="vector" ratio="20"/>
</element>
<element name="S2" library="RKJXT1F42001" package="RKJXT1F42001" value="RKJXT1F42001" x="15.3" y="18.9" smashed="yes">
<attribute name="DESCRIPTION" value="Multi-Directional Switches 4 drectnl swtch cntr push w/ an encoder" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="HEIGHT" value="17mm" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="MANUFACTURER_NAME" value="ALPS" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="MANUFACTURER_PART_NUMBER" value="RKJXT1F42001" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="MOUSER_PART_NUMBER" value="688-RKJXT1F42001" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="MOUSER_PRICE-STOCK" value="https://www.mouser.com/Search/Refine.aspx?Keyword=688-RKJXT1F42001" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="NAME" x="15.3" y="16.36" size="1.27" layer="25" align="center"/>
<attribute name="RS_PART_NUMBER" value="1239636" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="RS_PRICE-STOCK" value="http://uk.rs-online.com/web/p/products/1239636" x="38.16" y="-12.85" size="1.778" layer="27" display="off"/>
<attribute name="VALUE" x="15.3" y="22.71" size="1.27" layer="27" align="center"/>
</element>
<element name="SW1" library="switch-alps" library_urn="urn:adsk.eagle:library:373" package="ALPS_EC12E_SW" package3d_urn="urn:adsk.eagle:package:27083/1" value="EC12E_SW" x="15.3" y="48.9" smashed="yes" rot="R180">
<attribute name="MF" value="" x="-6.29" y="60.33" size="1.778" layer="27" rot="R180" display="off"/>
<attribute name="MPN" value="EC12E2424407" x="-6.29" y="60.33" size="1.778" layer="27" rot="R180" display="off"/>
<attribute name="NAME" x="17" y="44.1" size="1.27" layer="25" rot="R180"/>
<attribute name="OC_FARNELL" value="1520813" x="-6.29" y="60.33" size="1.778" layer="27" rot="R180" display="off"/>
<attribute name="OC_NEWARK" value="74M1068" x="-6.29" y="60.33" size="1.778" layer="27" rot="R180" display="off"/>
<attribute name="POPULARITY" value="3" x="-6.29" y="60.33" size="1.778" layer="27" rot="R180" display="off"/>
<attribute name="VALUE" x="19.5" y="54.8" size="1.27" layer="27" rot="R180"/>
</element>
<element name="R1" library="SparkFun-Resistors" package="1206" value=" " x="2.89" y="13.29" smashed="yes" rot="MR270">
<attribute name="NAME" x="1.747" y="13.29" size="0.6096" layer="26" font="vector" ratio="20" rot="MR270" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="2.89" y="13.29" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="VALUE" x="4.033" y="13.29" size="0.6096" layer="28" font="vector" ratio="20" rot="MR270" align="top-center"/>
</element>
<element name="D1" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM-NS" package3d_urn="urn:adsk.eagle:package:39356/1" value="" x="3.11" y="19.02" smashed="yes">
<attribute name="NAME" x="3.11" y="21.306" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="VALUE" x="3.11" y="16.734" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="R2" library="SparkFun-Resistors" package="1206" value=" " x="26.49" y="12.65" smashed="yes" rot="MR270">
<attribute name="NAME" x="25.347" y="12.65" size="0.6096" layer="26" font="vector" ratio="20" rot="MR270" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="20.14" y="12.65" size="1.778" layer="28" rot="MR270" display="off"/>
<attribute name="VALUE" x="27.633" y="12.65" size="0.6096" layer="28" font="vector" ratio="20" rot="MR270" align="top-center"/>
</element>
<element name="D2" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM-NS" package3d_urn="urn:adsk.eagle:package:39356/1" value="" x="27.25" y="19.02" smashed="yes">
<attribute name="NAME" x="27.25" y="21.306" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="VALUE" x="27.25" y="16.734" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="R3" library="SparkFun-Resistors" package="1206" value=" " x="8.49" y="12.06" smashed="yes" rot="MR180">
<attribute name="NAME" x="8.49" y="10.917" size="0.6096" layer="26" font="vector" ratio="20" rot="MR180" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="8.49" y="5.71" size="1.778" layer="28" rot="MR180" display="off"/>
<attribute name="VALUE" x="8.49" y="13.203" size="0.6096" layer="28" font="vector" ratio="20" rot="MR180" align="top-center"/>
</element>
<element name="D3" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM-NS" package3d_urn="urn:adsk.eagle:package:39356/1" value="" x="7.01" y="7.08" smashed="yes" rot="R180">
<attribute name="NAME" x="7.01" y="4.794" size="0.6096" layer="25" font="vector" ratio="20" rot="R180" align="bottom-center"/>
<attribute name="VALUE" x="7.01" y="9.366" size="0.6096" layer="27" font="vector" ratio="20" rot="R180" align="top-center"/>
</element>
<element name="R4" library="SparkFun-Resistors" package="1206" value=" " x="10" y="30.48" smashed="yes" rot="MR0">
<attribute name="NAME" x="10" y="31.623" size="0.6096" layer="26" font="vector" ratio="20" rot="MR0" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="15.08" y="36.83" size="1.778" layer="28" rot="MR0" display="off"/>
<attribute name="VALUE" x="10" y="29.337" size="0.6096" layer="28" font="vector" ratio="20" rot="MR0" align="top-center"/>
</element>
<element name="D4" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM-NS" package3d_urn="urn:adsk.eagle:package:39356/1" value="" x="17.08" y="30.72" smashed="yes">
<attribute name="NAME" x="17.08" y="33.006" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="VALUE" x="17.08" y="28.434" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="R5" library="SparkFun-Resistors" package="1206" value=" " x="8.9" y="59.65" smashed="yes" rot="MR0">
<attribute name="NAME" x="8.9" y="60.793" size="0.6096" layer="26" font="vector" ratio="20" rot="MR0" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="8.9" y="66" size="1.778" layer="28" rot="MR0" display="off"/>
<attribute name="VALUE" x="8.9" y="58.507" size="0.6096" layer="28" font="vector" ratio="20" rot="MR0" align="top-center"/>
</element>
<element name="D5" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM-NS" package3d_urn="urn:adsk.eagle:package:39356/1" value="" x="15.13" y="59.83" smashed="yes">
<attribute name="NAME" x="15.13" y="62.116" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="VALUE" x="15.13" y="57.544" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="R6" library="SparkFun-Resistors" package="1206" value=" " x="15.2" y="48.57" smashed="yes" rot="MR0">
<attribute name="NAME" x="15.2" y="49.713" size="0.6096" layer="26" font="vector" ratio="20" rot="MR0" align="bottom-center"/>
<attribute name="PROD_ID" value=" " x="20.28" y="54.92" size="1.778" layer="28" rot="MR0" display="off"/>
<attribute name="VALUE" x="15.2" y="47.427" size="0.6096" layer="28" font="vector" ratio="20" rot="MR0" align="top-center"/>
</element>
<element name="D6" library="SparkFun-LED" library_urn="urn:adsk.eagle:library:529" package="LED_3MM-NS" package3d_urn="urn:adsk.eagle:package:39356/1" value="" x="15.41" y="39.23" smashed="yes">
<attribute name="NAME" x="15.41" y="41.516" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center"/>
<attribute name="VALUE" x="15.41" y="36.944" size="0.6096" layer="27" font="vector" ratio="20" align="top-center"/>
</element>
<element name="J1" library="SparkFun-Connectors" library_urn="urn:adsk.eagle:library:16430189" package="1X05" package3d_urn="urn:adsk.eagle:package:16430749/1" value="" x="5.3" y="44.5" smashed="yes" rot="R90">
<attribute name="NAME" x="3.903" y="43.23" size="0.6096" layer="25" font="vector" ratio="20" rot="R90"/>
<attribute name="VALUE" x="7.332" y="43.23" size="0.6096" layer="27" font="vector" ratio="20" rot="R90"/>
</element>
</elements>
<signals>
<signal name="GND">
<contactref element="S2" pad="3"/>
<contactref element="SPEC" pad="1"/>
<contactref element="S2" pad="8"/>
<contactref element="S2" pad="7"/>
<contactref element="SW1" pad="C"/>
<contactref element="SW1" pad="E"/>
<contactref element="D1" pad="K"/>
<contactref element="D2" pad="K"/>
<contactref element="D3" pad="K"/>
<contactref element="D4" pad="K"/>
<contactref element="D5" pad="K"/>
<contactref element="D6" pad="K"/>
<polygon width="0.1524" layer="1">
<vertex x="0.1" y="66.1"/>
<vertex x="0.1" y="-0.2"/>
<vertex x="31" y="-0.2"/>
<vertex x="31" y="65.3"/>
<vertex x="31.976603125" y="66.276603125"/>
</polygon>
<polygon width="0.1524" layer="16">
<vertex x="0" y="66.3"/>
<vertex x="0" y="0.1"/>
<vertex x="0.4" y="-0.3"/>
<vertex x="36" y="-0.3"/>
<vertex x="36" y="66.3"/>
</polygon>
<contactref element="J1" pad="1"/>
</signal>
<signal name="PUSH1">
<contactref element="S2" pad="2"/>
<contactref element="SPEC" pad="7"/>
<wire x1="16.5" y1="9.5" x2="16.5" y2="11.5" width="0.1524" layer="16"/>
<wire x1="19" y1="9.5" x2="16.5" y2="9.5" width="0.1524" layer="16"/>
<wire x1="22.5" y1="6" x2="19" y2="9.5" width="0.1524" layer="16"/>
<wire x1="22.5" y1="3.5" x2="22.5" y2="6" width="0.1524" layer="16"/>
<wire x1="19" y1="3.5" x2="22.5" y2="3.5" width="0.1524" layer="16"/>
<wire x1="18" y1="2.5" x2="19" y2="3.5" width="0.1524" layer="16"/>
<wire x1="16.5" y1="11.5" x2="16.3" y2="11.92" width="0.1524" layer="16"/>
<wire x1="18" y1="2.5" x2="18.09" y2="2.14" width="0.1524" layer="16"/>
</signal>
<signal name="A">
<contactref element="S2" pad="1"/>
<contactref element="SPEC" pad="3"/>
<wire x1="9.5" y1="11" x2="13.5" y2="11" width="0.1524" layer="1"/>
<wire x1="9.5" y1="6" x2="9.5" y2="11" width="0.1524" layer="1"/>
<wire x1="9" y1="5.5" x2="9.5" y2="6" width="0.1524" layer="1"/>
<wire x1="9" y1="4" x2="9" y2="5.5" width="0.1524" layer="1"/>
<wire x1="9.5" y1="3.5" x2="9" y2="4" width="0.1524" layer="1"/>
<wire x1="11.5" y1="3.5" x2="9.5" y2="3.5" width="0.1524" layer="1"/>
<wire x1="13" y1="2" x2="11.5" y2="3.5" width="0.1524" layer="1"/>
<wire x1="13.5" y1="11" x2="13.8" y2="11.1" width="0.1524" layer="1"/>
<wire x1="13" y1="2" x2="13.01" y2="2.14" width="0.1524" layer="1"/>
</signal>
<signal name="B">
<contactref element="S2" pad="4"/>
<contactref element="SPEC" pad="4"/>
<wire x1="24" y1="16.5" x2="23.1" y2="17.4" width="0.1524" layer="1"/>
<wire x1="24" y1="13.5" x2="24" y2="16.5" width="0.1524" layer="1"/>
<wire x1="19" y1="8.5" x2="24" y2="13.5" width="0.1524" layer="1"/>
<wire x1="16.5" y1="6" x2="19" y2="8.5" width="0.1524" layer="16"/>
<wire x1="15" y1="6" x2="16.5" y2="6" width="0.1524" layer="16"/>
<wire x1="14" y1="5" x2="15" y2="6" width="0.1524" layer="16"/>
<wire x1="13.5" y1="5" x2="14" y2="5" width="0.1524" layer="16"/>
<wire x1="13.5" y1="5" x2="13.01" y2="4.68" width="0.1524" layer="16"/>
<via x="19" y="8.5" extent="1-16" drill="0.35"/>
</signal>
<signal name="ENC1_B">
<contactref element="S2" pad="5"/>
<contactref element="SPEC" pad="8"/>
<wire x1="18" y1="15" x2="23" y2="20" width="0.1524" layer="1"/>
<wire x1="18" y1="5" x2="18" y2="15" width="0.1524" layer="1"/>
<wire x1="23" y1="20" x2="23.1" y2="20.4" width="0.1524" layer="1"/>
<wire x1="18" y1="5" x2="18.09" y2="4.68" width="0.1524" layer="1"/>
</signal>
<signal name="C">
<contactref element="S2" pad="6"/>
<contactref element="SPEC" pad="5"/>
<wire x1="24.5" y1="26.5" x2="17" y2="26.5" width="0.1524" layer="1"/>
<wire x1="24.5" y1="9.5" x2="24.5" y2="26.5" width="0.1524" layer="1"/>
<wire x1="22" y1="7" x2="24.5" y2="9.5" width="0.1524" layer="1"/>
<wire x1="22" y1="4" x2="22" y2="7" width="0.1524" layer="1"/>
<wire x1="21.5" y1="3.5" x2="22" y2="4" width="0.1524" layer="1"/>
<wire x1="17" y1="3.5" x2="21.5" y2="3.5" width="0.1524" layer="1"/>
<wire x1="16" y1="2.5" x2="17" y2="3.5" width="0.1524" layer="1"/>
<wire x1="17" y1="26.5" x2="16.8" y2="26.7" width="0.1524" layer="1"/>
<wire x1="16" y1="2.5" x2="15.55" y2="2.14" width="0.1524" layer="1"/>
</signal>
<signal name="ENC1_A">
<contactref element="S2" pad="10"/>
<contactref element="SPEC" pad="9"/>
<wire x1="8" y1="17" x2="7.5" y2="17" width="0.1524" layer="1"/>
<wire x1="12.5" y1="12.5" x2="8" y2="17" width="0.1524" layer="1"/>
<wire x1="13.1" y1="13.1" x2="12.5" y2="12.5" width="0.1524" layer="16"/>
<wire x1="16.9" y1="13.1" x2="13.1" y2="13.1" width="0.1524" layer="16"/>
<wire x1="23" y1="7" x2="16.9" y2="13.1" width="0.1524" layer="16"/>
<wire x1="23" y1="2" x2="23" y2="7" width="0.1524" layer="16"/>
<wire x1="21" y1="2" x2="23" y2="2" width="0.1524" layer="16"/>
<wire x1="7.5" y1="17" x2="7.5" y2="17.4" width="0.1524" layer="1"/>
<wire x1="21" y1="2" x2="20.63" y2="2.14" width="0.1524" layer="16"/>
<via x="12.5" y="12.5" extent="1-16" drill="0.35"/>
</signal>
<signal name="D">
<contactref element="S2" pad="9"/>
<contactref element="SPEC" pad="6"/>
<wire x1="8" y1="20" x2="7.5" y2="20" width="0.1524" layer="1"/>
<wire x1="10" y1="18" x2="8" y2="20" width="0.1524" layer="1"/>
<wire x1="10" y1="17" x2="10" y2="18" width="0.1524" layer="1"/>
<wire x1="15" y1="12" x2="10" y2="17" width="0.1524" layer="1"/>
<wire x1="15" y1="6" x2="15" y2="12" width="0.1524" layer="1"/>
<wire x1="15.5" y1="5.5" x2="15" y2="6" width="0.1524" layer="1"/>
<wire x1="15.5" y1="5" x2="15.5" y2="5.5" width="0.1524" layer="1"/>
<wire x1="7.5" y1="20" x2="7.5" y2="20.4" width="0.1524" layer="1"/>
<wire x1="15.5" y1="5" x2="15.55" y2="4.68" width="0.1524" layer="1"/>
</signal>
<signal name="VCC2">
<contactref element="J1" pad="5"/>
<contactref element="R5" pad="2"/>
<contactref element="R6" pad="2"/>
<wire x1="13.5" y1="54" x2="13.5" y2="49" width="0.1524" layer="16"/>
<wire x1="6.5" y1="54" x2="7.5" y2="54" width="0.1524" layer="16"/>
<wire x1="7.5" y1="54" x2="13.5" y2="54" width="0.1524" layer="16"/>
<wire x1="6" y1="54.5" x2="6.5" y2="54" width="0.1524" layer="16"/>
<wire x1="5.5" y1="54.5" x2="6" y2="54.5" width="0.1524" layer="16"/>
<wire x1="13.5" y1="49" x2="13.8" y2="48.57" width="0.1524" layer="16"/>
<wire x1="5.5" y1="54.5" x2="5.3" y2="54.66" width="0.1524" layer="16"/>
<wire x1="7.5" y1="54" x2="7.5" y2="59.65" width="0.1524" layer="16"/>
</signal>
<signal name="ENC2_B">
<contactref element="SW1" pad="B"/>
<contactref element="J1" pad="3"/>
<wire x1="11.4" y1="56.3" x2="12.725" y2="56.3" width="0.1524" layer="1"/>
<wire x1="5.3" y1="49.58" x2="5.3" y2="50.2" width="0.1524" layer="1"/>
<wire x1="11.4" y1="56.3" x2="5.3" y2="50.2" width="0.1524" layer="1"/>
<wire x1="12.725" y1="56.3" x2="12.8" y2="56.4" width="0.1524" layer="1"/>
</signal>
<signal name="ENC2_A">
<contactref element="SW1" pad="A"/>
<contactref element="J1" pad="2"/>
<wire x1="13" y1="51.5" x2="17.5" y2="56" width="0.1524" layer="1"/>
<wire x1="7.5" y1="51.5" x2="13" y2="51.5" width="0.1524" layer="1"/>
<wire x1="6.8" y1="50.8" x2="7.5" y2="51.5" width="0.1524" layer="1"/>
<wire x1="6.8" y1="48.3" x2="6.8" y2="50.8" width="0.1524" layer="1"/>
<wire x1="5.5" y1="47" x2="6.8" y2="48.3" width="0.1524" layer="1"/>
<wire x1="17.5" y1="56" x2="17.8" y2="56.4" width="0.1524" layer="1"/>
<wire x1="5.5" y1="47" x2="5.3" y2="47.04" width="0.1524" layer="1"/>
</signal>
<signal name="PUSH2">
<contactref element="SW1" pad="D"/>
<contactref element="J1" pad="4"/>
<wire x1="11.5" y1="48" x2="17.5" y2="42" width="0.1524" layer="16"/>
<wire x1="11.5" y1="51.5" x2="11.5" y2="48" width="0.1524" layer="16"/>
<wire x1="6.5" y1="51.5" x2="11.5" y2="51.5" width="0.1524" layer="16"/>
<wire x1="6" y1="52" x2="6.5" y2="51.5" width="0.1524" layer="16"/>
<wire x1="5.5" y1="52" x2="6" y2="52" width="0.1524" layer="16"/>
<wire x1="17.5" y1="42" x2="17.8" y2="41.9" width="0.1524" layer="16"/>
<wire x1="5.5" y1="52" x2="5.3" y2="52.12" width="0.1524" layer="16"/>
</signal>
<signal name="N$1">
<contactref element="R1" pad="1"/>
<contactref element="D1" pad="A"/>
<wire x1="2.5" y1="18" x2="2.5" y2="15" width="0.1524" layer="16"/>
<wire x1="1.5" y1="19" x2="2.5" y2="18" width="0.1524" layer="16"/>
<wire x1="2.5" y1="15" x2="2.89" y2="14.69" width="0.1524" layer="16"/>
<wire x1="1.5" y1="19" x2="1.84" y2="19.02" width="0.1524" layer="16"/>
</signal>
<signal name="N$2">
<contactref element="R2" pad="1"/>
<contactref element="D2" pad="A"/>
<wire x1="26.5" y1="18" x2="26.5" y2="14.5" width="0.1524" layer="16"/>
<wire x1="25.5" y1="19" x2="26.5" y2="18" width="0.1524" layer="16"/>
<wire x1="26.5" y1="14.5" x2="26.49" y2="14.05" width="0.1524" layer="16"/>
<wire x1="25.5" y1="19" x2="25.98" y2="19.02" width="0.1524" layer="16"/>
</signal>
<signal name="N$3">
<contactref element="R3" pad="1"/>
<contactref element="D3" pad="A"/>
<wire x1="7.5" y1="8" x2="7.5" y2="12" width="0.1524" layer="16"/>
<wire x1="8" y1="7.5" x2="7.5" y2="8" width="0.1524" layer="16"/>
<wire x1="7.5" y1="12" x2="7.09" y2="12.06" width="0.1524" layer="16"/>
<wire x1="8" y1="7.5" x2="8.28" y2="7.08" width="0.1524" layer="16"/>
</signal>
<signal name="N$4">
<contactref element="R4" pad="1"/>
<contactref element="D4" pad="A"/>
<wire x1="15.5" y1="30.5" x2="11.5" y2="30.5" width="0.1524" layer="16"/>
<wire x1="11.5" y1="30.5" x2="11.4" y2="30.48" width="0.1524" layer="16"/>
<wire x1="15.5" y1="30.5" x2="15.81" y2="30.72" width="0.1524" layer="16"/>
</signal>
<signal name="N$5">
<contactref element="R5" pad="1"/>
<contactref element="D5" pad="A"/>
<wire x1="13.5" y1="60" x2="10.5" y2="60" width="0.1524" layer="16"/>
<wire x1="10.5" y1="60" x2="10.3" y2="59.65" width="0.1524" layer="16"/>
<wire x1="13.5" y1="60" x2="13.86" y2="59.83" width="0.1524" layer="16"/>
</signal>
<signal name="N$6">
<contactref element="R6" pad="1"/>
<contactref element="D6" pad="A"/>
<wire x1="20" y1="45.5" x2="17" y2="48.5" width="0.1524" layer="16"/>
<wire x1="20" y1="40.5" x2="20" y2="45.5" width="0.1524" layer="16"/>
<wire x1="15.5" y1="40.5" x2="20" y2="40.5" width="0.1524" layer="16"/>
<wire x1="14.5" y1="39.5" x2="15.5" y2="40.5" width="0.1524" layer="16"/>
<wire x1="17" y1="48.5" x2="16.6" y2="48.57" width="0.1524" layer="16"/>
<wire x1="14.5" y1="39.5" x2="14.14" y2="39.23" width="0.1524" layer="16"/>
</signal>
<signal name="VCC1">
<contactref element="SPEC" pad="2"/>
<contactref element="R1" pad="2"/>
<contactref element="R2" pad="2"/>
<contactref element="R3" pad="2"/>
<contactref element="R4" pad="2"/>
<wire x1="4.5" y1="13.5" x2="2.89" y2="11.89" width="0.1524" layer="16"/>
<wire x1="8" y1="13.5" x2="4.5" y2="13.5" width="0.1524" layer="16"/>
<wire x1="9" y1="12.5" x2="8" y2="13.5" width="0.1524" layer="16"/>
<wire x1="9.5" y1="12.5" x2="9" y2="12.5" width="0.1524" layer="16"/>
<wire x1="9.5" y1="12.5" x2="9.89" y2="12.06" width="0.1524" layer="16"/>
<wire x1="24" y1="13.5" x2="26" y2="11.5" width="0.1524" layer="16"/>
<wire x1="8" y1="13.5" x2="9" y2="13.5" width="0.1524" layer="16"/>
<wire x1="9" y1="13.5" x2="24" y2="13.5" width="0.1524" layer="16"/>
<wire x1="26" y1="11.5" x2="26.49" y2="11.25" width="0.1524" layer="16"/>
<wire x1="9" y1="13.5" x2="9" y2="30" width="0.1524" layer="16"/>
<wire x1="9" y1="30" x2="8.6" y2="30.48" width="0.1524" layer="16"/>
<wire x1="10" y1="12" x2="10" y2="5" width="0.1524" layer="16"/>
<wire x1="10" y1="5" x2="10.47" y2="4.68" width="0.1524" layer="16"/>
<wire x1="10" y1="12" x2="9.89" y2="12.06" width="0.1524" layer="16"/>
</signal>
</signals>
<mfgpreviewcolors>
<mfgpreviewcolor name="soldermaskcolor" color="0xC8008000"/>
<mfgpreviewcolor name="silkscreencolor" color="0xFFFEFEFE"/>
<mfgpreviewcolor name="backgroundcolor" color="0xFF282828"/>
<mfgpreviewcolor name="coppercolor" color="0xFFFFBF00"/>
<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>
</mfgpreviewcolors>
</board>
</drawing>
<compatibility>
<note version="8.2" severity="warning">
Since Version 8.2, EAGLE supports online libraries. The ids
of those online libraries will not be understood (or retained)
with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports URNs for individual library
assets (packages, symbols, and devices). The URNs of those assets
will not be understood (or retained) with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports the association of 3D packages
with devices in libraries, schematics, and board files. Those 3D
packages will not be understood (or retained) with this version.
</note>
</compatibility>
</eagle>

branch_name: refs/heads/main

gha_language: Python


text:
export default class PodiumController {
    private model: any;
    private view: any;
    private isTest: boolean;
    constructor(model: any, view: any, isTest: boolean) {
        this.model = model;
        this.view = view;
    }
    public displayView() {
        return this.view.display(this.model.getUsers());
    }
    public updateView() {
        if (!this.isTest) {
            return this.view.update(this.model.getUsers());
        }
    }
}

license: MIT

license_type: permissive

branch_name: refs/heads/master

gha_license_id: MIT

gha_language: TypeScript

extension: ts


text:
const {ccclass, property} = cc._decorator;
@ccclass
export default class FireComponent extends cc.Component {
    @property
    isWidget: boolean = false;
    @property(cc.Node)
    _widgetTarget: cc.Node = null;
    @property(cc.Node)
    public get widgetTarget () {
        return this._widgetTarget;
    }
    public set widgetTarget (value) {
        this._widgetTarget = value;
        this.isWidget = !!this._widgetTarget;
        if (!CC_EDITOR) {
            this.initWidgit();
        }
    }

    private gfx: cc.Graphics = null;
    private particles: any[] = [];
    private all: any[] = [];
    onLoad () {
        this.gfx = this.node.addComponent(cc.Graphics);
        // widgit
        this.initWidgit();
        // touch
        this.initTouch();
    }

    onDestroy () {

    }

    private initWidgit () {
        // 全屏适配
        if (!this.isWidget) return;
        let canvas = cc.find("Canvas");
        let widget = this.node.addComponent(cc.Widget);
        widget.target = this.widgetTarget || canvas;
        widget.isAlignTop = true;
        widget.isAlignLeft = true;
        widget.isAlignRight = true;
        widget.isAlignBottom = true;
        widget.left = 0;
        widget.right = 0;
        widget.top = 0;
        widget.bottom = 0;
        widget.alignMode = cc.Widget.AlignMode.ON_WINDOW_RESIZE;
    }

    private initTouch () {
        // 点击事件
        this.node.on(cc.Node.EventType.TOUCH_END, (event: cc.Event.EventTouch)=>{
            let wpos = event.getLocation();
            let npos = this.node.convertToNodeSpaceAR(wpos);
            this.fire(npos.x, npos.y);
        })
    }

    private fire (x, y) {
        // 生成烟花
        this.createFireworks(x, y);
    }

    private tick () {
        this.drawFireworks();
    }

    private createFireworks (sx, sy) {
        this.particles=[];
        this.all = [];
        var hue = Math.floor(Math.random()*51)+150;
        var hueVariance = 30;
        var count = 100;
        for(var i = 0 ;i<count;i++){
            var angle = Math.floor(Math.random()*360);
            var phue = Math.floor(Math.random()*2*hueVariance)+(hue-hueVariance);
            var brightness = Math.floor(Math.random()*31)+50;
            var alpha = (Math.floor(Math.random()*61)+40)/100;
            var color = this.hsla2rgba('hsla('+phue+', 100%, '+brightness+'%)', alpha);
            var p = {
                radians: angle * Math.PI / 180,
                x: sx,
                y: sy,
                speed: (Math.random()*5)+.4,
                radius: 0,
                size: Math.floor(Math.random()*3)+1,
                r: color.r,
                g: color.g,
                b: color.b,
                alpha: alpha,
            };
            p.radius = p.speed;
            this.particles.push(p);
            var n = this.cloneObject(p);
            this.all.push(n);
        }
    }

    private colorBlend (c1: cc.Color, c2: cc.Color) : cc.Color {
        let c = cc.color();
        let alpha = 1-(1-c1.a/255)*(1-c2.a/255);
        c.a = Math.round(alpha * 255);
        c.r = Math.round((c1.r * (c1.a / 255) / alpha) + (c2.r * c2.a / 255 * (1 - (c1.a / 255)) / alpha));
        c.g = Math.round((c1.g * (c1.a / 255) / alpha) + (c2.g * c2.a / 255 * (1 - (c1.a / 255)) / alpha));
        c.b = Math.round((c1.b * (c1.a / 255) / alpha) + (c2.b * c2.a / 255 * (1 - (c1.a / 255)) / alpha));
        return c;
    }

    private isBlack (c: cc.Color) : boolean {
        let filter = 255 * 0.1;
        return c.r < filter && c.g < filter && c.b < filter;
    }

    private cloneObject (p): any {
        let n = {};
        let keys = Object.keys(p);
        keys.forEach(key=>{
            n[key] = p[key];
        })
        return n;
    }

    private drawFireworks () {
        this.gfx.clear();
        // 混合
        let c = cc.color(0,0,0,26);
        for (var i = 0; i < this.all.length; ++i) {
            let p = this.all[i];
            let color = cc.color(p.r, p.g, p.b);
            color.a = Math.round(p.alpha * 255)
            color = this.colorBlend(c, color);
            p.alpha = color.a / 255;
            p.r = color.r;
            p.g = color.g;
            p.b = color.b;
            let isBlack = this.isBlack(cc.color(p.r, p.g, p.b));
            if (!isBlack) {
                this.gfx.arc(p.x, p.y, p.size, 0, Math.PI*2, false);
                this.gfx.fillColor = cc.color(p.r, p.g, p.b, Math.round(p.alpha * 255));
                this.gfx.fill();
            }
        }

        let isDraw = false;
        for(var i = 0 ;i<this.particles.length;i++){
            var p = this.particles[i];
            var vx = Math.cos(p.radians) * p.radius;
            var vy = Math.sin(p.radians) * p.radius + 0.4;
            p.x -= vx;
            p.y -= vy;
            p.radius *= 1 - p.speed/100;
            p.alpha -= 0.005;
            if (p.alpha > 0) {
                let color = cc.color(p.r, p.g, p.b);
                color.a = Math.round(p.alpha * 255);
                isDraw = true;
                this.gfx.arc(p.x, p.y, p.size, 0, Math.PI*2, false);
                this.gfx.fillColor = color;
                this.gfx.fill();
            }
        }

        if (isDraw) {
            this.all = this.all.filter(p=>!this.isBlack(cc.color(p.r, p.g, p.b)));
            this.particles.forEach(p=>{
                if (p.alpha > 0) {
                    let n = this.cloneObject(p);
                    this.all.push(n);
                }
            })
        } else {
            this.all = [];
            this.particles = [];
            this.gfx.clear();
        }
    }

    private hsla2rgba (str, alpha): cc.Color {
        const colorArr = str.match(/\d+/g);
        let [h, s, l] = colorArr;
        h = parseFloat(h) / 360;
        s = parseFloat(s) / 100;
        l = parseFloat(l) / 100;
        if (s === 0) {
            l = Math.round(l * 255);
            return cc.color(l, l, l, Math.round(alpha * 255));
        }
        const getRGB = num => {
            let q = l >= 0.5 ? l + s - l * s : l * (1 + s); // 注意是数字1加上s，不是字母l
            let p = 2 * l - q;
            if (num < 0) {
                num += 1;
            }
            if (num > 1) {
                num -= 1;
            }
            switch (true) {
                case num > 2 / 3:
                num = p;
                break;
                case num >= 1 / 2:
                num = p + (q - p) * 6 * (2 / 3 - num);
                break;
                case num >= 1 / 6:
                num = q;
                break;
                default:
                num = p + (q - p) * 6 * num;
                break;
            }
            return Math.round(num * 255);
        };
        let r = getRGB(h + 1 / 3);
        let g = getRGB(h);
        let b = getRGB(h - 1 / 3);
        return cc.color(r, g, b, Math.round(alpha * 255));
    }

    update () {
        this.tick();
    }
}


text:
DESCRIPTION = "Patient Monitor Demo"

HOMEPAGE = "http://www.mentor.com/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"

DEPENDS = "qtbase"

SRC_URI = "git://github.com/challinan/pmd-demo;branch=exp-12801024"
SRCREV = "be9772076359924dea677d421ce315bd4aa33abb"
SRC_URI += "file://pmd.desktop"

# i.mx6 LCD (Hannstar) is XGA
SRC_URI_mx6q += "file://xga.patch"

# Add supporting files: desktop launcher, systemd services
SRC_URI += "file://pmd.desktop \
            file://session \
            file://16x16_heartbeat.png \
            file://22x22_heartbeat.png \
            file://32x32_heartbeat.png \
            file://48x48_heartbeat.png \
            file://64x64_heartbeat.png"

S = "${WORKDIR}/git"

inherit qmake5

# Set path of qt5 headers as qmake5_base.bbclass sets this to just ${includedir} but
# actually it is ${includedir}/qt5
OE_QMAKE_PATH_HEADERS = "${OE_QMAKE_PATH_QT_HEADERS}"

FILES_${PN}-dbg += "${OE_QMAKE_PATH_EXAMPLES}/HAMPDemo/PatientMonitorDemo/.debug"
FILES_${PN} += "${OE_QMAKE_PATH_EXAMPLES}"
FILES_${PN} += "/lib/systemd/system/*"
# Pick up the dot-file
FILES_${PN} += "${ROOT_HOME}/.matchbox/*"
FILES_${PN} += "${datadir}/icons/Sato/*"

do_install_append () {
        install -d -m 755 ${D}/${datadir}/applications
        install -m 644 ${WORKDIR}/pmd.desktop ${D}/${datadir}/applications/pmd.desktop
	install -d -m 755 ${D}/${bindir}
	install -m 755 ${B}/Release/PatientMonitorDemo ${D}/${bindir}

	# Install the ${HOME}/.matchbox/sesssion file to launch demo
	install -d -m 755 ${D}/${ROOT_HOME}/.matchbox
	install -m 755 ${WORKDIR}/session ${D}/${ROOT_HOME}/.matchbox

	# Install custom icons for desktop launcher
	install -d -m 755 ${D}/${datadir}/pixmaps
	install -m 644 ${WORKDIR}/64x64_heartbeat.png ${D}/${datadir}/pixmaps
	install -m 644 ${WORKDIR}/48x48_heartbeat.png ${D}/${datadir}/pixmaps
	install -m 644 ${WORKDIR}/32x32_heartbeat.png ${D}/${datadir}/pixmaps
	install -m 644 ${WORKDIR}/22x22_heartbeat.png ${D}/${datadir}/pixmaps
	install -m 644 ${WORKDIR}/16x16_heartbeat.png ${D}/${datadir}/pixmaps
	ln -s 64x64_heartbeat.png ${D}/${datadir}/pixmaps/heartbeat.png
}

repository: challinan/meta-pmddemo

repo_name: challinan/meta-pmddemo

extension: bb


text:
#include "multiwii.h"
#include "rcinput.h"

Multiwii::Multiwii()
{
  connected = 0;
}

void Multiwii::connect()
{
  msp.begin(Serial);
}

bool Multiwii::refresh()
{
  uint16_t i2cErrorCounter = status.i2cErrorCounter;
  bool res = msp.request(MSP_STATUS, &status, sizeof(status));
  error = i2cErrorCounter != status.i2cErrorCounter;
  return res;
}

boolean Multiwii::isError()
{
  return error;
}

boolean Multiwii::isArmed()
{
  // MSP_MODE_ARM BIT 0
  return status.flightModeFlags & 1;
}

bool Multiwii::disarm()
{
  msp_rc_t rc;
  if (msp.request(MSP_RC, &rc, sizeof(rc)))
  {
    // THROTTLE
    rc.channelValue[3] = SERVO_MIN;
    // YAW
    rc.channelValue[2] = SERVO_MIN;

    if (msp.request(MSP_SET_RAW_RC, &rc, sizeof(rc)))
    {
      delay(300);
      if (refresh() && !isArmed())
      {
        delay(300);
             // THROTTLE
        rc.channelValue[3] = SERVO_MID;
        // YAW
        rc.channelValue[2] = SERVO_MID;
        if (msp.request(MSP_SET_RAW_RC, &rc, sizeof(rc)))
        {
          delay(300);
          return refresh() && !isArmed();
        }
      }
    }
  }
  return 0;
}

repository: oleksm/pod

repo_name: oleksm/pod

extension: cpp


text:
/*
Copyright 2019 The Vitess Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package tabletmanager

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
	"path"
	"strconv"
	"time"

	"github.com/spf13/pflag"

	"vitess.io/vitess/go/timer"
	"vitess.io/vitess/go/vt/log"
	"vitess.io/vitess/go/vt/servenv"
	"vitess.io/vitess/go/vt/topo/topoproto"
	"vitess.io/vitess/go/vt/vterrors"

	topodatapb "vitess.io/vitess/go/vt/proto/topodata"
)

var (
	orcAddr     string
	orcUser     string
	orcPassword string
	orcTimeout  = 30 * time.Second
	orcInterval time.Duration
)

func init() {
	servenv.OnParseFor("vtcombo", registerOrcFlags)
	servenv.OnParseFor("vttablet", registerOrcFlags)
}

func registerOrcFlags(fs *pflag.FlagSet) {
	fs.StringVar(&orcAddr, "orc_api_url", orcAddr, "Address of Orchestrator's HTTP API (e.g. http://host:port/api/). Leave empty to disable Orchestrator integration.")
	_ = fs.MarkDeprecated("orc_api_url", "Orchestrator integration is deprecated. Consider using VTOrc instead")
	fs.StringVar(&orcUser, "orc_api_user", orcUser, "(Optional) Basic auth username to authenticate with Orchestrator's HTTP API. Leave empty to disable basic auth.")
	_ = fs.MarkDeprecated("orc_api_user", "Orchestrator integration is deprecated. Consider using VTOrc instead")
	fs.StringVar(&orcPassword, "orc_api_password", orcPassword, "(Optional) Basic auth password to authenticate with Orchestrator's HTTP API.")
	_ = fs.MarkDeprecated("orc_api_password", "Orchestrator integration is deprecated. Consider using VTOrc instead")
	fs.DurationVar(&orcTimeout, "orc_timeout", orcTimeout, "Timeout for calls to Orchestrator's HTTP API.")
	_ = fs.MarkDeprecated("orc_timeout", "Orchestrator integration is deprecated. Consider using VTOrc instead")
	fs.DurationVar(&orcInterval, "orc_discover_interval", orcInterval, "How often to ping Orchestrator's HTTP API endpoint to tell it we exist. 0 means never.")
	_ = fs.MarkDeprecated("orc_discover_interval", "Orchestrator integration is deprecated. Consider using VTOrc instead")
}

type orcClient struct {
	apiRoot    *url.URL
	httpClient *http.Client
}

// newOrcClient creates a client for the Orchestrator HTTP API.
// It should only be called after flags have been parsed.
func newOrcClient() (*orcClient, error) {
	if orcAddr == "" {
		// Orchestrator integration is disabled.
		return nil, nil
	}
	log.Errorf("Orchestrator integration has been deprecated. Consider using VTOrc instead.")
	apiRoot, err := url.Parse(orcAddr)
	if err != nil {
		return nil, vterrors.Wrapf(err, "can't parse --orc_api_url flag value (%v)", orcAddr)
	}
	return &orcClient{
		apiRoot:    apiRoot,
		httpClient: &http.Client{Timeout: orcTimeout},
	}, nil
}

// DiscoverLoop periodically calls orc.discover() until process termination.
// The Tablet is read from the given tm each time before calling discover().
// Usually this will be launched as a background goroutine.
func (orc *orcClient) DiscoverLoop(tm *TabletManager) {
	if orcInterval == 0 {
		// 0 means never.
		return
	}
	log.Infof("Starting periodic Orchestrator self-registration: API URL = %v, interval = %v", orcAddr, orcInterval)

	// Randomly vary the interval by +/- 25% to reduce the potential for spikes.
	ticker := timer.NewRandTicker(orcInterval, orcInterval/4)

	// Remember whether we've most recently succeeded or failed.
	var lastErr error

	for {
		// Do the first attempt immediately.
		err := orc.Discover(tm.Tablet())

		// Only log if we're transitioning between success and failure states.
		if (err != nil) != (lastErr != nil) {
			if err != nil {
				log.Warningf("Orchestrator self-registration attempt failed: %v", err)
			} else {
				log.Infof("Orchestrator self-registration succeeded.")
			}
		}
		lastErr = err

		// Wait for the next tick.
		// The only way to stop the loop is to terminate the process.
		<-ticker.C
	}
}

// Discover executes a single attempt to self-register with Orchestrator.
func (orc *orcClient) Discover(tablet *topodatapb.Tablet) error {
	host, port, err := mysqlHostPort(tablet)
	if err != nil {
		return err
	}
	_, err = orc.apiGet("discover", host, port)
	return err
}

// BeginMaintenance tells Orchestrator not to touch the given tablet
// until we call EndMaintenance().
func (orc *orcClient) BeginMaintenance(tablet *topodatapb.Tablet, reason string) error {
	host, port, err := mysqlHostPort(tablet)
	if err != nil {
		return err
	}
	_, err = orc.apiGet("begin-maintenance", host, port, "vitess", reason)
	return err
}

// EndMaintenance tells Orchestrator to remove the maintenance block on the
// given tablet, which should have been placed there by BeginMaintenance().
func (orc *orcClient) EndMaintenance(tablet *topodatapb.Tablet) error {
	host, port, err := mysqlHostPort(tablet)
	if err != nil {
		return err
	}
	_, err = orc.apiGet("end-maintenance", host, port)
	return err
}

func (orc *orcClient) InActiveShardRecovery(tablet *topodatapb.Tablet) (bool, error) {
	alias := fmt.Sprintf("%v.%v", tablet.GetKeyspace(), tablet.GetShard())

	// TODO(zmagg): Replace this with simpler call to active-cluster-recovery
	// when call with alias parameter is supported.
	resp, err := orc.apiGet("audit-recovery", "alias", alias)

	if err != nil {
		return false, fmt.Errorf("error calling Orchestrator API: %v", err)
	}

	var r []map[string]any

	if err := json.Unmarshal(resp, &r); err != nil {
		return false, fmt.Errorf("error parsing JSON response from Orchestrator: %v; response: %q", err, string(resp))
	}

	// Orchestrator returns a 0-length response when it has no history of recovery on this cluster.
	if len(r) == 0 {
		return false, nil
	}

	active, ok := r[0]["IsActive"].(bool)

	if !ok {
		return false, fmt.Errorf("error parsing JSON response from Orchestrator")
	}
	return active, nil
}

func mysqlHostPort(tablet *topodatapb.Tablet) (host, port string, err error) {
	mysqlPort := int(tablet.MysqlPort)
	if mysqlPort == 0 {
		return "", "", fmt.Errorf("MySQL port is unknown for tablet %v (mysqld may not be running yet)", topoproto.TabletAliasString(tablet.Alias))
	}
	return tablet.MysqlHostname, strconv.Itoa(mysqlPort), nil
}

// apiGet calls the given Orchestrator API endpoint.
// The final, assembled path will be URL-escaped, but things like '/' inside a
// path part can still confuse the HTTP API. We can't do anything about that
// because Orchestrator's API chose to put variable values in path elements
// rather than query arguments.
func (orc *orcClient) apiGet(pathParts ...string) ([]byte, error) {
	// Append pathParts to a copy of the apiRoot URL.
	url := *orc.apiRoot
	fullPath := make([]string, 0, len(pathParts)+1)
	fullPath = append(fullPath, url.Path)
	fullPath = append(fullPath, pathParts...)
	url.Path = path.Join(fullPath...)

	// Note that url.String() will URL-escape the path we gave it above.
	req, err := http.NewRequest("GET", url.String(), nil)
	if err != nil {
		return nil, err
	}
	if orcUser != "" {
		req.SetBasicAuth(orcUser, orcPassword)
	}
	resp, err := orc.httpClient.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	return io.ReadAll(resp.Body)
}

repository: github/vitess-gh

repo_name: github/vitess-gh

gha_language: Go

extension: go