Update... everything?

This commit is contained in:
Xun Zhang 2023-12-21 17:54:39 -08:00
parent 9209d75058
commit b45a052cdc
13 changed files with 111 additions and 6748 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
build/
.vscode/

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +0,0 @@
[Eagle]
Version="07 05 00"
Platform="Mac OS X"
Serial="62191E841E-LSR-WLM-1EL"
Globals="Globals"
Desktop="Desktop"
[Globals]
AutoSaveProject=1
[Win_1]
Type="Control Panel"
Loc="4 23 1439 899"
State=2
Number=0
[Desktop]
Screen="1440 900"
Window="Win_1"

View File

@ -1,723 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.5.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.05" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<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="15" 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="no" 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="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="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="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<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="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" 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="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"/>
</layers>
<board>
<plain>
<wire x1="0" y1="0" x2="50.78" y2="0" width="0" layer="20"/>
<wire x1="50.78" y1="0" x2="50.78" y2="33.96" width="0" layer="20"/>
<wire x1="50.78" y1="33.96" x2="0" y2="33.96" width="0" layer="20"/>
<wire x1="0" y1="33.96" x2="0" y2="0" width="0" layer="20"/>
</plain>
<libraries>
<library name="E14_Arduino_revB">
<packages>
<package name="ARDUINO_MICRO">
<description>Footprint for representing an Arduino Micro board in an EAGLE schematic. Created by Dave Young for Element14. More EAGLE documentation at: http://www.element14.com/community/community/knode/cadsoft_eagle</description>
<pad name="A0" x="11.43" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A1" x="13.97" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A2" x="16.51" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A3" x="19.05" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A4" x="21.59" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A5" x="24.13" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="REF" x="8.89" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="23.876" y1="1.016" x2="24.384" y2="1.524" layer="51"/>
<rectangle x1="21.336" y1="1.016" x2="21.844" y2="1.524" layer="51"/>
<rectangle x1="18.796" y1="1.016" x2="19.304" y2="1.524" layer="51"/>
<rectangle x1="16.256" y1="1.016" x2="16.764" y2="1.524" layer="51"/>
<rectangle x1="13.716" y1="1.016" x2="14.224" y2="1.524" layer="51"/>
<rectangle x1="11.176" y1="1.016" x2="11.684" y2="1.524" layer="51"/>
<rectangle x1="8.636" y1="1.016" x2="9.144" y2="1.524" layer="51"/>
<pad name="3V3" x="6.35" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="6.096" y1="1.016" x2="6.604" y2="1.524" layer="51"/>
<pad name="D13" x="3.81" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="3.556" y1="1.016" x2="4.064" y2="1.524" layer="51"/>
<wire x1="0" y1="0" x2="0" y2="17.78" width="0.127" layer="20"/>
<wire x1="0" y1="17.78" x2="48.26" y2="17.78" width="0.127" layer="20"/>
<wire x1="48.26" y1="17.78" x2="48.26" y2="0" width="0.127" layer="20"/>
<wire x1="48.26" y1="0" x2="0" y2="0" width="0.127" layer="20"/>
<pad name="+5V" x="31.75" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="RST." x="34.29" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="GND." x="36.83" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="VIN" x="39.37" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="MISO]" x="41.91" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="SCK" x="44.45" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="NC." x="29.21" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="44.196" y1="1.016" x2="44.704" y2="1.524" layer="51"/>
<rectangle x1="41.656" y1="1.016" x2="42.164" y2="1.524" layer="51"/>
<rectangle x1="39.116" y1="1.016" x2="39.624" y2="1.524" layer="51"/>
<rectangle x1="36.576" y1="1.016" x2="37.084" y2="1.524" layer="51"/>
<rectangle x1="34.036" y1="1.016" x2="34.544" y2="1.524" layer="51"/>
<rectangle x1="31.496" y1="1.016" x2="32.004" y2="1.524" layer="51"/>
<rectangle x1="28.956" y1="1.016" x2="29.464" y2="1.524" layer="51"/>
<pad name="NC" x="26.67" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="26.416" y1="1.016" x2="26.924" y2="1.524" layer="51"/>
<pad name="D9" x="11.43" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D8" x="13.97" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D7" x="16.51" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D6" x="19.05" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D5" x="21.59" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D4" x="24.13" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D10" x="8.89" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="23.876" y1="16.256" x2="24.384" y2="16.764" layer="51"/>
<rectangle x1="21.336" y1="16.256" x2="21.844" y2="16.764" layer="51"/>
<rectangle x1="18.796" y1="16.256" x2="19.304" y2="16.764" layer="51"/>
<rectangle x1="16.256" y1="16.256" x2="16.764" y2="16.764" layer="51"/>
<rectangle x1="13.716" y1="16.256" x2="14.224" y2="16.764" layer="51"/>
<rectangle x1="11.176" y1="16.256" x2="11.684" y2="16.764" layer="51"/>
<rectangle x1="8.636" y1="16.256" x2="9.144" y2="16.764" layer="51"/>
<pad name="D11" x="6.35" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="6.096" y1="16.256" x2="6.604" y2="16.764" layer="51"/>
<pad name="D12" x="3.81" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="3.556" y1="16.256" x2="4.064" y2="16.764" layer="51"/>
<pad name="GND" x="31.75" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="RST" x="34.29" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="RX1" x="36.83" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="TX1" x="39.37" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="SS" x="41.91" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="MOSI" x="44.45" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D2" x="29.21" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="44.196" y1="16.256" x2="44.704" y2="16.764" layer="51"/>
<rectangle x1="41.656" y1="16.256" x2="42.164" y2="16.764" layer="51"/>
<rectangle x1="39.116" y1="16.256" x2="39.624" y2="16.764" layer="51"/>
<rectangle x1="36.576" y1="16.256" x2="37.084" y2="16.764" layer="51"/>
<rectangle x1="34.036" y1="16.256" x2="34.544" y2="16.764" layer="51"/>
<rectangle x1="31.496" y1="16.256" x2="32.004" y2="16.764" layer="51"/>
<rectangle x1="28.956" y1="16.256" x2="29.464" y2="16.764" layer="51"/>
<pad name="D3" x="26.67" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="26.416" y1="16.256" x2="26.924" y2="16.764" layer="51"/>
<hole x="1.27" y="1.27" drill="1.2"/>
<hole x="1.27" y="16.51" drill="1.2"/>
<hole x="46.99" y="16.51" drill="1.2"/>
<hole x="46.99" y="1.27" drill="1.2"/>
<wire x1="-0.8382" y1="5.3086" x2="4.2418" y2="5.3086" width="0.127" layer="21"/>
<wire x1="4.2418" y1="5.3086" x2="4.2418" y2="12.3698" width="0.127" layer="21"/>
<wire x1="4.2418" y1="12.3698" x2="-0.8382" y2="12.3698" width="0.127" layer="21"/>
<wire x1="-0.8382" y1="12.3698" x2="-0.8382" y2="5.3086" width="0.127" layer="21"/>
<smd name="&lt;USB&gt;+V" x="3.1496" y="10.9474" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;D+" x="3.1496" y="9.9568" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;D-" x="3.1496" y="8.9408" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;ID" x="3.1496" y="7.9756" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;GND" x="3.1496" y="6.9596" dx="1.27" dy="0.635" layer="1"/>
<text x="39.0144" y="3.2258" size="1.27" layer="21" rot="R90">ICSP</text>
<circle x="39.116" y="2.54" radius="0.127" width="0.127" layer="21"/>
<wire x1="46.99" y1="7.112" x2="46.355" y2="7.747" width="0.1524" layer="21"/>
<wire x1="45.085" y1="7.747" x2="44.45" y2="7.112" width="0.1524" layer="21"/>
<wire x1="44.45" y1="7.112" x2="43.815" y2="7.747" width="0.1524" layer="21"/>
<wire x1="42.545" y1="7.747" x2="41.91" y2="7.112" width="0.1524" layer="21"/>
<wire x1="41.91" y1="7.112" x2="41.275" y2="7.747" width="0.1524" layer="21"/>
<wire x1="40.005" y1="7.747" x2="39.37" y2="7.112" width="0.1524" layer="21"/>
<wire x1="46.99" y1="3.302" x2="46.355" y2="2.667" width="0.1524" layer="21"/>
<wire x1="46.355" y1="2.667" x2="45.085" y2="2.667" width="0.1524" layer="21"/>
<wire x1="45.085" y1="2.667" x2="44.45" y2="3.302" width="0.1524" layer="21"/>
<wire x1="44.45" y1="3.302" x2="43.815" y2="2.667" width="0.1524" layer="21"/>
<wire x1="43.815" y1="2.667" x2="42.545" y2="2.667" width="0.1524" layer="21"/>
<wire x1="42.545" y1="2.667" x2="41.91" y2="3.302" width="0.1524" layer="21"/>
<wire x1="41.91" y1="3.302" x2="41.275" y2="2.667" width="0.1524" layer="21"/>
<wire x1="41.275" y1="2.667" x2="40.005" y2="2.667" width="0.1524" layer="21"/>
<wire x1="40.005" y1="2.667" x2="39.37" y2="3.302" width="0.1524" layer="21"/>
<wire x1="44.45" y1="3.302" x2="44.45" y2="7.112" width="0.1524" layer="21"/>
<wire x1="41.91" y1="3.302" x2="41.91" y2="7.112" width="0.1524" layer="21"/>
<wire x1="39.37" y1="3.302" x2="39.37" y2="7.112" width="0.1524" layer="21"/>
<wire x1="41.275" y1="7.747" x2="40.005" y2="7.747" width="0.1524" layer="21"/>
<wire x1="43.815" y1="7.747" x2="42.545" y2="7.747" width="0.1524" layer="21"/>
<wire x1="46.355" y1="7.747" x2="45.085" y2="7.747" width="0.1524" layer="21"/>
<wire x1="46.99" y1="3.302" x2="46.99" y2="7.112" width="0.1524" layer="21"/>
<pad name="GND_" x="45.72" y="6.477" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="RESET.." x="45.72" y="3.937" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="MOSI." x="43.18" y="6.477" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="SCK." x="43.18" y="3.937" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="5V" x="40.64" y="6.477" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="MISO." x="40.64" y="3.937" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<rectangle x1="45.466" y1="6.223" x2="45.974" y2="6.731" layer="51" rot="R180"/>
<rectangle x1="45.466" y1="3.683" x2="45.974" y2="4.191" layer="51" rot="R180"/>
<rectangle x1="42.926" y1="3.683" x2="43.434" y2="4.191" layer="51" rot="R180"/>
<rectangle x1="42.926" y1="6.223" x2="43.434" y2="6.731" layer="51" rot="R180"/>
<rectangle x1="40.386" y1="3.683" x2="40.894" y2="4.191" layer="51" rot="R180"/>
<rectangle x1="40.386" y1="6.223" x2="40.894" y2="6.731" layer="51" rot="R180"/>
<text x="19.05" y="10.16" size="1.27" layer="21">Arduino</text>
<text x="19.05" y="8.255" size="1.27" layer="21">Micro</text>
<text x="4.826" y="15.875" size="0.508" layer="21">1
2</text>
<text x="7.366" y="15.875" size="0.508" layer="21">1
1</text>
<text x="9.906" y="15.875" size="0.508" layer="21">1
0</text>
<text x="12.446" y="16.256" size="0.508" layer="21">9</text>
<text x="14.986" y="15.875" size="0.508" layer="21">8</text>
<text x="17.526" y="15.875" size="0.508" layer="21">7</text>
<text x="20.066" y="15.875" size="0.508" layer="21">6</text>
<text x="22.606" y="15.875" size="0.508" layer="21">5</text>
<text x="25.146" y="15.875" size="0.508" layer="21">4</text>
<text x="27.686" y="15.875" size="0.508" layer="21">3</text>
<text x="30.226" y="15.875" size="0.508" layer="21">2</text>
<text x="32.766" y="15.875" size="0.508" layer="21">G</text>
<text x="35.306" y="15.875" size="0.508" layer="21">R</text>
<text x="37.846" y="15.875" size="0.508" layer="21">R
X</text>
<text x="40.386" y="15.875" size="0.508" layer="21">T
X</text>
<text x="42.926" y="15.875" size="0.508" layer="21">S
S</text>
<text x="43.688" y="14.986" size="0.508" layer="21">MOSI</text>
<text x="47.244" y="2.921" size="0.508" layer="21">S
C
K</text>
<text x="43.053" y="0.762" size="0.508" layer="21">M
I</text>
<text x="40.513" y="0.762" size="0.508" layer="21">V
I</text>
<text x="37.973" y="1.524" size="0.508" layer="21">G</text>
<text x="35.306" y="0.762" size="0.508" layer="21">R
S</text>
<text x="32.766" y="0.762" size="0.508" layer="21">5
V</text>
<text x="25.146" y="0.635" size="0.508" layer="21">A
5</text>
<text x="22.606" y="0.635" size="0.508" layer="21">A
4</text>
<text x="20.066" y="0.635" size="0.508" layer="21">A
3</text>
<text x="17.526" y="0.635" size="0.508" layer="21">A
2</text>
<text x="14.986" y="0.635" size="0.508" layer="21">A
1</text>
<text x="12.446" y="0.635" size="0.508" layer="21">A
0</text>
<text x="10.033" y="0.635" size="0.508" layer="21">R
F</text>
<text x="7.366" y="0.635" size="0.508" layer="21">3
V</text>
<text x="4.826" y="0.635" size="0.508" layer="21">1
3</text>
<wire x1="47.244" y1="2.794" x2="46.482" y2="2.032" width="0.127" layer="21"/>
<wire x1="46.482" y1="2.032" x2="45.085" y2="2.032" width="0.127" layer="21"/>
</package>
</packages>
</library>
<library name="con-lstb">
<description>&lt;b&gt;Pin Headers&lt;/b&gt;&lt;p&gt;
Naming:&lt;p&gt;
MA = male&lt;p&gt;
# contacts - # rows&lt;p&gt;
W = angled&lt;p&gt;
&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;</description>
<packages>
<package name="MA04-1">
<description>&lt;b&gt;PIN HEADER&lt;/b&gt;</description>
<wire x1="-4.445" y1="1.27" x2="-3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-3.175" y1="1.27" x2="-2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="-0.635" x2="-3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="0.635" x2="-1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-1.905" y1="1.27" x2="-0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0" y2="0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="-1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-1.905" y1="-1.27" x2="-2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="0.635" x2="-5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-4.445" y1="1.27" x2="-5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="-0.635" x2="-4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-3.175" y1="-1.27" x2="-4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0" y1="0.635" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.635" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="0" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="0.635" x2="5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="-0.635" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.635" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<pad name="1" x="-3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="-5.08" y="1.651" size="1.27" layer="25" ratio="10">&gt;NAME</text>
<text x="-6.223" y="-0.635" size="1.27" layer="21" ratio="10">1</text>
<text x="0.635" y="1.651" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
<text x="5.334" y="-0.635" size="1.27" layer="21" ratio="10">4</text>
<rectangle x1="-1.524" y1="-0.254" x2="-1.016" y2="0.254" layer="51"/>
<rectangle x1="-4.064" y1="-0.254" x2="-3.556" y2="0.254" layer="51"/>
<rectangle x1="1.016" y1="-0.254" x2="1.524" y2="0.254" layer="51"/>
<rectangle x1="3.556" y1="-0.254" x2="4.064" y2="0.254" layer="51"/>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="default">
<description language="de">&lt;b&gt;EAGLE Design Rules&lt;/b&gt;
&lt;p&gt;
Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">&lt;b&gt;EAGLE Design Rules&lt;/b&gt;
&lt;p&gt;
The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</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.5mm 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="8mil"/>
<param name="mdWirePad" value="8mil"/>
<param name="mdWireVia" value="8mil"/>
<param name="mdPadPad" value="8mil"/>
<param name="mdPadVia" value="8mil"/>
<param name="mdViaVia" value="8mil"/>
<param name="mdSmdPad" value="8mil"/>
<param name="mdSmdVia" value="8mil"/>
<param name="mdSmdSmd" value="8mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="40mil"/>
<param name="mdDrill" value="8mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="10mil"/>
<param name="msDrill" value="24mil"/>
<param name="msMicroVia" value="9.99mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="8mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<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="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<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="0"/>
<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="PCB1" library="E14_Arduino_revB" package="ARDUINO_MICRO" value="ARDUINO_MICRO" x="1.27" y="15.24"/>
<element name="LD" library="con-lstb" package="MA04-1" value="" x="8.89" y="6.35" smashed="yes" rot="R270">
<attribute name="MPN" value="" x="8.89" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="MF" value="" x="8.89" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_NEWARK" value="unknown" x="8.89" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_FARNELL" value="unknown" x="8.89" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="NAME" x="10.541" y="3.81" size="1.27" layer="25" ratio="10" rot="R270"/>
<attribute name="VALUE" x="10.541" y="5.715" size="1.27" layer="27" ratio="10" rot="R270"/>
</element>
<element name="RD" library="con-lstb" package="MA04-1" value="" x="13.97" y="6.35" smashed="yes" rot="R270">
<attribute name="MPN" value="" x="13.97" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="MF" value="" x="13.97" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_NEWARK" value="unknown" x="13.97" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_FARNELL" value="unknown" x="13.97" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="NAME" x="15.621" y="3.81" size="1.27" layer="25" ratio="10" rot="R270"/>
<attribute name="VALUE" x="15.621" y="5.715" size="1.27" layer="27" ratio="10" rot="R270"/>
</element>
<element name="LK" library="con-lstb" package="MA04-1" value="" x="19.05" y="6.35" smashed="yes" rot="R270">
<attribute name="MPN" value="" x="19.05" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="MF" value="" x="19.05" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_NEWARK" value="unknown" x="19.05" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_FARNELL" value="unknown" x="19.05" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="NAME" x="20.701" y="3.81" size="1.27" layer="25" ratio="10" rot="R270"/>
<attribute name="VALUE" x="20.701" y="5.715" size="1.27" layer="27" ratio="10" rot="R270"/>
</element>
<element name="RK" library="con-lstb" package="MA04-1" value="" x="24.13" y="6.35" smashed="yes" rot="R270">
<attribute name="MPN" value="" x="24.13" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="MF" value="" x="24.13" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_NEWARK" value="unknown" x="24.13" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="OC_FARNELL" value="unknown" x="24.13" y="6.35" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="NAME" x="25.781" y="3.81" size="1.27" layer="25" ratio="10" rot="R270"/>
<attribute name="VALUE" x="25.781" y="5.715" size="1.27" layer="27" ratio="10" rot="R270"/>
</element>
</elements>
<signals>
<signal name="N$1">
<contactref element="LD" pad="1"/>
<contactref element="PCB1" pad="A0"/>
<wire x1="8.89" y1="10.16" x2="12.7" y2="13.97" width="1.016" layer="16"/>
<wire x1="12.7" y1="13.97" x2="12.7" y2="16.51" width="1.016" layer="16"/>
</signal>
<signal name="N$2">
<contactref element="PCB1" pad="A1"/>
<contactref element="RD" pad="1"/>
<wire x1="13.97" y1="10.16" x2="15.24" y2="11.43" width="1.016" layer="16"/>
<wire x1="15.24" y1="11.43" x2="15.24" y2="16.51" width="1.016" layer="16"/>
</signal>
<signal name="N$3">
<contactref element="LK" pad="1"/>
<contactref element="PCB1" pad="A2"/>
<wire x1="19.05" y1="10.16" x2="17.78" y2="11.43" width="1.016" layer="16"/>
<wire x1="17.78" y1="11.43" x2="17.78" y2="16.51" width="1.016" layer="16"/>
</signal>
<signal name="N$4">
<contactref element="PCB1" pad="A3"/>
<contactref element="RK" pad="1"/>
<wire x1="24.13" y1="10.16" x2="20.32" y2="13.97" width="1.016" layer="16"/>
<wire x1="20.32" y1="13.97" x2="20.32" y2="16.51" width="1.016" layer="16"/>
</signal>
<signal name="N$5">
<contactref element="LD" pad="2"/>
<contactref element="RD" pad="2"/>
<contactref element="LK" pad="2"/>
<contactref element="RK" pad="2"/>
<contactref element="PCB1" pad="GND."/>
<wire x1="8.89" y1="7.62" x2="13.97" y2="7.62" width="1.016" layer="16"/>
<wire x1="13.97" y1="7.62" x2="19.05" y2="7.62" width="1.016" layer="16"/>
<wire x1="19.05" y1="7.62" x2="24.13" y2="7.62" width="1.016" layer="16"/>
<wire x1="38.1" y1="16.51" x2="29.21" y2="7.62" width="1.016" layer="16"/>
<wire x1="29.21" y1="7.62" x2="24.13" y2="7.62" width="1.016" layer="16"/>
</signal>
<signal name="N$6">
<contactref element="LD" pad="3"/>
<contactref element="RD" pad="3"/>
<contactref element="LK" pad="3"/>
<contactref element="RK" pad="3"/>
<contactref element="PCB1" pad="+5V"/>
<wire x1="8.89" y1="5.08" x2="13.97" y2="5.08" width="1.016" layer="16"/>
<wire x1="13.97" y1="5.08" x2="19.05" y2="5.08" width="1.016" layer="16"/>
<wire x1="19.05" y1="5.08" x2="24.13" y2="5.08" width="1.016" layer="16"/>
<wire x1="33.02" y1="16.51" x2="30.48" y2="19.05" width="1.016" layer="16"/>
<wire x1="30.48" y1="19.05" x2="5.08" y2="19.05" width="1.016" layer="16"/>
<wire x1="5.08" y1="19.05" x2="2.54" y2="16.51" width="1.016" layer="16"/>
<wire x1="2.54" y1="16.51" x2="2.54" y2="10.16" width="1.016" layer="16"/>
<wire x1="2.54" y1="10.16" x2="7.62" y2="5.08" width="1.016" layer="16"/>
<wire x1="7.62" y1="5.08" x2="8.89" y2="5.08" width="1.016" layer="16"/>
</signal>
<signal name="N$7">
<wire x1="0" y1="34.29" x2="50.8" y2="34.29" width="0.254" layer="16"/>
<wire x1="50.8" y1="34.29" x2="50.8" y2="0" width="0.254" layer="16"/>
<wire x1="50.8" y1="0" x2="0" y2="0" width="0.254" layer="16"/>
<wire x1="0" y1="0" x2="0" y2="34.29" width="0.254" layer="16"/>
</signal>
</signals>
<errors>
<approved hash="4,1,7941fb13d2c06888"/>
<approved hash="4,1,fe4aa21c89f301bf"/>
<approved hash="4,1,977ba12e80fca6a8"/>
<approved hash="4,1,b46f3839c7935fdf"/>
<approved hash="4,1,3d10ff4e5e9c54d3"/>
<approved hash="4,1,720fe659f58f8dc2"/>
<approved hash="4,1,db30b56a9cb9f2c9"/>
<approved hash="4,1,a8219c7483a29bf2"/>
<approved hash="4,1,91d5538fba59b0e9"/>
<approved hash="4,1,56deda84b152491d"/>
<approved hash="4,1,6fd5f98fe85d8e0c"/>
<approved hash="4,1,ecce90988f4f8703"/>
<approved hash="4,1,95ff97aaa678bc2c"/>
<approved hash="4,1,8ae35eb43d6fb523"/>
<approved hash="4,1,5394cdcaa4187a57"/>
<approved hash="4,1,408314d5eb0be346"/>
<approved hash="4,1,09b48be6e235787e"/>
<approved hash="4,1,b9f902b16f62ec30"/>
<approved hash="4,1,d0f659ba36556b03"/>
<approved hash="4,1,77c4508b3542020c"/>
<approved hash="4,1,8ed3179fac352163"/>
<approved hash="4,1,85a48ee06b39a86c"/>
<approved hash="4,1,5cb325ff7228e77f"/>
<approved hash="4,1,23804cc021234e49"/>
<approved hash="4,1,4a9e53d108183d52"/>
<approved hash="4,1,61656a25c70304a9"/>
<approved hash="4,1,986e612e4ef7c3a2"/>
<approved hash="4,1,5f6538256de6faad"/>
<approved hash="4,1,56725f3e04e979bf"/>
<approved hash="4,1,6d40760f03c60088"/>
<approved hash="4,1,645eed13cac91f9f"/>
<approved hash="4,1,ab20746459bdc6e8"/>
<approved hash="4,1,323f3b7380acd5fb"/>
<approved hash="4,1,a90c32441f949cc5"/>
<approved hash="4,16,7941fb13d2c06888"/>
<approved hash="4,16,fe4aa21c89f301bf"/>
<approved hash="4,16,977ba12e80fca6a8"/>
<approved hash="4,16,b46f3839c7935fdf"/>
<approved hash="4,16,3d10ff4e5e9c54d3"/>
<approved hash="4,16,720fe659f58f8dc2"/>
<approved hash="4,16,db30b56a9cb9f2c9"/>
<approved hash="4,16,a8219c7483a29bf2"/>
<approved hash="4,16,91d5538fba59b0e9"/>
<approved hash="4,16,56deda84b152491d"/>
<approved hash="4,16,6fd5f98fe85d8e0c"/>
<approved hash="4,16,ecce90988f4f8703"/>
<approved hash="4,16,95ff97aaa678bc2c"/>
<approved hash="4,16,8ae35eb43d6fb523"/>
<approved hash="4,16,5394cdcaa4187a57"/>
<approved hash="4,16,408314d5eb0be346"/>
<approved hash="4,16,09b48be6e235787e"/>
<approved hash="4,16,b9f902b16f62ec30"/>
<approved hash="4,16,d0f659ba36556b03"/>
<approved hash="4,16,77c4508b3542020c"/>
<approved hash="4,16,8ed3179fac352163"/>
<approved hash="4,16,85a48ee06b39a86c"/>
<approved hash="4,16,5cb325ff7228e77f"/>
<approved hash="4,16,23804cc021234e49"/>
<approved hash="4,16,4a9e53d108183d52"/>
<approved hash="4,16,61656a25c70304a9"/>
<approved hash="4,16,986e612e4ef7c3a2"/>
<approved hash="4,16,5f6538256de6faad"/>
<approved hash="4,16,56725f3e04e979bf"/>
<approved hash="4,16,6d40760f03c60088"/>
<approved hash="4,16,645eed13cac91f9f"/>
<approved hash="4,16,ab20746459bdc6e8"/>
<approved hash="4,16,323f3b7380acd5fb"/>
<approved hash="4,16,a90c32441f949cc5"/>
</errors>
</board>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>

View File

@ -1,347 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Title: EAGLE Drawing /Users/ShikyC/Documents/Eagle/sanro/sanro.brd
%%Creator: EAGLE
%%Pages: 1
%%BoundingBox: 0 0 576 810
%%EndComments
% Coordinate transfer:
/EU { 254 div 0.072 mul } def
/inch { 72 mul } def
% Linestyle:
1 setlinecap
1 setlinejoin
% Drawing functions:
/l { % draw a line
/lw exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
newpath
x1 EU y1 EU moveto
x2 EU y2 EU lineto
lw EU setlinewidth
stroke
} def
/h { % draw a hole
/d exch def
/y exch def
/x exch def
d 0 gt {
newpath
x EU y EU d 2 div EU 0 360 arc
currentgray dup
1 exch sub setgray
fill
setgray
} if
} def
/b { % draw a bar
/an exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
/w2 x2 x1 sub 2 div EU def
/h2 y2 y1 sub 2 div EU def
gsave
x1 x2 add 2 div EU y1 y2 add 2 div EU translate
an rotate
newpath
w2 h2 moveto
w2 neg h2 lineto
w2 neg h2 neg lineto
w2 h2 neg lineto
closepath
fill
grestore
} def
/c { % draw a circle
/lw exch def
/rd exch def
/y exch def
/x exch def
newpath
lw EU setlinewidth
x EU y EU rd EU 0 360 arc
stroke
} def
/a { % draw an arc
/lc exch def
/ae exch def
/as exch def
/lw exch def
/rd exch def
/y exch def
/x exch def
lw rd 2 mul gt {
/rd rd lw 2 div add 2 div def
/lw rd 2 mul def
} if
currentlinecap currentlinejoin
lc setlinecap 0 setlinejoin
newpath
lw EU setlinewidth
x EU y EU rd EU as ae arc
stroke
setlinejoin setlinecap
} def
/p { % draw a pie
/d exch def
/y exch def
/x exch def
newpath
x EU y EU d 2 div EU 0 360 arc
fill
} def
/edge { 0.20710678119 mul } def
/o { % draw an octagon
/an exch def
/dy exch def
/dx exch def
/y exch def
/x exch def
gsave
x EU y EU translate
an dx dy lt { 90 add /dx dy /dy dx def def } if rotate
newpath
0 dx 2 div sub EU 0 dy edge add EU moveto
0 dx dy sub 2 div sub dy edge sub EU 0 dy 2 div add EU lineto
0 dx dy sub 2 div add dy edge add EU 0 dy 2 div add EU lineto
0 dx 2 div add EU 0 dy edge add EU lineto
0 dx 2 div add EU 0 dy edge sub EU lineto
0 dx dy sub 2 div add dy edge add EU 0 dy 2 div sub EU lineto
0 dx dy sub 2 div sub dy edge sub EU 0 dy 2 div sub EU lineto
0 dx 2 div sub EU 0 dy edge sub EU lineto
closepath
fill
grestore
} def
% the real drawing size:
/MinDrawX -511810 EU def
/MinDrawY -8307 EU def
/MaxDrawX 3810 EU def
/MaxDrawY 346710 EU def
% the usable page size:
/LeftMargin 0.25 inch def % change these if drawing gets clipped!
/BotMargin 0.25 inch def
/PageWidth 7.7500 inch def
/PageHeight 11.0000 inch def
% are we going to rotate?:
/RotateDrawing 0 0 ne def
% Media size functions:
/AbortMessage { % Show a message in a box and stop printing
/h 100 def
/Courier findfont 12 scalefont setfont
mediawidth pagemargin sub h 1 setpage
newpath
0 0 moveto
0 h rlineto
mediawidth pagemargin sub 0 rlineto
0 h neg rlineto
closepath
5 setlinewidth
stroke
newpath 50 60 moveto (ERROR: Jobsize exceeds physical printing area!) show
newpath 50 40 moveto ( Job has been aborted!) show
showpage
stop
} def
/SelectPage { % Select the page identified by Row and Column
/Column exch def
/Row exch def
% the actually exposed area (if the machine knows these parameters!):
/DrawX MaxDrawX MinDrawX sub def
/DrawY MaxDrawY MinDrawY sub def
statusdict /setpage known
statusdict /mediawidth known and
statusdict /medialength known and
statusdict /pagemargin known and {
% this is for machines that can tell the media size:
statusdict begin
/MediaW mediawidth pagemargin sub def
DrawX DrawY ge {
DrawX MediaW le DrawY medialength le and {
MediaW DrawY 1 setpage
MediaW DrawX sub 2 div 0 translate
}{
DrawY MediaW le DrawX medialength le and {
MediaW DrawX 0 setpage
0 MediaW DrawY sub 2 div translate
}{
AbortMessage
} ifelse
} ifelse
}{
DrawY MediaW le DrawX medialength le and {
MediaW DrawX 0 setpage
0 MediaW DrawY sub 2 div translate
}{
DrawX MediaW le DrawY medialength le and {
MediaW DrawY 1 setpage
MediaW DrawX sub 2 div 0 translate
}{
AbortMessage
} ifelse
} ifelse
} ifelse
end
}{
% this is for machines that can NOT tell the media size:
% (Ghostscript doesn't like this!)
/Product product length string def
/i 0 def
product { dup 97 lt { 32 add } if Product exch i exch put /i i 1 add def } forall
Product (ghostscript) search dup /IsGhostscript exch def
{ pop pop } if
pop
IsGhostscript not {
statusdict /setpage known {
statusdict begin
RotateDrawing {
LeftMargin PageHeight add BotMargin DrawY add
}{
BotMargin DrawY add LeftMargin DrawX add
} ifelse
0 setpage
end
} if
} if
% set clipping boundary:
newpath
LeftMargin BotMargin moveto
0 PageHeight rlineto
PageWidth 0 rlineto
0 PageHeight neg rlineto
closepath
clip
% set the origin:
LeftMargin BotMargin translate
RotateDrawing {
0 PageHeight translate
-90 rotate
PageHeight Column mul neg PageWidth Row mul neg translate
}{
PageWidth Column mul neg PageHeight Row mul neg translate
} ifelse
} ifelse
% move the lower left corner of the drawing to the origin:
MinDrawX neg MinDrawY neg translate
% Linestyle:
1 setlinecap
1 setlinejoin
} def
% TheDrawing
gsave 0 0 SelectPage
-127000 165100 15748 p
-152400 165100 15748 p
-177800 165100 15748 p
-203200 165100 15748 p
-228600 165100 15748 p
-254000 165100 15748 p
-101600 165100 15748 p
-76200 165100 15748 p
-50800 165100 15748 p
-330200 165100 15748 p
-355600 165100 15748 p
-381000 165100 15748 p
-406400 165100 15748 p
-431800 165100 15748 p
-457200 165100 15748 p
-304800 165100 15748 p
-279400 165100 15748 p
-127000 317500 15748 p
-152400 317500 15748 p
-177800 317500 15748 p
-203200 317500 15748 p
-228600 317500 15748 p
-254000 317500 15748 p
-101600 317500 15748 p
-76200 317500 15748 p
-50800 317500 15748 p
-330200 317500 15748 p
-355600 317500 15748 p
-381000 317500 15748 p
-406400 317500 15748 p
-431800 317500 15748 p
-457200 317500 15748 p
-304800 317500 15748 p
-279400 317500 15748 p
-469900 217170 15748 15748 0.0 o
-469900 191770 15748 15748 0.0 o
-444500 217170 15748 15748 0.0 o
-444500 191770 15748 15748 0.0 o
-419100 217170 15748 15748 0.0 o
-419100 191770 15748 15748 0.0 o
-81280 101600 -96520 101600 15240 l
-81280 76200 -96520 76200 15240 l
-81280 50800 -96520 50800 15240 l
-81280 25400 -96520 25400 15240 l
-132080 101600 -147320 101600 15240 l
-132080 76200 -147320 76200 15240 l
-132080 50800 -147320 50800 15240 l
-132080 25400 -147320 25400 15240 l
-182880 101600 -198120 101600 15240 l
-182880 76200 -198120 76200 15240 l
-182880 50800 -198120 50800 15240 l
-182880 25400 -198120 25400 15240 l
-233680 101600 -248920 101600 15240 l
-233680 76200 -248920 76200 15240 l
-233680 50800 -248920 50800 15240 l
-233680 25400 -248920 25400 15240 l
-88900 101600 -127000 139700 10160 l
-127000 139700 -127000 165100 10160 l
-139700 101600 -152400 114300 10160 l
-152400 114300 -152400 165100 10160 l
-190500 101600 -177800 114300 10160 l
-177800 114300 -177800 165100 10160 l
-241300 101600 -203200 139700 10160 l
-203200 139700 -203200 165100 10160 l
-88900 76200 -139700 76200 10160 l
-139700 76200 -190500 76200 10160 l
-190500 76200 -241300 76200 10160 l
-381000 165100 -292100 76200 10160 l
-292100 76200 -241300 76200 10160 l
-88900 50800 -139700 50800 10160 l
-139700 50800 -190500 50800 10160 l
-190500 50800 -241300 50800 10160 l
-330200 165100 -304800 190500 10160 l
-304800 190500 -50800 190500 10160 l
-50800 190500 -25400 165100 10160 l
-25400 165100 -25400 101600 10160 l
-25400 101600 -76200 50800 10160 l
-76200 50800 -88900 50800 10160 l
0 342900 -508000 342900 2540 l
-508000 342900 -508000 0 2540 l
-508000 0 0 0 2540 l
0 0 0 342900 2540 l
showpage grestore

View File

@ -1,629 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.5.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="no"/>
<layer number="2" name="Route2" color="1" fill="3" visible="yes" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="yes" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="yes" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="yes" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="yes" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="yes" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="yes" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="yes" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="yes" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="yes" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="yes" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="yes" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="yes" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="yes" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="no"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="no"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="no"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="no"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="no"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="no"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="no"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="no"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="no"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="no"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="no"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="no"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="no"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="no"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="no"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="no"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="no"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="no"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="no"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="no"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="no"/>
<layer number="37" name="tTest" color="7" fill="1" visible="yes" active="no"/>
<layer number="38" name="bTest" color="7" fill="1" visible="yes" active="no"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="no"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="no"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="no"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="no"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="no"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="no"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="no"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="no"/>
<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="no"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="no"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="no"/>
<layer number="50" name="dxf" color="7" fill="1" visible="yes" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="no"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="no"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="yes" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="yes" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="yes" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="yes" active="yes"/>
<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>
<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>
<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>
<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>
<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>
<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>
<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="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<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="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" 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="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"/>
</layers>
<schematic xreflabel="%F%N/%S.%C%R" xrefpart="/%S.%C%R">
<libraries>
<library name="E14_Arduino_revB">
<packages>
<package name="ARDUINO_MICRO">
<description>Footprint for representing an Arduino Micro board in an EAGLE schematic. Created by Dave Young for Element14. More EAGLE documentation at: http://www.element14.com/community/community/knode/cadsoft_eagle</description>
<pad name="A0" x="11.43" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A1" x="13.97" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A2" x="16.51" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A3" x="19.05" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A4" x="21.59" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="A5" x="24.13" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="REF" x="8.89" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="23.876" y1="1.016" x2="24.384" y2="1.524" layer="51"/>
<rectangle x1="21.336" y1="1.016" x2="21.844" y2="1.524" layer="51"/>
<rectangle x1="18.796" y1="1.016" x2="19.304" y2="1.524" layer="51"/>
<rectangle x1="16.256" y1="1.016" x2="16.764" y2="1.524" layer="51"/>
<rectangle x1="13.716" y1="1.016" x2="14.224" y2="1.524" layer="51"/>
<rectangle x1="11.176" y1="1.016" x2="11.684" y2="1.524" layer="51"/>
<rectangle x1="8.636" y1="1.016" x2="9.144" y2="1.524" layer="51"/>
<pad name="3V3" x="6.35" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="6.096" y1="1.016" x2="6.604" y2="1.524" layer="51"/>
<pad name="D13" x="3.81" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="3.556" y1="1.016" x2="4.064" y2="1.524" layer="51"/>
<wire x1="0" y1="0" x2="0" y2="17.78" width="0.127" layer="20"/>
<wire x1="0" y1="17.78" x2="48.26" y2="17.78" width="0.127" layer="20"/>
<wire x1="48.26" y1="17.78" x2="48.26" y2="0" width="0.127" layer="20"/>
<wire x1="48.26" y1="0" x2="0" y2="0" width="0.127" layer="20"/>
<pad name="+5V" x="31.75" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="RST." x="34.29" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="GND." x="36.83" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="VIN" x="39.37" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="MISO]" x="41.91" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="SCK" x="44.45" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="NC." x="29.21" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="44.196" y1="1.016" x2="44.704" y2="1.524" layer="51"/>
<rectangle x1="41.656" y1="1.016" x2="42.164" y2="1.524" layer="51"/>
<rectangle x1="39.116" y1="1.016" x2="39.624" y2="1.524" layer="51"/>
<rectangle x1="36.576" y1="1.016" x2="37.084" y2="1.524" layer="51"/>
<rectangle x1="34.036" y1="1.016" x2="34.544" y2="1.524" layer="51"/>
<rectangle x1="31.496" y1="1.016" x2="32.004" y2="1.524" layer="51"/>
<rectangle x1="28.956" y1="1.016" x2="29.464" y2="1.524" layer="51"/>
<pad name="NC" x="26.67" y="1.27" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="26.416" y1="1.016" x2="26.924" y2="1.524" layer="51"/>
<pad name="D9" x="11.43" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D8" x="13.97" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D7" x="16.51" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D6" x="19.05" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D5" x="21.59" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D4" x="24.13" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D10" x="8.89" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="23.876" y1="16.256" x2="24.384" y2="16.764" layer="51"/>
<rectangle x1="21.336" y1="16.256" x2="21.844" y2="16.764" layer="51"/>
<rectangle x1="18.796" y1="16.256" x2="19.304" y2="16.764" layer="51"/>
<rectangle x1="16.256" y1="16.256" x2="16.764" y2="16.764" layer="51"/>
<rectangle x1="13.716" y1="16.256" x2="14.224" y2="16.764" layer="51"/>
<rectangle x1="11.176" y1="16.256" x2="11.684" y2="16.764" layer="51"/>
<rectangle x1="8.636" y1="16.256" x2="9.144" y2="16.764" layer="51"/>
<pad name="D11" x="6.35" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="6.096" y1="16.256" x2="6.604" y2="16.764" layer="51"/>
<pad name="D12" x="3.81" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="3.556" y1="16.256" x2="4.064" y2="16.764" layer="51"/>
<pad name="GND" x="31.75" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="RST" x="34.29" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="RX1" x="36.83" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="TX1" x="39.37" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="SS" x="41.91" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="MOSI" x="44.45" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<pad name="D2" x="29.21" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="44.196" y1="16.256" x2="44.704" y2="16.764" layer="51"/>
<rectangle x1="41.656" y1="16.256" x2="42.164" y2="16.764" layer="51"/>
<rectangle x1="39.116" y1="16.256" x2="39.624" y2="16.764" layer="51"/>
<rectangle x1="36.576" y1="16.256" x2="37.084" y2="16.764" layer="51"/>
<rectangle x1="34.036" y1="16.256" x2="34.544" y2="16.764" layer="51"/>
<rectangle x1="31.496" y1="16.256" x2="32.004" y2="16.764" layer="51"/>
<rectangle x1="28.956" y1="16.256" x2="29.464" y2="16.764" layer="51"/>
<pad name="D3" x="26.67" y="16.51" drill="1.016" diameter="1.5748" rot="R90"/>
<rectangle x1="26.416" y1="16.256" x2="26.924" y2="16.764" layer="51"/>
<hole x="1.27" y="1.27" drill="1.2"/>
<hole x="1.27" y="16.51" drill="1.2"/>
<hole x="46.99" y="16.51" drill="1.2"/>
<hole x="46.99" y="1.27" drill="1.2"/>
<wire x1="-0.8382" y1="5.3086" x2="4.2418" y2="5.3086" width="0.127" layer="21"/>
<wire x1="4.2418" y1="5.3086" x2="4.2418" y2="12.3698" width="0.127" layer="21"/>
<wire x1="4.2418" y1="12.3698" x2="-0.8382" y2="12.3698" width="0.127" layer="21"/>
<wire x1="-0.8382" y1="12.3698" x2="-0.8382" y2="5.3086" width="0.127" layer="21"/>
<smd name="&lt;USB&gt;+V" x="3.1496" y="10.9474" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;D+" x="3.1496" y="9.9568" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;D-" x="3.1496" y="8.9408" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;ID" x="3.1496" y="7.9756" dx="1.27" dy="0.635" layer="1"/>
<smd name="&lt;USB&gt;GND" x="3.1496" y="6.9596" dx="1.27" dy="0.635" layer="1"/>
<text x="39.0144" y="3.2258" size="1.27" layer="21" rot="R90">ICSP</text>
<circle x="39.116" y="2.54" radius="0.127" width="0.127" layer="21"/>
<wire x1="46.99" y1="7.112" x2="46.355" y2="7.747" width="0.1524" layer="21"/>
<wire x1="45.085" y1="7.747" x2="44.45" y2="7.112" width="0.1524" layer="21"/>
<wire x1="44.45" y1="7.112" x2="43.815" y2="7.747" width="0.1524" layer="21"/>
<wire x1="42.545" y1="7.747" x2="41.91" y2="7.112" width="0.1524" layer="21"/>
<wire x1="41.91" y1="7.112" x2="41.275" y2="7.747" width="0.1524" layer="21"/>
<wire x1="40.005" y1="7.747" x2="39.37" y2="7.112" width="0.1524" layer="21"/>
<wire x1="46.99" y1="3.302" x2="46.355" y2="2.667" width="0.1524" layer="21"/>
<wire x1="46.355" y1="2.667" x2="45.085" y2="2.667" width="0.1524" layer="21"/>
<wire x1="45.085" y1="2.667" x2="44.45" y2="3.302" width="0.1524" layer="21"/>
<wire x1="44.45" y1="3.302" x2="43.815" y2="2.667" width="0.1524" layer="21"/>
<wire x1="43.815" y1="2.667" x2="42.545" y2="2.667" width="0.1524" layer="21"/>
<wire x1="42.545" y1="2.667" x2="41.91" y2="3.302" width="0.1524" layer="21"/>
<wire x1="41.91" y1="3.302" x2="41.275" y2="2.667" width="0.1524" layer="21"/>
<wire x1="41.275" y1="2.667" x2="40.005" y2="2.667" width="0.1524" layer="21"/>
<wire x1="40.005" y1="2.667" x2="39.37" y2="3.302" width="0.1524" layer="21"/>
<wire x1="44.45" y1="3.302" x2="44.45" y2="7.112" width="0.1524" layer="21"/>
<wire x1="41.91" y1="3.302" x2="41.91" y2="7.112" width="0.1524" layer="21"/>
<wire x1="39.37" y1="3.302" x2="39.37" y2="7.112" width="0.1524" layer="21"/>
<wire x1="41.275" y1="7.747" x2="40.005" y2="7.747" width="0.1524" layer="21"/>
<wire x1="43.815" y1="7.747" x2="42.545" y2="7.747" width="0.1524" layer="21"/>
<wire x1="46.355" y1="7.747" x2="45.085" y2="7.747" width="0.1524" layer="21"/>
<wire x1="46.99" y1="3.302" x2="46.99" y2="7.112" width="0.1524" layer="21"/>
<pad name="GND_" x="45.72" y="6.477" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="RESET.." x="45.72" y="3.937" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="MOSI." x="43.18" y="6.477" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="SCK." x="43.18" y="3.937" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="5V" x="40.64" y="6.477" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<pad name="MISO." x="40.64" y="3.937" drill="1.016" diameter="1.5748" shape="octagon" rot="R180"/>
<rectangle x1="45.466" y1="6.223" x2="45.974" y2="6.731" layer="51" rot="R180"/>
<rectangle x1="45.466" y1="3.683" x2="45.974" y2="4.191" layer="51" rot="R180"/>
<rectangle x1="42.926" y1="3.683" x2="43.434" y2="4.191" layer="51" rot="R180"/>
<rectangle x1="42.926" y1="6.223" x2="43.434" y2="6.731" layer="51" rot="R180"/>
<rectangle x1="40.386" y1="3.683" x2="40.894" y2="4.191" layer="51" rot="R180"/>
<rectangle x1="40.386" y1="6.223" x2="40.894" y2="6.731" layer="51" rot="R180"/>
<text x="19.05" y="10.16" size="1.27" layer="21">Arduino</text>
<text x="19.05" y="8.255" size="1.27" layer="21">Micro</text>
<text x="4.826" y="15.875" size="0.508" layer="21">1
2</text>
<text x="7.366" y="15.875" size="0.508" layer="21">1
1</text>
<text x="9.906" y="15.875" size="0.508" layer="21">1
0</text>
<text x="12.446" y="16.256" size="0.508" layer="21">9</text>
<text x="14.986" y="15.875" size="0.508" layer="21">8</text>
<text x="17.526" y="15.875" size="0.508" layer="21">7</text>
<text x="20.066" y="15.875" size="0.508" layer="21">6</text>
<text x="22.606" y="15.875" size="0.508" layer="21">5</text>
<text x="25.146" y="15.875" size="0.508" layer="21">4</text>
<text x="27.686" y="15.875" size="0.508" layer="21">3</text>
<text x="30.226" y="15.875" size="0.508" layer="21">2</text>
<text x="32.766" y="15.875" size="0.508" layer="21">G</text>
<text x="35.306" y="15.875" size="0.508" layer="21">R</text>
<text x="37.846" y="15.875" size="0.508" layer="21">R
X</text>
<text x="40.386" y="15.875" size="0.508" layer="21">T
X</text>
<text x="42.926" y="15.875" size="0.508" layer="21">S
S</text>
<text x="43.688" y="14.986" size="0.508" layer="21">MOSI</text>
<text x="47.244" y="2.921" size="0.508" layer="21">S
C
K</text>
<text x="43.053" y="0.762" size="0.508" layer="21">M
I</text>
<text x="40.513" y="0.762" size="0.508" layer="21">V
I</text>
<text x="37.973" y="1.524" size="0.508" layer="21">G</text>
<text x="35.306" y="0.762" size="0.508" layer="21">R
S</text>
<text x="32.766" y="0.762" size="0.508" layer="21">5
V</text>
<text x="25.146" y="0.635" size="0.508" layer="21">A
5</text>
<text x="22.606" y="0.635" size="0.508" layer="21">A
4</text>
<text x="20.066" y="0.635" size="0.508" layer="21">A
3</text>
<text x="17.526" y="0.635" size="0.508" layer="21">A
2</text>
<text x="14.986" y="0.635" size="0.508" layer="21">A
1</text>
<text x="12.446" y="0.635" size="0.508" layer="21">A
0</text>
<text x="10.033" y="0.635" size="0.508" layer="21">R
F</text>
<text x="7.366" y="0.635" size="0.508" layer="21">3
V</text>
<text x="4.826" y="0.635" size="0.508" layer="21">1
3</text>
<wire x1="47.244" y1="2.794" x2="46.482" y2="2.032" width="0.127" layer="21"/>
<wire x1="46.482" y1="2.032" x2="45.085" y2="2.032" width="0.127" layer="21"/>
</package>
</packages>
<symbols>
<symbol name="ARDUINO_MICRO">
<description>Schematic symbol for representing an Arduino Micro R3 board in an EAGLE schematic. Created by Dave Young for Element14. More EAGLE documentation at: http://www.element14.com/community/community/knode/cadsoft_eagle</description>
<pin name="D12" x="-17.78" y="15.24" length="short" rot="R270"/>
<pin name="D11" x="-15.24" y="15.24" length="short" rot="R270"/>
<pin name="D10" x="-12.7" y="15.24" length="short" rot="R270"/>
<pin name="D9" x="-10.16" y="15.24" length="short" rot="R270"/>
<pin name="D8" x="-7.62" y="15.24" length="short" rot="R270"/>
<pin name="D7" x="-5.08" y="15.24" length="short" rot="R270"/>
<pin name="D6" x="-2.54" y="15.24" length="short" rot="R270"/>
<pin name="D5" x="0" y="15.24" length="short" rot="R270"/>
<pin name="D4" x="2.54" y="15.24" length="short" rot="R270"/>
<pin name="D3" x="5.08" y="15.24" length="short" rot="R270"/>
<pin name="D2" x="7.62" y="15.24" length="short" rot="R270"/>
<pin name="GND" x="10.16" y="15.24" length="short" rot="R270"/>
<pin name="RST" x="12.7" y="15.24" length="short" rot="R270"/>
<pin name="RX" x="15.24" y="15.24" length="short" rot="R270"/>
<pin name="TX" x="17.78" y="15.24" length="short" rot="R270"/>
<pin name="+5V" x="10.16" y="-17.78" length="short" rot="R90"/>
<pin name="RST." x="12.7" y="-17.78" length="short" rot="R90"/>
<pin name="GND." x="15.24" y="-17.78" length="short" rot="R90"/>
<pin name="A5" x="2.54" y="-17.78" length="short" rot="R90"/>
<pin name="A4" x="0" y="-17.78" length="short" rot="R90"/>
<pin name="A3" x="-2.54" y="-17.78" length="short" rot="R90"/>
<pin name="A2" x="-5.08" y="-17.78" length="short" rot="R90"/>
<pin name="A1" x="-7.62" y="-17.78" length="short" rot="R90"/>
<pin name="A0" x="-10.16" y="-17.78" length="short" rot="R90"/>
<pin name="NC." x="7.62" y="-17.78" length="short" rot="R90"/>
<pin name="NC" x="5.08" y="-17.78" length="short" rot="R90"/>
<pin name="REF" x="-12.7" y="-17.78" length="short" rot="R90"/>
<pin name="3V3" x="-15.24" y="-17.78" length="short" rot="R90"/>
<pin name="D13" x="-17.78" y="-17.78" length="short" rot="R90"/>
<pin name="&lt;USB&gt;GND" x="-27.94" y="-7.62" length="short"/>
<pin name="&lt;USB&gt;D-" x="-27.94" y="-2.54" length="short"/>
<pin name="&lt;USB&gt;D+" x="-27.94" y="0" length="short"/>
<pin name="&lt;USB&gt;+V" x="-27.94" y="2.54" length="short"/>
<wire x1="-25.4" y1="12.7" x2="25.4" y2="12.7" width="0.254" layer="94"/>
<wire x1="25.4" y1="12.7" x2="25.4" y2="-15.24" width="0.254" layer="94"/>
<wire x1="25.4" y1="-15.24" x2="-25.4" y2="-15.24" width="0.254" layer="94"/>
<wire x1="-25.4" y1="-15.24" x2="-25.4" y2="12.7" width="0.254" layer="94"/>
<text x="-10.16" y="-2.54" size="3.81" layer="94">ARDUINO</text>
<pin name="5V" x="17.78" y="-2.54" visible="off" length="point" rot="R270"/>
<pin name="MOSI." x="20.32" y="-2.54" visible="off" length="point" rot="R270"/>
<pin name="GND_" x="22.86" y="-2.54" visible="off" length="point" rot="R270"/>
<pin name="RESET.." x="22.86" y="-5.08" visible="off" length="point" rot="R90"/>
<pin name="SCK." x="20.32" y="-5.08" visible="off" length="point" rot="R90"/>
<pin name="MISO." x="17.78" y="-5.08" visible="off" length="point" rot="R90"/>
<text x="14.224" y="-1.778" size="1.27" layer="94" rot="R270">ICSP</text>
<circle x="16.256" y="-5.842" radius="0.254" width="0.254" layer="94"/>
<pin name="VIN" x="17.78" y="-17.78" length="short" rot="R90"/>
<text x="-6.35" y="-7.62" size="3.81" layer="94">MICRO</text>
<pin name="SS" x="20.32" y="15.24" length="short" rot="R270"/>
<pin name="MOSI" x="22.86" y="15.24" length="short" rot="R270"/>
<pin name="MISO" x="20.32" y="-17.78" length="short" rot="R90"/>
<pin name="SCK" x="22.86" y="-17.78" length="short" rot="R90"/>
<pin name="&lt;USB&gt;ID" x="-27.94" y="-5.08" length="short"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="ARDUINO_MICRO" prefix="PCB">
<description>Device for representing an Arduino Micro board with a footprint in an EAGLE design. Created by Dave Young for Element14. More EAGLE documentation at: http://www.element14.com/community/community/knode/cadsoft_eagle</description>
<gates>
<gate name="G$1" symbol="ARDUINO_MICRO" x="0" y="2.54"/>
</gates>
<devices>
<device name="" package="ARDUINO_MICRO">
<connects>
<connect gate="G$1" pin="+5V" pad="+5V"/>
<connect gate="G$1" pin="3V3" pad="3V3"/>
<connect gate="G$1" pin="5V" pad="5V"/>
<connect gate="G$1" pin="&lt;USB&gt;+V" pad="&lt;USB&gt;+V"/>
<connect gate="G$1" pin="&lt;USB&gt;D+" pad="&lt;USB&gt;D+"/>
<connect gate="G$1" pin="&lt;USB&gt;D-" pad="&lt;USB&gt;D-"/>
<connect gate="G$1" pin="&lt;USB&gt;GND" pad="&lt;USB&gt;GND"/>
<connect gate="G$1" pin="&lt;USB&gt;ID" pad="&lt;USB&gt;ID"/>
<connect gate="G$1" pin="A0" pad="A0"/>
<connect gate="G$1" pin="A1" pad="A1"/>
<connect gate="G$1" pin="A2" pad="A2"/>
<connect gate="G$1" pin="A3" pad="A3"/>
<connect gate="G$1" pin="A4" pad="A4"/>
<connect gate="G$1" pin="A5" pad="A5"/>
<connect gate="G$1" pin="D10" pad="D10"/>
<connect gate="G$1" pin="D11" pad="D11"/>
<connect gate="G$1" pin="D12" pad="D12"/>
<connect gate="G$1" pin="D13" pad="D13"/>
<connect gate="G$1" pin="D2" pad="D2"/>
<connect gate="G$1" pin="D3" pad="D3"/>
<connect gate="G$1" pin="D4" pad="D4"/>
<connect gate="G$1" pin="D5" pad="D5"/>
<connect gate="G$1" pin="D6" pad="D6"/>
<connect gate="G$1" pin="D7" pad="D7"/>
<connect gate="G$1" pin="D8" pad="D8"/>
<connect gate="G$1" pin="D9" pad="D9"/>
<connect gate="G$1" pin="GND" pad="GND"/>
<connect gate="G$1" pin="GND." pad="GND."/>
<connect gate="G$1" pin="GND_" pad="GND_"/>
<connect gate="G$1" pin="MISO" pad="MISO]"/>
<connect gate="G$1" pin="MISO." pad="MISO."/>
<connect gate="G$1" pin="MOSI" pad="MOSI"/>
<connect gate="G$1" pin="MOSI." pad="MOSI."/>
<connect gate="G$1" pin="NC" pad="NC"/>
<connect gate="G$1" pin="NC." pad="NC."/>
<connect gate="G$1" pin="REF" pad="REF"/>
<connect gate="G$1" pin="RESET.." pad="RESET.."/>
<connect gate="G$1" pin="RST" pad="RST"/>
<connect gate="G$1" pin="RST." pad="RST."/>
<connect gate="G$1" pin="RX" pad="RX1"/>
<connect gate="G$1" pin="SCK" pad="SCK"/>
<connect gate="G$1" pin="SCK." pad="SCK."/>
<connect gate="G$1" pin="SS" pad="SS"/>
<connect gate="G$1" pin="TX" pad="TX1"/>
<connect gate="G$1" pin="VIN" pad="VIN"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="con-lstb">
<description>&lt;b&gt;Pin Headers&lt;/b&gt;&lt;p&gt;
Naming:&lt;p&gt;
MA = male&lt;p&gt;
# contacts - # rows&lt;p&gt;
W = angled&lt;p&gt;
&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;</description>
<packages>
<package name="MA04-1">
<description>&lt;b&gt;PIN HEADER&lt;/b&gt;</description>
<wire x1="-4.445" y1="1.27" x2="-3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-3.175" y1="1.27" x2="-2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="-0.635" x2="-3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="0.635" x2="-1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-1.905" y1="1.27" x2="-0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0" y2="0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="-1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-1.905" y1="-1.27" x2="-2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="0.635" x2="-5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-4.445" y1="1.27" x2="-5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="-0.635" x2="-4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-3.175" y1="-1.27" x2="-4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0" y1="0.635" x2="0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.635" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="0" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="0.635" x2="5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="-0.635" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.635" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<pad name="1" x="-3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="-5.08" y="1.651" size="1.27" layer="25" ratio="10">&gt;NAME</text>
<text x="-6.223" y="-0.635" size="1.27" layer="21" ratio="10">1</text>
<text x="0.635" y="1.651" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
<text x="5.334" y="-0.635" size="1.27" layer="21" ratio="10">4</text>
<rectangle x1="-1.524" y1="-0.254" x2="-1.016" y2="0.254" layer="51"/>
<rectangle x1="-4.064" y1="-0.254" x2="-3.556" y2="0.254" layer="51"/>
<rectangle x1="1.016" y1="-0.254" x2="1.524" y2="0.254" layer="51"/>
<rectangle x1="3.556" y1="-0.254" x2="4.064" y2="0.254" layer="51"/>
</package>
</packages>
<symbols>
<symbol name="MA04-1">
<wire x1="3.81" y1="-7.62" x2="-1.27" y2="-7.62" width="0.4064" layer="94"/>
<wire x1="1.27" y1="0" x2="2.54" y2="0" width="0.6096" layer="94"/>
<wire x1="1.27" y1="-2.54" x2="2.54" y2="-2.54" width="0.6096" layer="94"/>
<wire x1="1.27" y1="-5.08" x2="2.54" y2="-5.08" width="0.6096" layer="94"/>
<wire x1="-1.27" y1="5.08" x2="-1.27" y2="-7.62" width="0.4064" layer="94"/>
<wire x1="3.81" y1="-7.62" x2="3.81" y2="5.08" width="0.4064" layer="94"/>
<wire x1="-1.27" y1="5.08" x2="3.81" y2="5.08" width="0.4064" layer="94"/>
<wire x1="1.27" y1="2.54" x2="2.54" y2="2.54" width="0.6096" layer="94"/>
<text x="-1.27" y="-10.16" size="1.778" layer="96">&gt;VALUE</text>
<text x="-1.27" y="5.842" size="1.778" layer="95">&gt;NAME</text>
<pin name="1" x="7.62" y="-5.08" visible="pad" length="middle" direction="pas" swaplevel="1" rot="R180"/>
<pin name="2" x="7.62" y="-2.54" visible="pad" length="middle" direction="pas" swaplevel="1" rot="R180"/>
<pin name="3" x="7.62" y="0" visible="pad" length="middle" direction="pas" swaplevel="1" rot="R180"/>
<pin name="4" x="7.62" y="2.54" visible="pad" length="middle" direction="pas" swaplevel="1" rot="R180"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="MA04-1" prefix="SV" uservalue="yes">
<description>&lt;b&gt;PIN HEADER&lt;/b&gt;</description>
<gates>
<gate name="1" symbol="MA04-1" x="0" y="0"/>
</gates>
<devices>
<device name="" package="MA04-1">
<connects>
<connect gate="1" pin="1" pad="1"/>
<connect gate="1" pin="2" pad="2"/>
<connect gate="1" pin="3" pad="3"/>
<connect gate="1" pin="4" pad="4"/>
</connects>
<technologies>
<technology name="">
<attribute name="MF" value="" constant="no"/>
<attribute name="MPN" value="" constant="no"/>
<attribute name="OC_FARNELL" value="unknown" constant="no"/>
<attribute name="OC_NEWARK" value="unknown" constant="no"/>
</technology>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<parts>
<part name="PCB1" library="E14_Arduino_revB" deviceset="ARDUINO_MICRO" device=""/>
<part name="LD" library="con-lstb" deviceset="MA04-1" device=""/>
<part name="RD" library="con-lstb" deviceset="MA04-1" device=""/>
<part name="LK" library="con-lstb" deviceset="MA04-1" device=""/>
<part name="RK" library="con-lstb" deviceset="MA04-1" device=""/>
</parts>
<sheets>
<sheet>
<plain>
</plain>
<instances>
<instance part="PCB1" gate="G$1" x="63.5" y="68.58"/>
<instance part="LD" gate="1" x="38.1" y="40.64"/>
<instance part="RD" gate="1" x="38.1" y="25.4"/>
<instance part="LK" gate="1" x="38.1" y="10.16"/>
<instance part="RK" gate="1" x="38.1" y="-5.08"/>
</instances>
<busses>
</busses>
<nets>
<net name="N$1" class="0">
<segment>
<pinref part="LD" gate="1" pin="1"/>
<pinref part="PCB1" gate="G$1" pin="A0"/>
<wire x1="45.72" y1="35.56" x2="53.34" y2="35.56" width="0.1524" layer="91"/>
<wire x1="53.34" y1="35.56" x2="53.34" y2="50.8" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$2" class="0">
<segment>
<pinref part="PCB1" gate="G$1" pin="A1"/>
<wire x1="55.88" y1="50.8" x2="55.88" y2="20.32" width="0.1524" layer="91"/>
<pinref part="RD" gate="1" pin="1"/>
<wire x1="55.88" y1="20.32" x2="45.72" y2="20.32" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$3" class="0">
<segment>
<pinref part="LK" gate="1" pin="1"/>
<pinref part="PCB1" gate="G$1" pin="A2"/>
<wire x1="45.72" y1="5.08" x2="58.42" y2="5.08" width="0.1524" layer="91"/>
<wire x1="58.42" y1="5.08" x2="58.42" y2="50.8" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$4" class="0">
<segment>
<pinref part="PCB1" gate="G$1" pin="A3"/>
<wire x1="60.96" y1="50.8" x2="60.96" y2="-10.16" width="0.1524" layer="91"/>
<pinref part="RK" gate="1" pin="1"/>
<wire x1="60.96" y1="-10.16" x2="45.72" y2="-10.16" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$5" class="0">
<segment>
<pinref part="LD" gate="1" pin="2"/>
<wire x1="45.72" y1="38.1" x2="50.8" y2="38.1" width="0.1524" layer="91"/>
<wire x1="50.8" y1="38.1" x2="50.8" y2="22.86" width="0.1524" layer="91"/>
<pinref part="RD" gate="1" pin="2"/>
<wire x1="50.8" y1="22.86" x2="45.72" y2="22.86" width="0.1524" layer="91"/>
<wire x1="50.8" y1="22.86" x2="50.8" y2="7.62" width="0.1524" layer="91"/>
<pinref part="LK" gate="1" pin="2"/>
<wire x1="50.8" y1="7.62" x2="45.72" y2="7.62" width="0.1524" layer="91"/>
<pinref part="RK" gate="1" pin="2"/>
<wire x1="45.72" y1="-7.62" x2="50.8" y2="-7.62" width="0.1524" layer="91"/>
<wire x1="50.8" y1="-7.62" x2="50.8" y2="7.62" width="0.1524" layer="91"/>
<pinref part="PCB1" gate="G$1" pin="GND."/>
<wire x1="78.74" y1="50.8" x2="78.74" y2="38.1" width="0.1524" layer="91"/>
<wire x1="50.8" y1="38.1" x2="78.74" y2="38.1" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$6" class="0">
<segment>
<pinref part="LD" gate="1" pin="3"/>
<wire x1="45.72" y1="40.64" x2="48.26" y2="40.64" width="0.1524" layer="91"/>
<wire x1="48.26" y1="40.64" x2="48.26" y2="25.4" width="0.1524" layer="91"/>
<pinref part="RD" gate="1" pin="3"/>
<wire x1="45.72" y1="25.4" x2="48.26" y2="25.4" width="0.1524" layer="91"/>
<wire x1="48.26" y1="25.4" x2="48.26" y2="10.16" width="0.1524" layer="91"/>
<pinref part="LK" gate="1" pin="3"/>
<wire x1="45.72" y1="10.16" x2="48.26" y2="10.16" width="0.1524" layer="91"/>
<wire x1="48.26" y1="10.16" x2="48.26" y2="-5.08" width="0.1524" layer="91"/>
<pinref part="RK" gate="1" pin="3"/>
<wire x1="48.26" y1="-5.08" x2="45.72" y2="-5.08" width="0.1524" layer="91"/>
<pinref part="PCB1" gate="G$1" pin="+5V"/>
<wire x1="73.66" y1="50.8" x2="73.66" y2="40.64" width="0.1524" layer="91"/>
<wire x1="73.66" y1="40.64" x2="48.26" y2="40.64" width="0.1524" layer="91"/>
</segment>
</net>
</nets>
</sheet>
</sheets>
</schematic>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>

137
README.md
View File

@ -1,136 +1,57 @@
# Sanro - Arduino
このREADME.mdは日本語訳版があります、README_JP.mdをご覧ください、訳は完璧には程遠いですが
Hardware program of the game Taiko Sanro.
# Taiko Drum Controller - Arduino
Open-source hardware program to make your own Taiko no Tatsujin PC controller.
## What is This Program
## About this Project
Music game fans from East Asia countries are most probable to know a famous game called Taiko No Tatsujin ([太鼓の達人](http://taiko-ch.net/)), developed by [Bandai Namco Entertainment](http://bandainamcoent.co.jp/).
This project aims to help you develop your own **hardware taiko** at home.
This open-source program aims to help you develop your own **hardware taiko** at home, just like how you play taiko in arcade halls.
*This program is for personal and non-commercial use only.*
*This program is for personal and non-commercial use only. You may design your own taiko and have fun, but you may NOT distribute your product to the public.*
## What You Need
## Features
1. An Arduino Micro or Leonardo microcontroller (other compatible boards might work, but you need to verify that they support keyboard emulation);
* **Full support for the PC game Taiko-san Jiro (太鼓さん次郎).** Actually, any app/game/emulator using keyboards as input is supported.
* **Force-sensitive.** I am also developing a new open-source game called Taiko Sanro that can support this feature.
* **Supports dense inputs such as rolling.**
2. 4 Piezoelectric sensors;
*In one word, your taiko will perform exactly the same as the arcade version if you configure the program well enough! :D*
3. Necessary electronic components (breadboards, resistors, LEDs, jumper wires, etc.);
## Prerequisites
4. Wood planks and cutting tools if you need to make your drum from scratch. If you have a aftermarket taiko or a Big Power Lv. 5 drum, you can use them directly.
Because this is a DIY project, you should have some basic electronic engineering knowledge about connecting microprocessors with jumper wires on a breadboard. **Soldering techniques, however, are NOT required.**
## Steps to Make the Controller
## Getting Started
1. Make the drum and firmly glue the 4 piezoelectric sensors to the drum. Refer to the image for preferred locations of the sensors.
It might take you a few days to assembly and configure your own taiko device. The microprocessor chips are cheap, though, you can buy them from wherever you want.
![Controller scheme](./images/piezo_locations.png)
### Preparation
2. Connect the piezoelectric sensors and other components to the controller as follows (the polarity of the piezoelectric sensors don't matter);
Almost all of these things have alternatives, now I will show you what I used:
![Controller scheme](./images/scheme.png)
* [Arduino Micro](http://i.imgur.com/lXqnpJ9.jpg) module x 1
* [KEYES K-036](http://i.imgur.com/gUWnUCc.png) microphone module x 4
* Breadboard x 1
* A few jumper wires
* Micro USB cable x 1
* [Arduino IDE](https://www.arduino.cc/en/Main/Software)
3. Flash the firmware to the board.
And miscellaneous stuffs like:
You may need to fine-tune some parameters like `SAMPLE_CACHE_LENGTH`, `HIT_THRES`, `RESET_THRES`, and `sensitivity`. See the following section for details.
* Thick wood plank x 4, best to be [shaped like this](http://i.imgur.com/va20eVn.jpg)
* Foamed plastics to connect and fixate the wood
* Superglue
* Other electronical tools like screw drivers and multimeters, etc.
4. Have fun!
A few things to note:
## Tuning the Parameters
1. Any Arduino modules with ATmega32u4 chips or Due and Zero boards are supported. Arduino Micro is the cheapest one, though.
2. Using a breadboard is a low-cost option, but it is not the best/stablest choice. There is a PCB blueprint that allows you to print the integrated board and solder up. For details, please see "Making the PCB" part below.
3. You can also design and build your own microphones modules, just make sure you know how to connect them to your Arduino module.
4. Thick, solid, dense and heavy wood is the best choice, while plywood, particleboard and medium-density fiberboard (MDF) are fragile at their edges and can be easily damaged. For better experience, you should cut the planks with the shapes shown in [the picture](http://i.imgur.com/va20eVn.jpg). If you don't have the cutting tools and want it easier, just prepare 4 planks.
1. Hit and reset threshold
### Connecting the Parts
Set `DEBUG 1` (this disables the keyboard output and sends signal values from the serial port), flash the firmware, roll on one of the 4 areas of the drum, and visualize the graph from the output of the serial monitor. The hit threshold should be smaller than your heaviest hit on the drum, and the reset threshold should be greater than the "cave" between roll hits. The reset value should also below the hit value.
The scheme is quite simple. You don't even need any extra resistors or capacitors. **All you need are jumper wires.**
Repeat the process for the rest 3 areas and find the best one that fits all.
Each microphone module has 4 pins, and we only need 3 of them (`A0`, `+`, and `G`). Connect their `A0` outputs to Arduino Micro's `A0`~`A3` inputs, then connect their `+` pins together with module's `5V` pin, then the `G` pins together to the ground. Use the following picture if you have any problems.
![Controller scheme](./images/tune_hit_reset.png)
(Picture to be uploaded)
2. Sampling length
### (Optional) Making the PCB
For maximum runtime speed, the `cache.h` library has been optimized to work with `SAMPLE_CACHE_LENGTH` window sizes of powers of 2. That means 2, 8, 16, and 32, etc. Practically 16 is the best value for Arduino, but if you have a powerful microcontroller that samples the input at the speed of at least 4000Hz or more, you can change the value to 32 for a smoother (in other words, less noisy) curve.
To make the PCB, you can either DIY or ask local PCB manufacturer for help. If you choose DIY, you should prepare a few more things, including:
3. Sensitivities
* 2.2 x 1.6 inches Empty PCB x 1
* Thermal transfer paper x 1
* Laser printer x 1
* Standard 4-pin header x 4
* Thermal transfer machine (or clothes iron)
* Etchant
* Soldering tools
Not all piezoelectric sensors are the same, and due to installation errors, the captured signals from the 4 sensors may vary significantly. The sensitivity values are multipliers to normalize the differences. In the following example, the right-don area generates a much higher value than the rest 3, so you can adjust `sensitivity` to `{1.0, 1.0, 0.5, 1.0}` to eliminate the issue.
Detailed process to make the PCB is totally off-topic, and you may need [this video](https://www.youtube.com/watch?v=mv7Y0A9YeUc) to help you. I have included the required printable board file `sanro.eps` in the `Eagle/sanro-arduino` folder. You can also download the scheme and board files and edit them by yourself with the [Eagle Software](http://www.cadsoftusa.com/download-eagle/).
![Controller scheme](./images/tune_sensitivities.png)
### Uploading the Program to the Board
1. Download and install [Arduino IDE](https://www.arduino.cc/en/Main/Software).
2. Create a folder and put the source files (`sanro.ino` and `cache.h`) into it.
3. Connect your Arduino Micro to your computer with a USB cable. The driver installation should be automatic, but if you have any questions about it, [check this official guide](https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro#toc8).
4. Open the `sanro` project in Arduino IDE.
5. Select "Board" - "Arduino/Genuino Micro" from the menu.
6. Compile and upload the program.
## Configuration
***WARNING: Because of the deviations between the microphones and the installation of the planks, you will spend much time adjusting the hardware and the parameters in the program. Be patient, there are lots of tries-and-errors up ahead.***
### Hardware
Literally there is only 2 things you need to do:
1. Glue each microphone to the wood plank
2. Fixate the wood planks onto the foamed plastics
However, the problem is how you do them. There are some major criteria when doing this job:
* Attach the microphone to the plank as close/tight as possible
* Seal the microphone to isolate it from outside noises
* Don't let the planks contact each other
To accomplish them, you can remove the filter cover of the microphone receiver, then attach the receiver face (the microphones are usually cylindrical, like [the ones that I used in this project](http://i.imgur.com/gUWnUCc.png)) tightly to the surface of the plank, and seal it with superglue. In this way, the soundwave from the plank can be directly transmitted to the microphone, loud and clear. Also, noises and soundwave from nearby planks can be reduced to the minimum.
Also, please note that there is a potentiometer on the KEYES module, which is used to set the quiescent operating point (Q-point) of the microphone. Although I have implemented algorithms to eliminate the bias caused by unequal Q-point of each microphone, **it is better to adjust the potentiometer manually and keep the Q-points at approximately the same level.** To do this, you may need to contact your microphone provider.
### Parameters in the Program
All you need to change is the `LIGHT_THRES` and the `HEAVY_THRES`, according to your microphone configuration.
The codes are short and self-explanatory, and if you need help understanding them, please refer to the "About the Algorithm" part.
(To be completed)
## About the Algorithm
The algorithm in the program is simple, and there are still much more to be optimized. All pull requests are welcomed!
In short, the signal processing job can be divided into 4 calculating steps after acquiring the samples from the analog inputs:
1. Calculate the derivative
2. Calculate the power of the waveform
3. Calculate the convolution of the power
4. Find the peak of the power convolution and compare it with the thresholds to see if there is a light or heavy hit
This picture shows the algorithm in a clearer way:
(Picture to be uploaded)
Step 1 is to elinimate the difference of Q-point, which makes it easier and more accurate to calculate the power of the waveform.
Step 2, calculating the power of the waveform, can also enhance the signal to noise ratio (SNR), which can further eliminate the noises. `LIGHT_THRES` is also used here to cut the low-power noises out.
Step 3 is to "polish" the power curve to make it more like a sequence of hit pulses, which makes it easier to find the power peak.
For Arduino microprocessors, the executing time for each loop is not stable - the processor always executes the instructions as fast as it can. Onece the loop ends, it immediately starts the next loop. This is extremely bad for sampling sounds. Therefore, the program implements a simple sampling frequency control mechanism to restrict the sampling frequency to no more than 1,000Hz.
Note that the installation of the sensors is very critical. You should make sure that the sensors are firmly attached on the wood and located properly.

BIN
images/piezo_locations.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
images/scheme.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
images/tune_hit_reset.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -14,32 +14,18 @@
template <class T, int L>
class Cache {
public:
Cache ();
void put (T value);
T get (int offset = 0) const;
Cache() { memset(data_, 0, sizeof(data_)); }
inline void put(T value) {
current_ = (current_ + 1) & (L - 1);
data_[current_] = value;
}
inline T get(int offset = 0) const {
return data_[(current_ + offset) & (L - 1)];
}
private:
T data_ [L];
T data_[L];
int current_ = 0;
};
template <class T, int L>
Cache <T, L>::Cache () {
for (int i = 0; i < L; i++) {
data_ [i] = 0;
}
}
template <class T, int L>
void Cache <T, L>::put (T value) {
current_ = (current_ + 1) % L;
data_ [current_] = value;
}
template <class T, int L>
T Cache <T, L>::get (int offset) const {
int index = (current_ + offset) % L;
return data_ [index];
}
#endif // CACHE_H
#endif // CACHE_H

View File

@ -1,107 +1,80 @@
/***************************************************************
* *
* Taiko Sanro - Arduino *
* Support Arduino models with ATmega32u4 microprocessors *
* *
* Shiky Chang Chris *
* zhangxunpx@gmail.com wisaly@gmail.com *
* *
***************************************************************/
#define CHANNELS 4
#define SAMPLE_CACHE_LENGTH 16 // Must be power of 2 (8, 16, etc.); See cache.h for implementation
#define HIT_THRES 750 // The thresholds are also dependent on SAMPLE_CACHE_LENGTH, if you
#define RESET_THRES 300 // changed SAMPLE_CACHE_LENGTH, you must adjust thresholds here
// New implementation using fast, stable and sensitive piezoelectric
// ceramic sensors (the same sensors used in electirc drum kit).
// No longer need microphones.
#define DEBUG 0
#define CHANNELS 2
#define SAMPLE_CACHE_LENGTH 10
#define DON_SILENCE_THRES 1e4
#define DON_LIGHT_THRES 3e4
#define DON_HEAVY_THRES 1e5
#define KAT_SILENCE_THRES 4e3
#define KAT_LIGHT_THRES 5e3
#define KAT_HEAVY_THRES 1e4
#define FORCED_FREQ 1000
#include <Keyboard.h>
#include <limits.h>
#include "cache.h"
unsigned long lastTime;
unsigned long int lastTime;
float channelSample[CHANNELS];
Cache <float, SAMPLE_CACHE_LENGTH> sampleCache[CHANNELS];
float power[CHANNELS];
Cache<int, SAMPLE_CACHE_LENGTH> inputWindow[CHANNELS];
unsigned long power[CHANNELS];
unsigned long lastPower[CHANNELS];
bool triggered;
float light_thres[] = {DON_LIGHT_THRES, KAT_LIGHT_THRES};
float heavy_thres[] = {DON_HEAVY_THRES, KAT_HEAVY_THRES};
float silence_thres[] = {DON_SILENCE_THRES, KAT_SILENCE_THRES};
unsigned long triggeredTime[CHANNELS];
int input_pins[] = {A0, A1}; // Don, Kat
int output_pins[] = {A2, A3, A4, A5}; // Left Don, Left Kat, Right Don, Right Kat
const byte inPins[] = {A0, A1, A2, A3}; // L don, L kat, R don, R kat
const byte outPins[] = {5, 6, 7, 8}; // LED visualization (optional)
const char outKeys[] = {'f', 'd', 'j', 'k'}; // L don, L kat, R don, R kat
String debug_output[] = {"D", "K"};
float sensitivity[] = {1.0, 1.0, 1.0, 1.0};
short maxIndex;
float maxPower;
void setup() {
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
Serial.begin (115200);
for (short int i = 0; i < CHANNELS; i++) {
power [i] = 0;
}
triggered = false;
lastTime = 0;
Serial.begin(115200);
Keyboard.begin();
analogReference(DEFAULT);
for (byte i = 0; i < CHANNELS; i++) {
power[i] = 0;
lastPower[i] = 0;
triggered = false;
}
lastTime = 0;
maxIndex = -1;
maxPower = 0;
}
void loop() {
lastTime = micros ();
for (short int i = 0; i < CHANNELS; i++) {
channelSample[i] = analogRead(input_pins[i]);
sampleCache[i].put(channelSample[i]);
long int tempInt = sampleCache[i].get(1);
power[i] -= tempInt * tempInt;
tempInt = sampleCache[i].get();
power[i] += tempInt * tempInt;
if (maxIndex != -1 && lastPower[maxIndex] < RESET_THRES) {
triggered = false;
digitalWrite(outPins[maxIndex], LOW);
maxIndex = -1;
maxPower = 0;
}
if (power[i] > light_thres[i]) {
if (!triggered) {
digitalWrite(output_pins[i], LOW);
if (power[i] >= heavy_thres[i]) {
digitalWrite(output_pins[i] + 2, LOW);
for (byte i = 0; i < CHANNELS; i++) {
inputWindow[i].put(analogRead(inPins[i]));
power[i] = sensitivity[i] * (power[i] - inputWindow[i].get(1) + inputWindow[i].get());
if (lastPower[i] > maxPower && power[i] < lastPower[i]) {
maxPower = lastPower[i];
maxIndex = i;
}
digitalWrite(LED_BUILTIN, HIGH);
Serial.println(debug_output[i]);
}
triggered = true;
lastPower[i] = power[i];
#if DEBUG
Serial.print(power[i]);
Serial.print(" ");
#endif
}
}
for (short int i = 0; i < CHANNELS; i++) {
triggered = false;
digitalWrite(output_pins[i], HIGH);
digitalWrite(output_pins[i] + 2, HIGH);
if (power[i] > silence_thres[i]) {
digitalWrite(LED_BUILTIN, LOW);
triggered = true;
break;
if (!triggered && maxPower >= HIT_THRES) {
triggered = true;
digitalWrite(outPins[maxIndex], HIGH);
#if !DEBUG
Keyboard.print(outKeys[maxIndex]);
#endif
}
}
// Serial.println(power[0]);
float delayTime = 1e6 / FORCED_FREQ - (micros() - lastTime);
if (delayTime > 0) {
longMicroDelay(delayTime);
} else {
// digitalWrite(LED_BUILTIN, HIGH);
}
}
void longMicroDelay (float microTime) {
delay (microTime / 1000);
delayMicroseconds (microTime - floor(microTime / 1000) * 1000);
#if DEBUG
Serial.print("\n");
#endif
}