From 1017189a168619c62a36d6971e6544152547ab4c Mon Sep 17 00:00:00 2001 From: VadimL Date: Sat, 26 Sep 2026 12:44:35 +0300 Subject: [PATCH] Arduino project --- .../Board Design/.history | 1 + .../Arduino_Pro_Micro.kicad_mod | 350 + .../Board Design/SmartKeyAssistant.kicad_pcb | 4857 ++++++ .../Board Design/SmartKeyAssistant.kicad_prl | 138 + .../Board Design/SmartKeyAssistant.kicad_pro | 713 + .../Board Design/SmartKeyAssistant.kicad_sch | 12683 ++++++++++++++++ .../Board Design/fp-lib-table | 5 + .../Board Design/pro_micro_rp2040.kicad_mod | 501 + .../Board Design/pro_micro_rp2040.kicad_sym | 639 + .../KeyAssistant/.gitignore | 5 + .../KeyAssistant/.vscode/extensions.json | 10 + .../KeyAssistant/include/README | 37 + .../KeyAssistant/lib/README | 46 + .../KeyAssistant/platformio.ini | 31 + .../KeyAssistant/src/Keyboard.cpp | 214 + .../KeyAssistant/src/Keyboard.h | 151 + .../KeyAssistant/src/KeyboardLayout.h | 67 + .../KeyAssistant/src/KeyboardLayout_da_DK.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_de_DE.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_en_US.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_es_ES.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_fr_FR.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_hu_HU.cpp | 144 + .../KeyAssistant/src/KeyboardLayout_it_IT.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_pt_PT.cpp | 138 + .../KeyAssistant/src/KeyboardLayout_sv_SE.cpp | 138 + .../KeyAssistant/src/Keyboard_da_DK.h | 44 + .../KeyAssistant/src/Keyboard_de_DE.h | 45 + .../KeyAssistant/src/Keyboard_es_ES.h | 45 + .../KeyAssistant/src/Keyboard_fr_FR.h | 46 + .../KeyAssistant/src/Keyboard_hu_HU.h | 52 + .../KeyAssistant/src/Keyboard_it_IT.h | 44 + .../KeyAssistant/src/Keyboard_pt_PT.h | 44 + .../KeyAssistant/src/Keyboard_sv_SE.h | 44 + .../KeyAssistant/src/LiquidCrystal_I2C.cpp | 315 + .../KeyAssistant/src/LiquidCrystal_I2C.h | 126 + .../KeyAssistant/src/Mouse.cpp | 123 + .../KeyAssistant/src/Mouse.h | 60 + .../KeyAssistant/src/main copy.txt | 196 + .../KeyAssistant/src/main.cpp | 268 + .../KeyAssistant/src/project.zip | Bin 0 -> 11753 bytes .../KeyAssistant/src/sketch.txt | 278 + .../KeyAssistant/test/README | 11 + 43 files changed, 23437 insertions(+) create mode 160000 arduino-smart-key-assistant/Board Design/.history create mode 100755 arduino-smart-key-assistant/Board Design/Arduino.pretty/Arduino_Pro_Micro.kicad_mod create mode 100755 arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pcb create mode 100755 arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_prl create mode 100755 arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pro create mode 100755 arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_sch create mode 100755 arduino-smart-key-assistant/Board Design/fp-lib-table create mode 100755 arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_mod create mode 100755 arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_sym create mode 100755 arduino-smart-key-assistant/KeyAssistant/.gitignore create mode 100755 arduino-smart-key-assistant/KeyAssistant/.vscode/extensions.json create mode 100755 arduino-smart-key-assistant/KeyAssistant/include/README create mode 100755 arduino-smart-key-assistant/KeyAssistant/lib/README create mode 100755 arduino-smart-key-assistant/KeyAssistant/platformio.ini create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_da_DK.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_de_DE.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_en_US.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_es_ES.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_fr_FR.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_hu_HU.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_it_IT.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_pt_PT.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_sv_SE.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_da_DK.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_de_DE.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_es_ES.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_fr_FR.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_hu_HU.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_it_IT.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_pt_PT.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Keyboard_sv_SE.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Mouse.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/Mouse.h create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/main copy.txt create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/main.cpp create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/project.zip create mode 100755 arduino-smart-key-assistant/KeyAssistant/src/sketch.txt create mode 100755 arduino-smart-key-assistant/KeyAssistant/test/README diff --git a/arduino-smart-key-assistant/Board Design/.history b/arduino-smart-key-assistant/Board Design/.history new file mode 160000 index 0000000..51c9ca6 --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/.history @@ -0,0 +1 @@ +Subproject commit 51c9ca6fb8631fab62fa23c7e2c665b78d42fdb3 diff --git a/arduino-smart-key-assistant/Board Design/Arduino.pretty/Arduino_Pro_Micro.kicad_mod b/arduino-smart-key-assistant/Board Design/Arduino.pretty/Arduino_Pro_Micro.kicad_mod new file mode 100755 index 0000000..95d7fd3 --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/Arduino.pretty/Arduino_Pro_Micro.kicad_mod @@ -0,0 +1,350 @@ +(footprint "Arduino_Pro_Micro" + (version 20260206) + (generator "pcbnew") + (generator_version "10.0") + (layer "F.Cu") + (property "Reference" "REF**" + (at 8.89 -6.46 0) + (unlocked yes) + (layer "F.SilkS") + (uuid "ad077c83-4790-4e22-b60f-9d2ea6c6c0ec") + (effects + (font + (size 1 1) + (thickness 0.1) + ) + ) + ) + (property "Value" "Ardiuno Pro Micro" + (at 9.03 -8.33 0) + (unlocked yes) + (layer "F.Fab") + (uuid "047ea532-d06d-4213-97ce-3ea913f5106c") + (effects + (font + (size 0.8 0.8) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "22b25550-72ff-4237-943c-465d985997a5") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d3e37bf5-154a-44b2-9e5a-92fc57be2e26") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 0 -33) + (end 0 -30) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "d108e178-e67f-4df5-8185-76ed7e50c5c8") + ) + (fp_line + (start 0 -3) + (end 0 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "c58d6609-4823-49e9-abe8-1b9b5dac7e7b") + ) + (fp_line + (start 0 0) + (end 0 -3) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "b5214aff-d089-449e-9607-fe491ce32b14") + ) + (fp_line + (start 0 0) + (end 3 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "10f53887-74ec-449a-9750-c83f7e0bb059") + ) + (fp_rect + (start 0 -32) + (end 17.5 0) + (stroke + (width 0.1) + (type default) + ) + (fill no) + (layer "F.SilkS") + (uuid "352d1617-a6ad-4f56-a940-f4f595536fd9") + ) + (fp_rect + (start 4.39 -27.25) + (end 13.39 -33.65) + (stroke + (width 0.1) + (type default) + ) + (fill no) + (layer "F.SilkS") + (uuid "74eeca8d-7677-4d44-9258-3245649a6464") + ) + (pad "0" thru_hole circle + (at 1 -29.2) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "4fe66ffe-fa8f-4911-8507-82dc4f76fcc4") + ) + (pad "1" thru_hole circle + (at 1 -26.66) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "0d279b0b-fcb1-46a9-b56e-135c6bc835f6") + ) + (pad "2" thru_hole circle + (at 1 -19.04) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "e564de5c-8e51-4698-9f61-5ea626328a2d") + ) + (pad "3" thru_hole circle + (at 1 -16.5) + (size 1.8 1.8) + (drill 0.96) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "e6571ae0-feef-4c47-81b1-9401f765e3cc") + ) + (pad "3V3" thru_hole circle + (at 16.49 -21.58) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "5da3dd87-e753-4aa1-9571-4a608f5657c3") + ) + (pad "4" thru_hole circle + (at 1 -13.96) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "ee4e07ad-2af1-4334-b06f-47405864a083") + ) + (pad "5" thru_hole circle + (at 1 -11.42) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "ff767141-d1a0-4d09-a3b3-98c226e47496") + ) + (pad "5V" thru_hole circle + (at 16.49 -29.2) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "87351c7f-b8ec-4607-89f0-0b86ca423865") + ) + (pad "6" thru_hole circle + (at 1 -8.88) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "0f36a36b-783c-46d6-ade2-390d5701288f") + ) + (pad "7" thru_hole circle + (at 1 -6.34) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "c5657a0c-5381-4dbf-a582-684e3b4d66dc") + ) + (pad "8" thru_hole circle + (at 1 -3.8) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "2ffe1f47-bfc9-40b9-aa91-b0bd1a37d037") + ) + (pad "9" thru_hole circle + (at 1 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "784ad2a4-880e-411e-809b-6046ad9d5983") + ) + (pad "10" thru_hole circle + (at 16.49 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "fe1ae55a-8305-4857-aefb-f14f94c11384") + ) + (pad "14" thru_hole circle + (at 16.49 -6.34) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "0a5ad5b2-d00c-4c9d-8d98-56f596c8a98d") + ) + (pad "15" thru_hole circle + (at 16.49 -8.88) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "0ed8366c-728c-4e15-9f2e-06772e1876f6") + ) + (pad "16" thru_hole circle + (at 16.49 -3.8) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "71e529fc-a2e6-4307-9bea-97e5059a1007") + ) + (pad "18" thru_hole circle + (at 16.49 -11.42) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "a90cd7cd-81d8-46f0-8c43-364706ea26de") + ) + (pad "19" thru_hole circle + (at 16.49 -13.96) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "c754a22a-3442-45fc-8bde-85e927a61c7f") + ) + (pad "20" thru_hole circle + (at 16.49 -16.5) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "3f454ada-95e4-4f6d-ac95-0a6c48bb0922") + ) + (pad "21" thru_hole circle + (at 16.49 -19.04) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "8a937011-a8f3-4571-a128-481047fc0a60") + ) + (pad "GND" thru_hole circle + (at 1 -24.12) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "b5c0ba40-73e2-470f-ba27-cf9120f635e0") + ) + (pad "GND" thru_hole circle + (at 1 -21.58) + (size 1.8 1.8) + (drill 0.96) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "25da7d2c-1b46-46a9-90e9-00b85c4a5d74") + ) + (pad "GND" thru_hole circle + (at 16.49 -26.66) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "d3e8439f-680c-42ba-b511-4a7fed86ebb4") + ) + (pad "RST" thru_hole circle + (at 16.49 -24.12) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "e5800953-136e-4278-a064-a0a0d0ae13fd") + ) + (group "" + (uuid "fb57a874-6645-4cfd-bf3f-e83aaf4421f8") + (members "0a5ad5b2-d00c-4c9d-8d98-56f596c8a98d" "0d279b0b-fcb1-46a9-b56e-135c6bc835f6" + "0ed8366c-728c-4e15-9f2e-06772e1876f6" "0f36a36b-783c-46d6-ade2-390d5701288f" + "25da7d2c-1b46-46a9-90e9-00b85c4a5d74" "2ffe1f47-bfc9-40b9-aa91-b0bd1a37d037" + "3f454ada-95e4-4f6d-ac95-0a6c48bb0922" "4fe66ffe-fa8f-4911-8507-82dc4f76fcc4" + "5da3dd87-e753-4aa1-9571-4a608f5657c3" "71e529fc-a2e6-4307-9bea-97e5059a1007" + "784ad2a4-880e-411e-809b-6046ad9d5983" "87351c7f-b8ec-4607-89f0-0b86ca423865" + "8a937011-a8f3-4571-a128-481047fc0a60" "a90cd7cd-81d8-46f0-8c43-364706ea26de" + "b5c0ba40-73e2-470f-ba27-cf9120f635e0" "c5657a0c-5381-4dbf-a582-684e3b4d66dc" + "c754a22a-3442-45fc-8bde-85e927a61c7f" "d3e8439f-680c-42ba-b511-4a7fed86ebb4" + "e564de5c-8e51-4698-9f61-5ea626328a2d" "e5800953-136e-4278-a064-a0a0d0ae13fd" + "e6571ae0-feef-4c47-81b1-9401f765e3cc" "ee4e07ad-2af1-4334-b06f-47405864a083" + "fe1ae55a-8305-4857-aefb-f14f94c11384" "ff767141-d1a0-4d09-a3b3-98c226e47496" + ) + ) + (embedded_fonts no) + (model "pro_micro_rp2040.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "MiniPico_RP2040 V1.1.step" + (hide yes) + (offset + (xyz -5.15 80.3 0.4) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 90) + ) + ) +) diff --git a/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pcb b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pcb new file mode 100755 index 0000000..c62318f --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pcb @@ -0,0 +1,4857 @@ +(kicad_pcb + (version 20260206) + (generator "pcbnew") + (generator_version "10.0") + (general + (thickness 0.89) + (legacy_teardrops no) + ) + (paper "A4") + (title_block + (date "sam. 04 avril 2015") + ) + (layers + (0 "F.Cu" signal) + (2 "B.Cu" signal) + (9 "F.Adhes" user "F.Adhesive") + (11 "B.Adhes" user "B.Adhesive") + (13 "F.Paste" user) + (15 "B.Paste" user) + (5 "F.SilkS" user "F.Silkscreen") + (7 "B.SilkS" user "B.Silkscreen") + (1 "F.Mask" user) + (3 "B.Mask" user) + (17 "Dwgs.User" user "User.Drawings") + (19 "Cmts.User" user "User.Comments") + (21 "Eco1.User" user "User.Eco1") + (23 "Eco2.User" user "User.Eco2") + (25 "Edge.Cuts" user) + (27 "Margin" user) + (31 "F.CrtYd" user "F.Courtyard") + (29 "B.CrtYd" user "B.Courtyard") + (35 "F.Fab" user) + (33 "B.Fab" user) + ) + (setup + (stackup + (layer "F.SilkS" + (type "Top Silk Screen") + ) + (layer "F.Paste" + (type "Top Solder Paste") + ) + (layer "F.Mask" + (type "Top Solder Mask") + (color "Green") + (thickness 0.01) + ) + (layer "F.Cu" + (type "copper") + (thickness 0.035) + ) + (layer "dielectric 1" + (type "core") + (thickness 0.8) + (material "FR4") + (epsilon_r 4.5) + (loss_tangent 0.02) + ) + (layer "B.Cu" + (type "copper") + (thickness 0.035) + ) + (layer "B.Mask" + (type "Bottom Solder Mask") + (color "Green") + (thickness 0.01) + ) + (layer "B.Paste" + (type "Bottom Solder Paste") + ) + (layer "B.SilkS" + (type "Bottom Silk Screen") + ) + (copper_finish "None") + (dielectric_constraints no) + ) + (pad_to_mask_clearance 0) + (allow_soldermask_bridges_in_footprints no) + (tenting + (front yes) + (back yes) + ) + (covering + (front no) + (back no) + ) + (plugging + (front no) + (back no) + ) + (capping no) + (filling no) + (aux_axis_origin 100 100) + (grid_origin 100 100) + (pcbplotparams + (layerselection 0x00000000_00000000_00000000_000000a5) + (plot_on_all_layers_selection 0x00000000_00000000_00000000_00000000) + (disableapertmacros no) + (usegerberextensions no) + (usegerberattributes yes) + (usegerberadvancedattributes yes) + (creategerberjobfile yes) + (dashed_line_dash_ratio 12) + (dashed_line_gap_ratio 3) + (svgprecision 6) + (plotframeref no) + (mode 1) + (useauxorigin no) + (pdf_front_fp_property_popups yes) + (pdf_back_fp_property_popups yes) + (pdf_metadata yes) + (pdf_single_document no) + (dxfpolygonmode yes) + (dxfimperialunits yes) + (dxfusepcbnewfont yes) + (psnegative no) + (psa4output no) + (plot_black_and_white yes) + (sketchpadsonfab no) + (plotpadnumbers no) + (hidednponfab no) + (sketchdnponfab yes) + (crossoutdnponfab yes) + (subtractmaskfromsilk no) + (outputformat 1) + (mirror no) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + (footprint "Capacitor_SMD:C_01005_0402Metric" + (layer "F.Cu") + (uuid "27056ced-35b9-42d4-9c2f-af337648cc9d") + (at 108.725 97.565 -90) + (descr "Capacitor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf)") + (tags "capacitor") + (property "Reference" "C5" + (at 0 -1 90) + (layer "F.SilkS") + (uuid "a238b592-e65d-4e9d-975f-25e2f83c91f7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "C" + (at 0 1 90) + (layer "F.Fab") + (uuid "1377e70f-fcfe-4735-9442-a405e416de28") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "dde97a1f-7b38-446a-9fd2-ea5e5172d7bb") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "e8906c0c-4816-4cf3-b53f-7d5b94346fd4") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "SMD_2terminal_chip_molded" + (at 0 0 90) + (layer "F.SilkS") + (hide yes) + (uuid "3a3d254c-b561-4d6d-89ac-d94d1bf16260") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/47a7ce60-cf4b-4678-8a75-205d54dcb43d") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_rect + (start -0.6 -0.3) + (end 0.6 0.3) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "6d90d380-0155-4ed0-b27e-35a73a636e82") + ) + (fp_rect + (start -0.2 -0.1) + (end 0.2 0.1) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "3892d5f0-7500-4cca-96d0-b17c344bbbed") + ) + (fp_text user "${REFERENCE}" + (at 0 -0.62 90) + (layer "F.Fab") + (uuid "eede4825-a4d4-4b49-bdd8-f2b730d0b020") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) + ) + ) + (pad "" smd roundrect + (at -0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "f7798fee-3c3f-476f-ba13-d873e864aaa6") + ) + (pad "" smd roundrect + (at 0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "527d724d-2ddc-47bf-80c0-5bb4c717153b") + ) + (pad "1" smd roundrect + (at -0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "7b5f20c7-a9e2-4ce1-b5eb-ed015aade260") + ) + (pad "2" smd roundrect + (at 0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "VCC") + (pintype "passive") + (uuid "b92fbdd4-d373-411c-85a6-390158d4895a") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_01005_0402Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Capacitor_SMD:C_01005_0402Metric" + (layer "F.Cu") + (uuid "3ada8d4d-e1fa-4886-96fd-3d3d780712cf") + (at 113.675 97.565 -90) + (descr "Capacitor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf)") + (tags "capacitor") + (property "Reference" "C1" + (at 0 -1 90) + (layer "F.SilkS") + (uuid "dcf33426-a09c-4328-985c-07f4ca62982a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "C" + (at 0 1 90) + (layer "F.Fab") + (uuid "89a77c0f-ac0d-4ef3-9e66-4e07817fd9c7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "cd012d67-cd06-448a-9820-cac16f7a2ed3") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "6b96ad7b-a403-4326-8d38-5a84fc8cfe56") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "SMD_2terminal_chip_molded" + (at 0 0 90) + (layer "F.SilkS") + (hide yes) + (uuid "dc35b101-0d36-41a3-8719-4c89923de1d1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/fb80b39f-52d6-4bf1-8ebe-feaa15f04310") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_rect + (start -0.6 -0.3) + (end 0.6 0.3) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "f7019dc3-9c24-4d9d-9a95-852c323dc2e2") + ) + (fp_rect + (start -0.2 -0.1) + (end 0.2 0.1) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "45db19bd-01ad-405d-97e2-68c9c21c2b1e") + ) + (fp_text user "${REFERENCE}" + (at 0 -0.62 90) + (layer "F.Fab") + (uuid "56d816a0-0869-4df7-a38f-b7cc00108e71") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) + ) + ) + (pad "" smd roundrect + (at -0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "a32108a4-e26b-47b6-964f-ed292e66122c") + ) + (pad "" smd roundrect + (at 0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "bfbeca91-a884-45bf-be67-d9365b5b0274") + ) + (pad "1" smd roundrect + (at -0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "VCC") + (pintype "passive") + (uuid "8a8dc5f3-f431-48fb-ab1c-e0c6135fbfa5") + ) + (pad "2" smd roundrect + (at 0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "819c4598-8116-44df-8e95-05c3f107cde0") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_01005_0402Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (layer "F.Cu") + (uuid "4b54ef52-ebe8-4f5f-ad0f-0cd7b91481ef") + (at 99.67 123.46 -90) + (descr "Cherry MX keyswitch, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") + (tags "Cherry MX keyswitch 1.00u PCB") + (property "Reference" "SW1" + (at -2.54 -2.794 90) + (layer "F.SilkS") + (uuid "b3acc46c-2489-4b17-9837-1aa71a4853ae") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SW_Push_1" + (at -2.54 12.954 90) + (layer "F.Fab") + (uuid "f82449c2-8586-468d-8e77-61946b755d62") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "4ec13d75-9e7b-4554-b8c8-19b43da35f8c") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "d789eee0-bf83-4806-9499-a275aa3abbe0") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/85eded6d-5390-4250-bf2c-ab89e7633093") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -9.525 12.065) + (end -9.525 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "983b88af-f0fd-41ad-98af-7a89aa4cff4e") + ) + (fp_line + (start 4.445 12.065) + (end -9.525 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "81a0c3c3-49ee-4252-8ec6-ce49a73e96ac") + ) + (fp_line + (start -9.525 -1.905) + (end 4.445 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9cbadae6-c517-4f4d-8fdb-8ab4df33e7e1") + ) + (fp_line + (start 4.445 -1.905) + (end 4.445 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b69b18c4-c996-42e1-afa3-93de0134673f") + ) + (fp_line + (start -12.065 14.605) + (end -12.065 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "b1938a7e-2e34-409a-9d19-507d8a88a976") + ) + (fp_line + (start 6.985 14.605) + (end -12.065 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "6f85581a-eafd-495b-b163-fa04e56b8d57") + ) + (fp_line + (start -12.065 -4.445) + (end 6.985 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "c906fc66-645a-4f8f-9271-ae22bd982179") + ) + (fp_line + (start 6.985 -4.445) + (end 6.985 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "da554e72-8c6e-4390-a5bb-bb996242ce46") + ) + (fp_line + (start -9.14 11.68) + (end -9.14 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "cf3ff9ef-3862-4b66-b2ac-22bb520061a9") + ) + (fp_line + (start 4.06 11.68) + (end -9.14 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "99d33f49-9935-4fc4-94b1-a89ecfa9dd7b") + ) + (fp_line + (start -9.14 -1.52) + (end 4.06 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "50b7f202-46bc-4c95-b4ed-eae499125814") + ) + (fp_line + (start 4.06 -1.52) + (end 4.06 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "90cade43-56fc-40a5-9340-1a236e34c3ae") + ) + (fp_line + (start -8.89 11.43) + (end -8.89 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c67106bc-7a40-4ecc-b430-5740c9586004") + ) + (fp_line + (start 3.81 11.43) + (end -8.89 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "7213f180-fa12-4ca0-95c2-c554a12a3492") + ) + (fp_line + (start -8.89 -1.27) + (end 3.81 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "da8fa335-1c92-4345-93bf-a03a9951473e") + ) + (fp_line + (start 3.81 -1.27) + (end 3.81 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4298137f-474e-43d5-a99e-16537d7ef1cc") + ) + (fp_text user "${REFERENCE}" + (at -2.54 -2.794 90) + (layer "F.Fab") + (uuid "bd84ca03-ba56-440e-aa78-60cad9adfb49") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at -7.62 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "d927e5b0-27c5-4797-9166-9d96b935fd94") + ) + (pad "" np_thru_hole circle + (at -2.54 5.08 270) + (size 4 4) + (drill 4) + (layers "*.Cu" "*.Mask") + (uuid "0d022134-1783-4761-b0c1-d1799c9f6636") + ) + (pad "" np_thru_hole circle + (at 2.54 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "638dacc7-4599-4ff0-89d2-65c8d89076be") + ) + (pad "1" thru_hole circle + (at 0 0 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D4)") + (pinfunction "1_1") + (pintype "passive") + (uuid "9df59c6f-de63-4300-bcca-4f07241b5b96") + ) + (pad "2" thru_hole circle + (at -6.35 2.54 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "2_2") + (pintype "passive") + (uuid "127a4f2c-f08e-4783-90f6-1e6aaa69db07") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_Keyboard.3dshapes/SW_Cherry_MX_1.00u_PCB.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Arduino:Arduino_Pro_Micro" + (layer "F.Cu") + (uuid "5bc1d944-b8ef-4adf-8d75-544f4621e9f4") + (at 144.04 88.01 -90) + (property "Reference" "Arduino_Pro_Micro1" + (at 8.89 -6.46 270) + (unlocked yes) + (layer "F.SilkS") + (uuid "14d0d1f6-60ad-4f28-8406-2f6032ef525c") + (effects + (font + (size 1 1) + (thickness 0.1) + ) + ) + ) + (property "Value" "~" + (at 9.03 -8.33 270) + (unlocked yes) + (layer "F.Fab") + (uuid "c7dbb350-eac0-4a9e-91fb-90401d5193a0") + (effects + (font + (size 0.8 0.8) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "119ad56f-f87e-4cbf-ab00-fa77521cafe1") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "c230d5c9-a645-44b1-8592-7377be977ae3") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/b12de0d5-802a-4ba9-94cb-5d07c9e65aa9") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "0" "1" "GND" "2" "3" "4" "5" "6" "7" "8" "9" "RAW" "RST" "VCC" + "21" "20" "19" "18" "15" "14" "16" "10" + ) + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 0 0) + (end 3 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "ecd5ddb2-e851-422d-90f6-b82f1b319eff") + ) + (fp_line + (start 0 0) + (end 0 -3) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "9da9c6b6-d910-435f-b257-98d39debaec4") + ) + (fp_line + (start 0 -3) + (end 0 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "b0257936-1bff-4d93-ab4f-b049df2f85d2") + ) + (fp_line + (start 0 -33) + (end 0 -30) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "add8790d-508b-4182-8b6f-f4ee00825660") + ) + (fp_rect + (start 4.39 -27.25) + (end 13.39 -33.65) + (stroke + (width 0.1) + (type default) + ) + (fill no) + (layer "F.SilkS") + (uuid "2d11d1a6-81d4-4599-ab59-ba193d120b6d") + ) + (fp_rect + (start 0 -32) + (end 17.5 0) + (stroke + (width 0.1) + (type default) + ) + (fill no) + (layer "F.SilkS") + (uuid "fd635453-822e-4978-89b0-b4e9b2ef4acd") + ) + (pad "0" thru_hole circle + (at 1 -29.2 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-RX0{slash}D0-Pad0)") + (pinfunction "RX0/D0_0") + (pintype "bidirectional") + (uuid "55f5d5df-7f7b-4615-a7e1-31f765d2e99f") + ) + (pad "1" thru_hole circle + (at 1 -26.66 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-TX0{slash}D1-Pad1)") + (pinfunction "TX0/D1_1") + (pintype "bidirectional") + (uuid "3d8e34b2-1633-4939-94d3-197b171a0875") + ) + (pad "2" thru_hole circle + (at 1 -19.04 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D2_(SDA))") + (pinfunction "D2_(SDA)_2") + (pintype "bidirectional") + (uuid "4013d293-e376-40b8-a9c9-34a2e6267ca0") + ) + (pad "3" thru_hole circle + (at 1 -16.5 270) + (size 1.8 1.8) + (drill 0.96) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D3_(SCL))") + (pinfunction "D3_(SCL)_3") + (pintype "bidirectional") + (uuid "c7cc8ab2-b1fe-4c33-8daa-4e2b51a5abbf") + ) + (pad "4" thru_hole circle + (at 1 -13.96 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D4)") + (pinfunction "D4_4") + (pintype "bidirectional") + (uuid "38d5f7f3-26c8-4d1a-8b75-d8b543a2923c") + ) + (pad "5" thru_hole circle + (at 1 -11.42 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D5)") + (pinfunction "D5_5") + (pintype "bidirectional") + (uuid "95ea34d8-c46f-4a95-b1fd-0f116036e4a1") + ) + (pad "6" thru_hole circle + (at 1 -8.88 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D6)") + (pinfunction "D6_6") + (pintype "bidirectional") + (uuid "9b002d8a-676e-4660-a149-90429e023c3b") + ) + (pad "7" thru_hole circle + (at 1 -6.34 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D7)") + (pinfunction "D7_7") + (pintype "bidirectional") + (uuid "efb1b3ab-cf24-4356-acf5-972feea3166b") + ) + (pad "8" thru_hole circle + (at 1 -3.8 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D8)") + (pinfunction "D8_8") + (pintype "bidirectional") + (uuid "bbd64dc7-2da5-4aa4-ae54-7f4e91f666ab") + ) + (pad "9" thru_hole circle + (at 1 -1.26 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-D9-Pad9)") + (pinfunction "D9_9") + (pintype "bidirectional") + (uuid "54a669ad-9832-48c4-ad0c-bf11305d856f") + ) + (pad "10" thru_hole circle + (at 16.49 -1.26 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D10)") + (pinfunction "D10_10") + (pintype "bidirectional") + (uuid "1c14d61b-5fa5-4424-af3d-e5d713758b6e") + ) + (pad "14" thru_hole circle + (at 16.49 -6.34 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D14_(MISO))") + (pinfunction "D14_(MISO)_14") + (pintype "bidirectional") + (uuid "0873c9be-4964-4122-b5f3-5c0f29b680c7") + ) + (pad "15" thru_hole circle + (at 16.49 -8.88 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-D15{slash}SCLK-Pad15)") + (pinfunction "D15/SCLK_15") + (pintype "bidirectional") + (uuid "0beac53d-66b3-4616-babc-6fad10cff540") + ) + (pad "16" thru_hole circle + (at 16.49 -3.8 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D16_(MOSI))") + (pinfunction "D16_(MOSI)_16") + (pintype "bidirectional") + (uuid "81e08915-924b-4683-8804-9f29abbc01f3") + ) + (pad "18" thru_hole circle + (at 16.49 -11.42 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-A0{slash}D18-Pad18)") + (pinfunction "A0/D18_18") + (pintype "bidirectional") + (uuid "9f6581e1-fce5-41f5-9d41-976ea781c9ad") + ) + (pad "19" thru_hole circle + (at 16.49 -13.96 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-A1{slash}D19-Pad19)") + (pinfunction "A1/D19_19") + (pintype "bidirectional") + (uuid "5a17eb62-a14b-400b-8e67-c3292bed1d0f") + ) + (pad "20" thru_hole circle + (at 16.49 -16.5 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-A2{slash}D20-Pad20)") + (pinfunction "A2/D20_20") + (pintype "bidirectional") + (uuid "5427b52d-93ca-48bd-87cf-dd4be271b3cc") + ) + (pad "21" thru_hole circle + (at 16.49 -19.04 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-A3{slash}D21)") + (pinfunction "A3/D21_21") + (pintype "bidirectional") + (uuid "1f235402-8852-4489-ada7-0cb80859d833") + ) + (pad "GND" thru_hole circle + (at 1 -24.12 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_GND") + (pintype "unspecified") + (uuid "5ccdf60e-1485-4220-b352-7c5968b068f7") + ) + (pad "GND" thru_hole circle + (at 1 -21.58 270) + (size 1.8 1.8) + (drill 0.96) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_GND") + (pintype "unspecified") + (uuid "d31d4056-b814-473e-9539-51015b388a07") + ) + (pad "GND" thru_hole circle + (at 16.49 -26.66 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_GND") + (pintype "unspecified") + (uuid "1f1a805b-9d23-4d2b-88b5-0b39e04232e7") + ) + (pad "RAW" thru_hole circle + (at 16.49 -29.2 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-PadRAW)") + (pinfunction "RAW_RAW") + (pintype "unspecified") + (uuid "c26ab703-a15b-4746-ba79-b12603268376") + ) + (pad "RST" thru_hole circle + (at 16.49 -24.12 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "unconnected-(Arduino_Pro_Micro1-PadRST)") + (pinfunction "RST_RST") + (pintype "unspecified") + (uuid "a2b73615-0f27-47e0-9ab6-b7c898a6b3e1") + ) + (pad "VCC" thru_hole circle + (at 16.49 -21.58 270) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "VCC") + (pinfunction "VCC_VCC") + (pintype "unspecified") + (uuid "99077578-21e6-4b7c-9550-fc454a21a1ff") + ) + (group "" + (uuid "ca464a12-f35b-486e-ab7f-574cac0b140f") + (members "0873c9be-4964-4122-b5f3-5c0f29b680c7" "0beac53d-66b3-4616-babc-6fad10cff540" + "1c14d61b-5fa5-4424-af3d-e5d713758b6e" "1f1a805b-9d23-4d2b-88b5-0b39e04232e7" + "1f235402-8852-4489-ada7-0cb80859d833" "38d5f7f3-26c8-4d1a-8b75-d8b543a2923c" + "3d8e34b2-1633-4939-94d3-197b171a0875" "4013d293-e376-40b8-a9c9-34a2e6267ca0" + "5427b52d-93ca-48bd-87cf-dd4be271b3cc" "54a669ad-9832-48c4-ad0c-bf11305d856f" + "55f5d5df-7f7b-4615-a7e1-31f765d2e99f" "5a17eb62-a14b-400b-8e67-c3292bed1d0f" + "5ccdf60e-1485-4220-b352-7c5968b068f7" "81e08915-924b-4683-8804-9f29abbc01f3" + "95ea34d8-c46f-4a95-b1fd-0f116036e4a1" "99077578-21e6-4b7c-9550-fc454a21a1ff" + "9b002d8a-676e-4660-a149-90429e023c3b" "9f6581e1-fce5-41f5-9d41-976ea781c9ad" + "a2b73615-0f27-47e0-9ab6-b7c898a6b3e1" "bbd64dc7-2da5-4aa4-ae54-7f4e91f666ab" + "c26ab703-a15b-4746-ba79-b12603268376" "c7cc8ab2-b1fe-4c33-8daa-4e2b51a5abbf" + "d31d4056-b814-473e-9539-51015b388a07" "efb1b3ab-cf24-4356-acf5-972feea3166b" + ) + ) + (embedded_fonts no) + (model "pro_micro_rp2040.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "MiniPico_RP2040 V1.1.step" + (hide yes) + (offset + (xyz -5.15 80.3 0.4) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 90) + ) + ) + ) + (footprint "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (layer "F.Cu") + (uuid "a0983587-1e36-4e6f-adb3-09a008b969d9") + (at 137.58 123.54 -90) + (descr "Cherry MX keyswitch, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") + (tags "Cherry MX keyswitch 1.00u PCB") + (property "Reference" "SW3" + (at -2.54 -2.794 90) + (layer "F.SilkS") + (uuid "2da8792a-2864-4b8a-aa5c-b18f582f9830") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SW_Push_3" + (at -2.54 12.954 90) + (layer "F.Fab") + (uuid "80af6891-6d5a-4a8b-b1cd-7f386ab2c3b0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "e5220d4b-d804-4734-839b-631afd9618e9") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "0c38375c-f65d-430c-b2d7-f250241e62ac") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/078687b7-58b5-4389-a4db-2e68268c877e") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -9.525 12.065) + (end -9.525 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "31c3947e-c634-48e2-b690-123bab8f3b7b") + ) + (fp_line + (start 4.445 12.065) + (end -9.525 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9b5810aa-e066-4a7b-9a19-f7d2b9a2eca8") + ) + (fp_line + (start -9.525 -1.905) + (end 4.445 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e5689a58-7ddb-402d-9dfb-623c695aaed7") + ) + (fp_line + (start 4.445 -1.905) + (end 4.445 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7a0150ba-a9ce-40bd-a9ea-c9d11df49ed0") + ) + (fp_line + (start -12.065 14.605) + (end -12.065 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "35d6b97f-e1b3-4f73-b34d-243e1acf8973") + ) + (fp_line + (start 6.985 14.605) + (end -12.065 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "1148de88-c5cf-4034-8058-6e5d643515be") + ) + (fp_line + (start -12.065 -4.445) + (end 6.985 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "5a4a5604-4118-4c42-bc8e-948c043156e1") + ) + (fp_line + (start 6.985 -4.445) + (end 6.985 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "7bacf7cd-b5ed-4010-a019-1644012e5619") + ) + (fp_line + (start -9.14 11.68) + (end -9.14 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "09c04683-26b5-4ca1-91ef-49a22263a016") + ) + (fp_line + (start 4.06 11.68) + (end -9.14 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "88351a4b-d5cd-4591-ac40-950f5e6e3cb6") + ) + (fp_line + (start -9.14 -1.52) + (end 4.06 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "c35769b9-9175-48fa-aab1-22a5e5d7d609") + ) + (fp_line + (start 4.06 -1.52) + (end 4.06 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "06665565-726f-4068-a320-090138e4cfbe") + ) + (fp_line + (start -8.89 11.43) + (end -8.89 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "030a2a48-b0e7-4acc-ae34-8bf4c94c55fc") + ) + (fp_line + (start 3.81 11.43) + (end -8.89 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "3bef7ca7-01b6-49bc-8f0a-6a96d30b33a1") + ) + (fp_line + (start -8.89 -1.27) + (end 3.81 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "47a7d85c-cd76-4d3c-9779-e14c8eb32134") + ) + (fp_line + (start 3.81 -1.27) + (end 3.81 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d99bdf62-b3be-4ed3-8c2f-f683495d4364") + ) + (fp_text user "${REFERENCE}" + (at -2.54 -2.794 90) + (layer "F.Fab") + (uuid "ee83781c-886d-45c5-990d-5c36c0d7d398") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at -7.62 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "20b56c46-1117-41ad-972d-e29097b04a5e") + ) + (pad "" np_thru_hole circle + (at -2.54 5.08 270) + (size 4 4) + (drill 4) + (layers "*.Cu" "*.Mask") + (uuid "60a8606d-fe87-4f14-8e5d-9f6951bfa26d") + ) + (pad "" np_thru_hole circle + (at 2.54 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "7f4b7951-ed1c-40d8-96d5-6d1b376c9d66") + ) + (pad "1" thru_hole circle + (at 0 0 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D6)") + (pinfunction "1_1") + (pintype "passive") + (uuid "feaf3aed-9b4b-43b3-859f-b9388ec09aec") + ) + (pad "2" thru_hole circle + (at -6.35 2.54 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "2_2") + (pintype "passive") + (uuid "cbc8639f-4c45-4d2c-8b9e-3e7a5fb5237d") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_Keyboard.3dshapes/SW_Cherry_MX_1.00u_PCB.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Capacitor_SMD:C_01005_0402Metric" + (layer "F.Cu") + (uuid "c74501de-fc18-4f01-a3d4-8dd97b6591cc") + (at 110.375 97.565 -90) + (descr "Capacitor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf)") + (tags "capacitor") + (property "Reference" "C4" + (at 0 -1 90) + (layer "F.SilkS") + (uuid "da1d1624-653f-46b4-99a6-3055dd201152") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "C" + (at 0 1 90) + (layer "F.Fab") + (uuid "82cc0fad-3bdd-4958-bf43-0f076b00d7d8") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "d19b06bf-e3d4-4275-8bda-be5fd8c6adb9") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "7bafb099-a097-457d-912d-e859e968859f") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "SMD_2terminal_chip_molded" + (at 0 0 90) + (layer "F.SilkS") + (hide yes) + (uuid "7c68bcb3-63b7-4639-b93c-18fac96ce283") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/24d8b0d3-58a4-454c-88fa-a799773f1940") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_rect + (start -0.6 -0.3) + (end 0.6 0.3) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "4166ed05-0c94-4aeb-b35f-361af7e2ed09") + ) + (fp_rect + (start -0.2 -0.1) + (end 0.2 0.1) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "bcf87d6a-393e-4b61-83a1-32329a6b1028") + ) + (fp_text user "${REFERENCE}" + (at 0 -0.62 90) + (layer "F.Fab") + (uuid "d32e0b0f-e4ad-4951-b85b-e1f1b9e730f7") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) + ) + ) + (pad "" smd roundrect + (at -0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "a3bb7a98-ba99-4eb4-a0a4-459bb661b50d") + ) + (pad "" smd roundrect + (at 0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "b7f8fccc-6d96-4ec1-b2ea-ef32b705742a") + ) + (pad "1" smd roundrect + (at -0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "b548f801-eff9-4d24-840d-8f6bf204157f") + ) + (pad "2" smd roundrect + (at 0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "VCC") + (pintype "passive") + (uuid "dd552f11-4c5c-414c-a22c-f762cfbb9e0f") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_01005_0402Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Horizontal" + (layer "F.Cu") + (uuid "c7f3b98c-2613-4a3c-8c4a-44f9106db725") + (at 60.4 64.45) + (descr "Through hole angled socket strip, 1x03, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated") + (tags "Through hole angled socket strip THT 1x03 2.54mm single row") + (property "Reference" "J1" + (at -4.38 -2.77 0) + (layer "F.SilkS") + (uuid "e6bb4fcc-ac3f-4cda-8bd2-b486fa39346c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "Potentiometer" + (at -4.38 7.85 0) + (layer "F.Fab") + (uuid "a1015b1d-dcc1-43c5-95a3-eec91477965b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "89126a8c-cc43-4cb3-a80f-d36285bb5319") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x03, script generated" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "6725d9ac-fa85-4de6-b39e-c9a09cfab4af") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "853bf49b-4fde-4a2d-8d4f-f1a5caf34a49") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Connector*:*_1x??_*") + (path "/27dd40c6-8775-460c-b504-48de23bf8698") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2" "3") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -10.09 -1.33) + (end -10.09 6.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "286ddf50-1984-425d-a51d-118b30ccf1a3") + ) + (fp_line + (start -10.09 -1.33) + (end -1.46 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "89bae490-8c95-4f9c-9ec1-f560988b94d0") + ) + (fp_line + (start -10.09 -1.21) + (end -1.46 -1.21) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5788d2f1-7f79-45f5-93ad-fc103e6e5962") + ) + (fp_line + (start -10.09 -1.091905) + (end -1.46 -1.091905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a240d33f-4f7b-433e-b9e3-f81ece4910b6") + ) + (fp_line + (start -10.09 -0.97381) + (end -1.46 -0.97381) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1b028ca3-0780-487d-9de2-e9feea544a08") + ) + (fp_line + (start -10.09 -0.855714) + (end -1.46 -0.855714) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "91c105f5-98c0-4332-81e4-6f3e23d575b9") + ) + (fp_line + (start -10.09 -0.737619) + (end -1.46 -0.737619) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "646c5632-d50b-4504-b296-b2796311d189") + ) + (fp_line + (start -10.09 -0.619524) + (end -1.46 -0.619524) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1c293ac9-e623-468a-8728-b9a89462ffbf") + ) + (fp_line + (start -10.09 -0.501429) + (end -1.46 -0.501429) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3931a4bc-12be-4a4f-aacc-d489620b7e69") + ) + (fp_line + (start -10.09 -0.383333) + (end -1.46 -0.383333) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d16b1d4e-3987-45cb-a94d-9c0a3db4b3fd") + ) + (fp_line + (start -10.09 -0.265238) + (end -1.46 -0.265238) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6cbfa57e-d1be-4f88-b9b5-519960667031") + ) + (fp_line + (start -10.09 -0.147143) + (end -1.46 -0.147143) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3f9cb985-b84d-407f-a39c-4186b08b2180") + ) + (fp_line + (start -10.09 -0.029048) + (end -1.46 -0.029048) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "55aae402-b05e-414e-87be-cd9649ba2966") + ) + (fp_line + (start -10.09 0.089048) + (end -1.46 0.089048) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e2b45a09-fe59-4b7d-a832-56b2a360b243") + ) + (fp_line + (start -10.09 0.207143) + (end -1.46 0.207143) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0c268d65-7afd-42cb-9abb-dde3a1ebaa39") + ) + (fp_line + (start -10.09 0.325238) + (end -1.46 0.325238) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e01c5547-78e7-4b4f-a744-7f9dac6214bf") + ) + (fp_line + (start -10.09 0.443333) + (end -1.46 0.443333) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a42c3d35-e317-4fdd-ba29-49435f630394") + ) + (fp_line + (start -10.09 0.561429) + (end -1.46 0.561429) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "181ce3d7-75ab-4ed9-8306-689116152a21") + ) + (fp_line + (start -10.09 0.679524) + (end -1.46 0.679524) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5992a0c6-71b7-4dbe-a603-16fc9bb78503") + ) + (fp_line + (start -10.09 0.797619) + (end -1.46 0.797619) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2cf3da1e-315b-4499-be77-f01de895c9e6") + ) + (fp_line + (start -10.09 0.915714) + (end -1.46 0.915714) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2fb3fdd2-52a5-45d0-8bba-89ec9d67bede") + ) + (fp_line + (start -10.09 1.03381) + (end -1.46 1.03381) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8aab07b1-81b1-4a51-9845-a73abf9523ab") + ) + (fp_line + (start -10.09 1.151905) + (end -1.46 1.151905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5fb9d080-1a31-4da5-8620-a492631d6df2") + ) + (fp_line + (start -10.09 1.27) + (end -1.46 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4afdb6e4-8086-492e-a86f-f2fb8f461a41") + ) + (fp_line + (start -10.09 3.81) + (end -1.46 3.81) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9cd6a819-0925-4677-8f53-51ef4f71e61e") + ) + (fp_line + (start -10.09 6.41) + (end -1.46 6.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0ef6ee67-db7e-443b-9828-0d4a1e367f06") + ) + (fp_line + (start -1.46 -1.33) + (end -1.46 6.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c93e5d18-f2e5-436f-8bfc-a9afcf9426cd") + ) + (fp_line + (start -1.46 -0.36) + (end -1.11 -0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "84d95cee-2336-4362-bf96-d338f7c9eeac") + ) + (fp_line + (start -1.46 0.36) + (end -1.11 0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "29d65576-30b2-47bd-883a-9255a1d2d828") + ) + (fp_line + (start -1.46 2.18) + (end -1.05 2.18) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "28b8e03e-cc6a-4672-8454-15982d5dd9ec") + ) + (fp_line + (start -1.46 2.9) + (end -1.05 2.9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "80d8b278-daea-428d-9c28-f31eb47b6337") + ) + (fp_line + (start -1.46 4.72) + (end -1.05 4.72) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "44cd8034-bde9-4d09-88c1-9e50b3750a45") + ) + (fp_line + (start -1.46 5.44) + (end -1.05 5.44) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f28c7b63-a2cc-4cab-a67a-737545207c9b") + ) + (fp_line + (start 0 -1.33) + (end 1.11 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "670bc178-7245-4b21-9600-e28d4619d167") + ) + (fp_line + (start 1.11 -1.33) + (end 1.11 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "15a2fb55-bfb4-404e-9ea9-e3a0da38335f") + ) + (fp_line + (start -10.55 -1.75) + (end -10.55 6.85) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "0df4f8b3-c3a3-4f43-b266-d60ccb6b350c") + ) + (fp_line + (start -10.55 6.85) + (end 1.75 6.85) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "142bc185-ecc9-47b3-a6e0-bb2c6c607db7") + ) + (fp_line + (start 1.75 -1.75) + (end -10.55 -1.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "abe422f5-8135-40ef-b9d7-e51c8c8bd04e") + ) + (fp_line + (start 1.75 6.85) + (end 1.75 -1.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "719a4ebd-497e-477b-8c1f-1c98679669ce") + ) + (fp_line + (start -10.03 -1.27) + (end -2.49 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "7a82ea47-5a11-4f6f-a686-2d696f048180") + ) + (fp_line + (start -10.03 6.35) + (end -10.03 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "cabf25df-3df1-4086-bd11-26441bae452c") + ) + (fp_line + (start -2.49 -1.27) + (end -1.52 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a7991aa0-b0b1-4731-b726-1bf61db41209") + ) + (fp_line + (start -1.52 -0.3) + (end -1.52 6.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "2f01e79e-6763-4b4e-8e15-57bc052da80f") + ) + (fp_line + (start -1.52 0.3) + (end 0 0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "16cff1cb-9c37-482d-963b-61c9a1a7ecd7") + ) + (fp_line + (start -1.52 2.84) + (end 0 2.84) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "6e63af38-66c2-4862-b84d-d6db5ddb4d67") + ) + (fp_line + (start -1.52 5.38) + (end 0 5.38) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "79c0f68f-2183-44e9-802e-6a01c8b2ef5e") + ) + (fp_line + (start -1.52 6.35) + (end -10.03 6.35) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5f94b2c5-a902-4d3b-929a-a9cb974096d6") + ) + (fp_line + (start 0 -0.3) + (end -1.52 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "67177d4a-9f4f-4267-8066-2cc44ba9ced2") + ) + (fp_line + (start 0 0.3) + (end 0 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d784b072-bbea-4588-9d94-b622c8693d0f") + ) + (fp_line + (start 0 2.24) + (end -1.52 2.24) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5f870aa4-4097-48f8-be10-347656d04016") + ) + (fp_line + (start 0 2.84) + (end 0 2.24) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "ff4cccee-2b1a-4567-a47f-e5d20be19894") + ) + (fp_line + (start 0 4.78) + (end -1.52 4.78) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1b8ce5fc-1af5-4673-9495-428d672bebf9") + ) + (fp_line + (start 0 5.38) + (end 0 4.78) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "788d2350-6528-42de-b1e4-841832d050a4") + ) + (fp_text user "${REFERENCE}" + (at -5.775 2.54 90) + (layer "F.Fab") + (uuid "be49b82d-f22d-4f01-af4a-94df7d0f9d6b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_1") + (pintype "passive") + (uuid "1cfd237e-07e4-42cb-a72c-f742c8d5aabd") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-A3{slash}D21)") + (pinfunction "OUT_2") + (pintype "passive") + (uuid "fd11260d-0dee-43bb-91d2-0f09f4c5c879") + ) + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "VCC") + (pinfunction "VCC_3") + (pintype "passive") + (uuid "ab60156d-3705-45c6-84cc-59a5cb645645") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinSocket_2.54mm.3dshapes/PinSocket_1x03_P2.54mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Button_Switch_THT:SW_PUSH_6mm" + (layer "F.Cu") + (uuid "c85b857d-ee2a-4ccc-b1fe-c4c2f0b09eda") + (at 131 96 -90) + (descr "Generic 6mm SW tactile push button") + (tags "tact sw push 6mm") + (property "Reference" "SWPush1" + (at 3.25 -2 90) + (layer "F.SilkS") + (uuid "b6e0bf08-a939-4996-b321-82c9b594844b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SW_Push_Mode" + (at 3.75 6.7 90) + (layer "F.Fab") + (uuid "5482ce6a-76e7-428d-93cf-3726f9e1c5a5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "c077070c-648a-4d50-9801-f3a4f800d6ff") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "d13e8d98-f81f-46ad-9677-1f17baad2d5f") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/09a318e8-725b-4cf5-9710-f9900bbbea5b") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1 5.5) + (end 5.5 5.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9be444b3-3e32-491b-b656-11832999060f") + ) + (fp_line + (start 6.75 3) + (end 6.75 1.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2ccdc0f4-1914-405c-a501-84e315d0632e") + ) + (fp_line + (start -0.25 1.5) + (end -0.25 3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "991cb1fc-e5fe-4800-88fd-edf4eca3c396") + ) + (fp_line + (start 5.5 -1) + (end 1 -1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ee280df3-95a9-4538-8e2b-1c24033cd398") + ) + (fp_line + (start -1.5 6) + (end -1.25 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f754999b-fb03-40ab-8042-eb7ceaa0d941") + ) + (fp_line + (start 7.75 6) + (end -1.25 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "d982c137-1fc4-4506-b0ea-816afe2b5f1b") + ) + (fp_line + (start 7.75 6) + (end 8 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "95513d8a-14f5-4896-b4e7-b4532fe0cbdd") + ) + (fp_line + (start 8 6) + (end 8 5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "89cc7bae-6776-49ae-bdc9-1e8ea4d112b4") + ) + (fp_line + (start -1.5 5.75) + (end -1.5 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "522dc3a2-d519-4bff-a2e3-87ce6a0ae914") + ) + (fp_line + (start -1.5 5.75) + (end -1.5 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "85999d61-9292-4482-9b84-5bb0ff3496a4") + ) + (fp_line + (start -1.5 -1.25) + (end -1.5 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "97762126-4af2-43e9-aef2-8f87c9a0a11d") + ) + (fp_line + (start 8 -1.25) + (end 8 5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "80629cb8-85db-487e-b801-9a18efbf369f") + ) + (fp_line + (start -1.5 -1.5) + (end -1.25 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "9fd5dcfe-1280-4a15-8cc4-1876ce6190d7") + ) + (fp_line + (start -1.25 -1.5) + (end 7.75 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f225eca6-ad50-46f3-aad6-6ed797a42adf") + ) + (fp_line + (start 7.75 -1.5) + (end 8 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "b7f518c5-1a63-4d8e-8719-33e321dfd3dd") + ) + (fp_line + (start 8 -1.5) + (end 8 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "807d3bd1-b02e-457e-bc6d-5d78571db6b8") + ) + (fp_line + (start 0.25 5.25) + (end 0.25 -0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1b08f231-ac9d-4b6a-9b35-d23b29b86b64") + ) + (fp_line + (start 6.25 5.25) + (end 0.25 5.25) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "5da109dd-9fef-4687-a6fe-18c80cb8d6fb") + ) + (fp_line + (start 0.25 -0.75) + (end 3.25 -0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "aee3d4ff-ed3e-496b-b1de-e9131d5540f1") + ) + (fp_line + (start 3.25 -0.75) + (end 6.25 -0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f8fa3207-116a-47cc-8d10-1707e2a4d6c6") + ) + (fp_line + (start 6.25 -0.75) + (end 6.25 5.25) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "48e4636d-d614-49f3-8838-9f83e9df16c3") + ) + (fp_circle + (center 3.25 2.25) + (end 1.25 2.5) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "0ae283b5-38ac-4e7c-a9c0-8e5d6777b858") + ) + (fp_text user "${REFERENCE}" + (at 3.25 2.25 90) + (layer "F.Fab") + (uuid "2eeb27e6-18fb-46ee-b8c8-5e452f010c54") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole circle + (at 0 0) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D8)") + (pinfunction "1_1") + (pintype "passive") + (uuid "d1df592a-b720-4d92-a2a8-c1d495e0db11") + ) + (pad "1" thru_hole circle + (at 6.5 0) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D8)") + (pinfunction "1_1") + (pintype "passive") + (uuid "133ad3c9-41f7-4f28-8b9c-c233a6cb2cfd") + ) + (pad "2" thru_hole circle + (at 0 4.5) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "2_2") + (pintype "passive") + (uuid "18e829ae-b16b-4305-8385-5866676f286e") + ) + (pad "2" thru_hole circle + (at 6.5 4.5) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "2_2") + (pintype "passive") + (uuid "ca6dc95e-3eae-4384-9ea7-4f62f76eafd1") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Connector_PinSocket_2.00mm:PinSocket_1x04_P2.00mm_Horizontal" + (layer "F.Cu") + (uuid "c88a6c6b-e900-4b32-b31d-0b0d536e6dad") + (at 78.2 70 180) + (descr "Through hole angled socket strip, 1x04, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated") + (tags "Through hole angled socket strip THT 1x04 2.00mm single row") + (property "Reference" "J2" + (at -3.31 -2.5 0) + (layer "F.SilkS") + (uuid "74dd214b-af87-405e-9a25-026636b82138") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "I2C" + (at -3.31 8.5 0) + (layer "F.Fab") + (uuid "de39422c-47d5-4973-9d03-f6bf6f68cfeb") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "6cc322a7-3313-4ed3-b4f3-35bff0db2a7d") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x04, script generated" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "c6b9457a-2d14-4cea-868c-5279451ca8d7") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "843695ce-b952-4ab0-b354-48412b7677a5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Connector*:*_1x??_*") + (path "/84844544-6284-4513-a704-d13a2f1a10cc") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2" "3" "4") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 0.935 -1.06) + (end 0.935 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b1f8a5c0-579c-487f-978f-91d331d34546") + ) + (fp_line + (start 0 -1.06) + (end 0.935 -1.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "19a9b40a-1ab6-4023-8d21-a6556704e2fc") + ) + (fp_line + (start -1.21 6.36) + (end -0.862917 6.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "af796c3e-7fdb-4c5e-9ff1-d35f8e596700") + ) + (fp_line + (start -1.21 5.64) + (end -0.862917 5.64) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "27f86558-65d2-408c-88a3-ec9945ce8c07") + ) + (fp_line + (start -1.21 4.36) + (end -0.862917 4.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2b6fb7bf-daf7-40c7-a6dd-50db1af65627") + ) + (fp_line + (start -1.21 3.64) + (end -0.862917 3.64) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cb48bf2a-18af-47d7-9ab3-51ffe151d47c") + ) + (fp_line + (start -1.21 2.36) + (end -0.862917 2.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "62ad18d3-19bb-4c23-9bd5-8f4ad51e9fb4") + ) + (fp_line + (start -1.21 1.64) + (end -0.862917 1.64) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f93fb932-09ae-4398-9c32-ca829a1b6a40") + ) + (fp_line + (start -1.21 0.36) + (end -0.935 0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c18d64a2-26df-4e13-bf1b-311cd991c44b") + ) + (fp_line + (start -1.21 -0.36) + (end -0.935 -0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3bad08b6-b583-4463-9da4-dbb38f05e3d7") + ) + (fp_line + (start -1.21 -1.06) + (end -1.21 7.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b36dd689-6b16-49ff-812d-6ff17a294d65") + ) + (fp_line + (start -7.68 7.06) + (end -1.21 7.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "13766f69-d9a6-48e4-bc8a-07e3b1fc4e96") + ) + (fp_line + (start -7.68 5) + (end -1.21 5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9159d3de-4569-4447-81ae-62ee75198d29") + ) + (fp_line + (start -7.68 3) + (end -1.21 3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5672699e-4a74-4130-8a95-d463eef36b19") + ) + (fp_line + (start -7.68 1) + (end -1.21 1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "71a672f3-e01f-4546-846b-0e4c80a4b7bd") + ) + (fp_line + (start -7.68 0.885882) + (end -1.21 0.885882) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "286955d7-96d1-4b69-bc26-4e20d12f7ca5") + ) + (fp_line + (start -7.68 0.771765) + (end -1.21 0.771765) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d87904cc-2aa1-40f1-99ef-08643d60e596") + ) + (fp_line + (start -7.68 0.657647) + (end -1.21 0.657647) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5d04c01e-0d32-46b2-be4f-7bab8227c6d0") + ) + (fp_line + (start -7.68 0.543529) + (end -1.21 0.543529) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0ba84eac-acad-4136-893f-103d8e6e3023") + ) + (fp_line + (start -7.68 0.429412) + (end -1.21 0.429412) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1a3bca02-2d7d-410d-b252-8c62f0ce3a12") + ) + (fp_line + (start -7.68 0.315294) + (end -1.21 0.315294) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fb3b74d1-28b4-4fb7-93cf-d6b916a91680") + ) + (fp_line + (start -7.68 0.201176) + (end -1.21 0.201176) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0848d907-aebd-43a5-9bec-424161c05681") + ) + (fp_line + (start -7.68 0.087059) + (end -1.21 0.087059) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "832b3b56-2dee-4f21-88ce-a385e886bdf7") + ) + (fp_line + (start -7.68 -0.027059) + (end -1.21 -0.027059) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "70fed4ac-3314-4904-95b8-b4e11b31643f") + ) + (fp_line + (start -7.68 -0.141176) + (end -1.21 -0.141176) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "64485b07-7a7e-4e67-bdb5-4054cccfb7c3") + ) + (fp_line + (start -7.68 -0.255294) + (end -1.21 -0.255294) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0ed4ddf4-c628-40d9-9a75-b0a917a222e5") + ) + (fp_line + (start -7.68 -0.369412) + (end -1.21 -0.369412) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f8a86b7c-77ca-4994-9ef0-6291ad1f13b6") + ) + (fp_line + (start -7.68 -0.483529) + (end -1.21 -0.483529) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e86b0a15-190c-4771-8dab-1592a2c59fa0") + ) + (fp_line + (start -7.68 -0.597647) + (end -1.21 -0.597647) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8e1c3b0e-cb74-4bec-9a5e-3b3dbf677087") + ) + (fp_line + (start -7.68 -0.711765) + (end -1.21 -0.711765) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1f7aae5d-79bb-47c7-8ae2-9aa9fd0bd440") + ) + (fp_line + (start -7.68 -0.825882) + (end -1.21 -0.825882) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c7bfe9c2-fa4d-460a-a2fb-22987f8f3458") + ) + (fp_line + (start -7.68 -0.94) + (end -1.21 -0.94) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f54e8016-6aed-4ed4-b7c0-b837a6433726") + ) + (fp_line + (start -7.68 -1.06) + (end -1.21 -1.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b863ea6b-b2ec-4940-a86d-f64afb2d3fcb") + ) + (fp_line + (start -7.68 -1.06) + (end -7.68 7.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a7886dd9-3b44-4fb4-b11d-c7b5814ff57e") + ) + (fp_line + (start 1.5 7.5) + (end 1.5 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "82e7f8a3-4afa-454e-a206-a914b7198727") + ) + (fp_line + (start 1.5 -1.5) + (end -8.1 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5ecde688-2ac2-428d-af4a-1b299bf88e54") + ) + (fp_line + (start -8.1 7.5) + (end 1.5 7.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "d7df8713-4e43-4d46-a337-b9bb1e231493") + ) + (fp_line + (start -8.1 -1.5) + (end -8.1 7.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "18fe611b-2b67-4842-8da5-2ffad1803d1e") + ) + (fp_line + (start 0 6.3) + (end 0 5.7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "86d58c4c-4aa1-457d-af52-394c14f37fd2") + ) + (fp_line + (start 0 5.7) + (end -1.27 5.7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "97d7bb49-dded-4af2-97bf-e56fc1349140") + ) + (fp_line + (start 0 4.3) + (end 0 3.7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "94174ce0-7d00-4d4c-bfa6-c5198ec13bf8") + ) + (fp_line + (start 0 3.7) + (end -1.27 3.7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "45068f93-e1da-4f6f-ba5f-15f1fb452e91") + ) + (fp_line + (start 0 2.3) + (end 0 1.7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "224963e6-64ec-4179-934d-685858435ef7") + ) + (fp_line + (start 0 1.7) + (end -1.27 1.7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "958d12b0-1add-494c-9415-6c6fe5ef26fd") + ) + (fp_line + (start 0 0.3) + (end 0 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "363edccc-861c-46d3-b39f-190f7a7898bb") + ) + (fp_line + (start 0 -0.3) + (end -1.27 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "83e322c4-a40e-48af-9ac7-1b017c428484") + ) + (fp_line + (start -1.27 7) + (end -7.62 7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c5f99f27-d446-4337-8178-4447e59a1b2c") + ) + (fp_line + (start -1.27 6.3) + (end 0 6.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "46e4edb1-9aba-414d-b8b2-46970fe00b91") + ) + (fp_line + (start -1.27 4.3) + (end 0 4.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "dc9cc502-4a78-4e68-9cfb-069cda4b1455") + ) + (fp_line + (start -1.27 2.3) + (end 0 2.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "73bdff4a-dca7-4d88-abd9-68ca48b2f7f3") + ) + (fp_line + (start -1.27 0.3) + (end 0 0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "9229e265-4b63-4177-96bf-88dd93d9ad42") + ) + (fp_line + (start -1.27 -0.3) + (end -1.27 7) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "2040948c-6917-4770-90fa-13293351f2f7") + ) + (fp_line + (start -1.97 -1) + (end -1.27 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "679176cf-a8e4-425f-afab-96ac11aada24") + ) + (fp_line + (start -7.62 7) + (end -7.62 -1) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "18b8f4ea-b620-49f6-b820-9cab2255db46") + ) + (fp_line + (start -7.62 -1) + (end -1.97 -1) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "6d8b5432-3b92-418b-86af-80597cfea935") + ) + (fp_text user "${REFERENCE}" + (at -4.445 3 90) + (layer "F.Fab") + (uuid "c96f9dc7-d8cd-46e6-b7d4-cdbdb0e55765") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect + (at 0 0 180) + (size 1.35 1.35) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_1") + (pintype "passive") + (uuid "d29a0d41-e9a8-44a8-868f-ebc4bd206677") + ) + (pad "2" thru_hole circle + (at 0 2 180) + (size 1.35 1.35) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "VCC") + (pinfunction "VCC_2") + (pintype "passive") + (uuid "b3fa2622-6bd8-40a5-a5a3-df44c38f9701") + ) + (pad "3" thru_hole circle + (at 0 4 180) + (size 1.35 1.35) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D2_(SDA))") + (pinfunction "SDA_3") + (pintype "passive") + (uuid "f9e8d8aa-6006-49df-ada2-e9fa41821088") + ) + (pad "4" thru_hole circle + (at 0 6 180) + (size 1.35 1.35) + (drill 0.8) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D3_(SCL))") + (pinfunction "SCL_4") + (pintype "passive") + (uuid "18f52bea-e76f-42e5-a211-7f159879e78e") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinSocket_2.00mm.3dshapes/PinSocket_1x04_P2.00mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Capacitor_SMD:C_01005_0402Metric" + (layer "F.Cu") + (uuid "d89b5cdf-0be8-4749-af0d-0050341202b8") + (at 112.025 97.565 -90) + (descr "Capacitor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf)") + (tags "capacitor") + (property "Reference" "C3" + (at 0 -1 90) + (layer "F.SilkS") + (uuid "25885963-3f32-40b2-ace8-433b1663fddc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "C" + (at 0 1 90) + (layer "F.Fab") + (uuid "d754183c-f33f-4f1f-b736-bb7760ddde0b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "3ad83586-ebc0-4a21-bd24-b88ae9ec7795") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "363ed386-99a2-4b75-b26c-2b8d0978f45f") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "SMD_2terminal_chip_molded" + (at 0 0 90) + (layer "F.SilkS") + (hide yes) + (uuid "7b522be5-933d-4e77-a030-ed512a972a4c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/9409abc1-33bb-4f1e-b668-fe2a121607c7") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_rect + (start -0.6 -0.3) + (end 0.6 0.3) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "b8a55ac1-31b1-4a99-b0c3-ec5c24bba1fb") + ) + (fp_rect + (start -0.2 -0.1) + (end 0.2 0.1) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "fd67a3dd-e393-454d-aa74-ff606c5d8342") + ) + (fp_text user "${REFERENCE}" + (at 0 -0.62 90) + (layer "F.Fab") + (uuid "701e825d-848e-420b-92a3-b99913e78eeb") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) + ) + ) + (pad "" smd roundrect + (at -0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "299c659e-4cbf-4094-972f-8b4599fcea65") + ) + (pad "" smd roundrect + (at 0.275 0 270) + (size 0.27 0.27) + (layers "F.Paste") + (roundrect_rratio 0.25) + (uuid "ae337fae-a257-4d2f-a206-3f0156c209ef") + ) + (pad "1" smd roundrect + (at -0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "c7cae5f1-96f4-4ea5-abfc-a0143dbacb92") + ) + (pad "2" smd roundrect + (at 0.25 0 270) + (size 0.4 0.3) + (layers "F.Cu" "F.Mask") + (roundrect_rratio 0.25) + (net "VCC") + (pintype "passive") + (uuid "b18dad96-e210-4752-a765-8c5a36789db0") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_01005_0402Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (layer "F.Cu") + (uuid "e25d4d26-520c-42b1-9113-596635ea2697") + (at 156.58 123.54 -90) + (descr "Cherry MX keyswitch, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") + (tags "Cherry MX keyswitch 1.00u PCB") + (property "Reference" "SW4" + (at -2.54 -2.794 90) + (layer "F.SilkS") + (uuid "d11d8d4d-61da-45ff-833a-2b79ba15ace0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SW_Push_4" + (at -2.54 12.954 90) + (layer "F.Fab") + (uuid "fa429c9c-bb54-4fcf-87a2-d920b4209c31") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "5ab42f9d-ac61-43e0-a959-5433a0f431c6") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "3b8d4670-6116-47d0-bbad-a5da32e436d4") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/36fe8cea-3967-4d8b-9b23-38cec0d265ac") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -9.525 12.065) + (end -9.525 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5ee1637a-15bf-442a-b209-d33ae054e580") + ) + (fp_line + (start 4.445 12.065) + (end -9.525 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "273659b3-97d4-4cf1-8af8-9b30ff2d9c96") + ) + (fp_line + (start -9.525 -1.905) + (end 4.445 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d152222c-cb6c-4bab-800a-05ee5251e79d") + ) + (fp_line + (start 4.445 -1.905) + (end 4.445 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e4903f95-6b71-4652-a445-1be6b9000e94") + ) + (fp_line + (start -12.065 14.605) + (end -12.065 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "5c9f95ec-855f-4ca2-baf3-04c7e4d4302b") + ) + (fp_line + (start 6.985 14.605) + (end -12.065 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "129745d5-e44f-491e-b739-fcd79377820e") + ) + (fp_line + (start -12.065 -4.445) + (end 6.985 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "3e27e206-1f70-491f-bccd-5269006c9d9a") + ) + (fp_line + (start 6.985 -4.445) + (end 6.985 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "ab269ca3-fa5f-489c-9e47-dd48032c78d5") + ) + (fp_line + (start -9.14 11.68) + (end -9.14 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "27bf52de-c1ee-47fa-9785-7e74d68a8359") + ) + (fp_line + (start 4.06 11.68) + (end -9.14 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8b7a0f8c-5125-478a-a310-ee94c206a5ff") + ) + (fp_line + (start -9.14 -1.52) + (end 4.06 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5a66526c-3d76-4d41-97db-c896db718114") + ) + (fp_line + (start 4.06 -1.52) + (end 4.06 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "ceba2e4a-e362-4ce0-97f0-7930b28b783a") + ) + (fp_line + (start -8.89 11.43) + (end -8.89 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f3bbe2fe-79c7-4697-84bc-858573a14a78") + ) + (fp_line + (start 3.81 11.43) + (end -8.89 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "72c445c6-9c5f-43c1-8c8c-6ba096a4abe1") + ) + (fp_line + (start -8.89 -1.27) + (end 3.81 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "b672e966-22e4-4826-af2e-594277ed25d5") + ) + (fp_line + (start 3.81 -1.27) + (end 3.81 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c793584e-e437-4a8e-bc9b-8117c5b48d9d") + ) + (fp_text user "${REFERENCE}" + (at -2.54 -2.794 90) + (layer "F.Fab") + (uuid "931375ec-6d69-46ed-8463-6169e23131ae") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at -7.62 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "c58bf7a9-8e52-4adc-8452-1081114cd072") + ) + (pad "" np_thru_hole circle + (at -2.54 5.08 270) + (size 4 4) + (drill 4) + (layers "*.Cu" "*.Mask") + (uuid "e5928344-3a0e-4406-9bd7-54c137abc596") + ) + (pad "" np_thru_hole circle + (at 2.54 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "c21336a3-82d8-4b9e-b480-134133be65cf") + ) + (pad "1" thru_hole circle + (at 0 0 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D7)") + (pinfunction "1_1") + (pintype "passive") + (uuid "354a8d92-864d-4693-b501-e3ed00e11909") + ) + (pad "2" thru_hole circle + (at -6.35 2.54 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "2_2") + (pintype "passive") + (uuid "dfc5130c-fa79-4d55-a9c9-87f2e9bddba2") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_Keyboard.3dshapes/SW_Cherry_MX_1.00u_PCB.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (layer "F.Cu") + (uuid "e40f853d-9323-43e9-8d44-5c9120a4a6b7") + (at 118.58 123.46 -90) + (descr "Cherry MX keyswitch, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") + (tags "Cherry MX keyswitch 1.00u PCB") + (property "Reference" "SW2" + (at -2.54 -2.794 90) + (layer "F.SilkS") + (uuid "c2019e0f-c950-49c3-9df2-e3eaf9f080e3") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SW_Push_2" + (at -2.54 12.954 90) + (layer "F.Fab") + (uuid "9a891417-9f17-4ea8-9aa9-2edc7f5afaa7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "a7580031-b09a-4f48-8d57-22ca9464e04c") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "3f395a6e-76cf-4b07-866b-85eaab9ff518") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (path "/9a609295-cd96-4ed1-9d1b-bcc6e101f605") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -9.525 12.065) + (end -9.525 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d38a168f-31d3-4bf2-964f-0ddcf6c2126c") + ) + (fp_line + (start 4.445 12.065) + (end -9.525 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a3093644-c25e-4d54-a527-b330b649f6c4") + ) + (fp_line + (start -9.525 -1.905) + (end 4.445 -1.905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0b74d3f6-a4c2-4882-b361-69b83a7bb882") + ) + (fp_line + (start 4.445 -1.905) + (end 4.445 12.065) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "cb6afe07-a215-43c0-866f-3f661bd85b8c") + ) + (fp_line + (start -12.065 14.605) + (end -12.065 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "c37c28c8-6a28-4439-92fe-3e021badc4be") + ) + (fp_line + (start 6.985 14.605) + (end -12.065 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "60a4e179-bf68-4a4f-a579-75d957737470") + ) + (fp_line + (start -12.065 -4.445) + (end 6.985 -4.445) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "0e8a7b35-e962-4e00-bcac-0e611337fcbe") + ) + (fp_line + (start 6.985 -4.445) + (end 6.985 14.605) + (stroke + (width 0.15) + (type solid) + ) + (layer "Dwgs.User") + (uuid "1af36fc4-265f-41c7-8aaf-29bf3d3c4624") + ) + (fp_line + (start -9.14 11.68) + (end -9.14 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "3bd4eaf1-45b7-4df6-8f66-502c8c36b871") + ) + (fp_line + (start 4.06 11.68) + (end -9.14 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "80e0df4d-79a3-46d8-81ce-fb9452bf47ec") + ) + (fp_line + (start -9.14 -1.52) + (end 4.06 -1.52) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7dcc707c-4ed9-484e-b669-db0e830bafea") + ) + (fp_line + (start 4.06 -1.52) + (end 4.06 11.68) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "ffc8cc45-1629-473b-a97a-f18e23a9df50") + ) + (fp_line + (start -8.89 11.43) + (end -8.89 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "7f7dc9fc-1549-4a63-b0fc-3a7cdfd2181c") + ) + (fp_line + (start 3.81 11.43) + (end -8.89 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c91e7462-d8ae-47a4-bdc7-92bd8467afe2") + ) + (fp_line + (start -8.89 -1.27) + (end 3.81 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "fb48df48-dc7f-4e20-aff2-a1f183d07da6") + ) + (fp_line + (start 3.81 -1.27) + (end 3.81 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "9b0ab301-ba3d-43de-8571-8362d4546183") + ) + (fp_text user "${REFERENCE}" + (at -2.54 -2.794 90) + (layer "F.Fab") + (uuid "f0573f3e-71f7-4d54-b0eb-06b995dca3e9") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "" np_thru_hole circle + (at -7.62 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "efa596c1-8455-43c5-840f-0563928a425e") + ) + (pad "" np_thru_hole circle + (at -2.54 5.08 270) + (size 4 4) + (drill 4) + (layers "*.Cu" "*.Mask") + (uuid "e6549a94-a011-4566-91bc-1c126e8f2970") + ) + (pad "" np_thru_hole circle + (at 2.54 5.08 270) + (size 1.7 1.7) + (drill 1.7) + (layers "*.Cu" "*.Mask") + (uuid "26c2c014-a89f-4e12-ab6f-91ca5492b2e6") + ) + (pad "1" thru_hole circle + (at 0 0 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D5)") + (pinfunction "1_1") + (pintype "passive") + (uuid "68aecdbc-2e87-432b-8e26-cb699c184959") + ) + (pad "2" thru_hole circle + (at -6.35 2.54 270) + (size 2.2 2.2) + (drill 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "2_2") + (pintype "passive") + (uuid "909b11f1-45e2-4625-863e-cb71306f45d5") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_Keyboard.3dshapes/SW_Cherry_MX_1.00u_PCB.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Horizontal" + (layer "F.Cu") + (uuid "e50985c8-d82f-4a9a-8150-7cd950e4ac05") + (at 139.6 69.6 180) + (descr "Through hole angled socket strip, 1x05, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated") + (tags "Through hole angled socket strip THT 1x05 2.54mm single row") + (property "Reference" "J3" + (at -4.38 -2.77 0) + (layer "F.SilkS") + (uuid "1dfd5562-b6b7-4f0e-8649-936ade56e5d5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "KY-040" + (at -4.38 12.93 0) + (layer "F.Fab") + (uuid "c4b91909-f533-45b6-a8ed-27761c75378d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "7ca821b2-7609-4831-a48e-d5571c956be4") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x05, script generated" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d3d97642-2b45-4c60-bce2-27c29950e5d4") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "KiLib_Generator" "connector/pin_header_socket" + (at 0 0 0) + (layer "F.SilkS") + (hide yes) + (uuid "eb67eec6-355e-486d-a7d8-25feabb2e143") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Connector*:*_1x??_*") + (path "/d5d5369b-1e65-415c-a77b-d4bf52a4ddb5") + (sheetname "/") + (sheetfile "SmartKeyAssistant.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2" "3" "4" "5") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 1.11 -1.33) + (end 1.11 0) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "75ab561e-7375-4495-9f1f-9b5562866fca") + ) + (fp_line + (start 0 -1.33) + (end 1.11 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ddc1ca3e-3113-4b28-8fac-001805ad4999") + ) + (fp_line + (start -1.46 10.52) + (end -1.05 10.52) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d3a88eca-88f0-4a0e-ad5e-f96964213ace") + ) + (fp_line + (start -1.46 9.8) + (end -1.05 9.8) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "25bd994f-e1a9-417d-aa95-4554e5ce2ae5") + ) + (fp_line + (start -1.46 7.98) + (end -1.05 7.98) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "add68697-393e-42ca-920a-7e5458c4872d") + ) + (fp_line + (start -1.46 7.26) + (end -1.05 7.26) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "870ff786-d01b-4d6b-b5a0-9e1913b3463b") + ) + (fp_line + (start -1.46 5.44) + (end -1.05 5.44) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4ca43dba-bea0-4d08-b755-93e4ae8dd18e") + ) + (fp_line + (start -1.46 4.72) + (end -1.05 4.72) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "009810cf-a1f5-4b25-a003-fb00f8c90b31") + ) + (fp_line + (start -1.46 2.9) + (end -1.05 2.9) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b3312446-31b4-4d5b-aaaf-bc66f10491aa") + ) + (fp_line + (start -1.46 2.18) + (end -1.05 2.18) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0d632384-4b19-4170-9bc3-7350e313e243") + ) + (fp_line + (start -1.46 0.36) + (end -1.11 0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bf54304a-e71a-4b91-a47d-39706c901497") + ) + (fp_line + (start -1.46 -0.36) + (end -1.11 -0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e2dd3e5b-83dd-4a34-bab4-a83953958c1c") + ) + (fp_line + (start -1.46 -1.33) + (end -1.46 11.49) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6a1534d0-3dea-4918-b0ea-5019c984552a") + ) + (fp_line + (start -10.09 11.49) + (end -1.46 11.49) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "139c7ee6-570d-4762-9649-5c8a71d3bf0e") + ) + (fp_line + (start -10.09 8.89) + (end -1.46 8.89) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "da39b154-9783-4a1c-82c1-69a49546a239") + ) + (fp_line + (start -10.09 6.35) + (end -1.46 6.35) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "794321f1-ac94-4766-b653-f3afba3b3a85") + ) + (fp_line + (start -10.09 3.81) + (end -1.46 3.81) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6c51794f-0457-4002-b7de-15b072ea4492") + ) + (fp_line + (start -10.09 1.27) + (end -1.46 1.27) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c50149b5-2dcd-48d5-952c-e77920890bd9") + ) + (fp_line + (start -10.09 1.151905) + (end -1.46 1.151905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fff6f5bb-a64a-4c46-80c7-321a6864229f") + ) + (fp_line + (start -10.09 1.03381) + (end -1.46 1.03381) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "40b710e2-b6b9-4160-8ab9-f40951aec3d9") + ) + (fp_line + (start -10.09 0.915714) + (end -1.46 0.915714) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dd538cb1-5024-445f-8eb3-8525ec9be558") + ) + (fp_line + (start -10.09 0.797619) + (end -1.46 0.797619) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4386de55-a546-4368-8cf2-c354788c1461") + ) + (fp_line + (start -10.09 0.679524) + (end -1.46 0.679524) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "17c45b95-712f-4313-a527-ed5686272644") + ) + (fp_line + (start -10.09 0.561429) + (end -1.46 0.561429) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f7f71c3a-8aee-4dc4-a920-c691270a18d8") + ) + (fp_line + (start -10.09 0.443333) + (end -1.46 0.443333) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "261d2a17-288d-48cc-b586-59e78b021d36") + ) + (fp_line + (start -10.09 0.325238) + (end -1.46 0.325238) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b830a11a-c673-4619-952e-9dcd664126b2") + ) + (fp_line + (start -10.09 0.207143) + (end -1.46 0.207143) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b743a010-b362-487d-ac53-f046e66894c4") + ) + (fp_line + (start -10.09 0.089048) + (end -1.46 0.089048) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4d1ef4bb-e079-4339-a677-37d85f6260d5") + ) + (fp_line + (start -10.09 -0.029048) + (end -1.46 -0.029048) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "3d903068-ee0b-4dbe-bfc4-a8f261f21ce3") + ) + (fp_line + (start -10.09 -0.147143) + (end -1.46 -0.147143) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ee04f130-ae74-4247-9894-1ee31f1aa4f4") + ) + (fp_line + (start -10.09 -0.265238) + (end -1.46 -0.265238) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8e09dcfc-dbbb-4d19-b9d1-a24148d935f6") + ) + (fp_line + (start -10.09 -0.383333) + (end -1.46 -0.383333) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7173fc2c-233f-46aa-b215-054ea32f3bfc") + ) + (fp_line + (start -10.09 -0.501429) + (end -1.46 -0.501429) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "06e0302b-fe87-49ee-9b32-193901ee68fe") + ) + (fp_line + (start -10.09 -0.619524) + (end -1.46 -0.619524) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4d70f2f9-dd6b-4c8c-8ac5-c9efac3e3fb7") + ) + (fp_line + (start -10.09 -0.737619) + (end -1.46 -0.737619) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "93b0d113-58b7-44c0-8b0d-c81a071905d1") + ) + (fp_line + (start -10.09 -0.855714) + (end -1.46 -0.855714) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bf3206b1-fd12-459d-bb1f-3523ce00549d") + ) + (fp_line + (start -10.09 -0.97381) + (end -1.46 -0.97381) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "790ef5d3-7e7e-4dc0-9818-0e0c5ea3ac15") + ) + (fp_line + (start -10.09 -1.091905) + (end -1.46 -1.091905) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "8f860669-9511-489b-af70-f24136628b75") + ) + (fp_line + (start -10.09 -1.21) + (end -1.46 -1.21) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "73147581-23a3-45da-896d-b4d3fdb4cd27") + ) + (fp_line + (start -10.09 -1.33) + (end -1.46 -1.33) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "37366ba5-810b-49aa-8efe-7af3d58031d5") + ) + (fp_line + (start -10.09 -1.33) + (end -10.09 11.49) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "44574c17-ae31-4a0e-8d5e-91ab4876e6c8") + ) + (fp_line + (start 1.75 11.95) + (end 1.75 -1.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "90c4d4bf-a1d1-4cb2-87ef-1247f1ed1079") + ) + (fp_line + (start 1.75 -1.75) + (end -10.55 -1.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "4d351d9e-289e-4213-8a53-265b826f95a4") + ) + (fp_line + (start -10.55 11.95) + (end 1.75 11.95) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f8b65acc-9b1c-4aca-ae7c-e350209b6fb0") + ) + (fp_line + (start -10.55 -1.75) + (end -10.55 11.95) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "95c3efc2-ee1a-4a98-ae4d-60d9dfd16fa5") + ) + (fp_line + (start 0 10.46) + (end 0 9.86) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "639fbb51-9005-4bdd-80d0-10d2a6413c01") + ) + (fp_line + (start 0 9.86) + (end -1.52 9.86) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "900afd71-b11a-4414-8fbf-bdb04c4293e1") + ) + (fp_line + (start 0 7.92) + (end 0 7.32) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "94ec2d31-71b1-49e5-afba-691e658e8038") + ) + (fp_line + (start 0 7.32) + (end -1.52 7.32) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "97a4e8b3-b668-40ce-ad70-6ad1be95c514") + ) + (fp_line + (start 0 5.38) + (end 0 4.78) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "4a09ab26-2407-44c2-91b5-e43cbd5163b8") + ) + (fp_line + (start 0 4.78) + (end -1.52 4.78) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "726eb0b5-26ff-4b75-b2a1-e09ee1a7e4f6") + ) + (fp_line + (start 0 2.84) + (end 0 2.24) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "7607ed97-e7a8-49b8-b344-bf7e4bfd1225") + ) + (fp_line + (start 0 2.24) + (end -1.52 2.24) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1ac105f6-8ec9-4c94-8f4f-1db9749cb496") + ) + (fp_line + (start 0 0.3) + (end 0 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8ea79dce-3f57-40b4-83af-1f28bcfb2736") + ) + (fp_line + (start 0 -0.3) + (end -1.52 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1328bbf3-a4c8-4997-a9b3-b1667354da75") + ) + (fp_line + (start -1.52 11.43) + (end -10.03 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d7253433-02e8-47a0-ba08-bb33ed790dce") + ) + (fp_line + (start -1.52 10.46) + (end 0 10.46) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "7e2ca992-14c1-443f-a509-30db0c453434") + ) + (fp_line + (start -1.52 7.92) + (end 0 7.92) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "0435dd32-2cc1-4a30-88e5-4a6f9c13cfd7") + ) + (fp_line + (start -1.52 5.38) + (end 0 5.38) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8634c692-3591-4528-977b-0e66fa147929") + ) + (fp_line + (start -1.52 2.84) + (end 0 2.84) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d794e994-2bdd-4d74-b85a-8a07be8b3268") + ) + (fp_line + (start -1.52 0.3) + (end 0 0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a1e70839-03ec-4308-ac17-7c9fd37113ff") + ) + (fp_line + (start -1.52 -0.3) + (end -1.52 11.43) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "a11cd5e4-9485-496d-8afb-70cea8cee5cd") + ) + (fp_line + (start -2.49 -1.27) + (end -1.52 -0.3) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "549b9f5e-12b6-410a-84a5-1415e2083279") + ) + (fp_line + (start -10.03 11.43) + (end -10.03 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c7c3f3c1-91cc-4568-a7e9-0bd156ce629f") + ) + (fp_line + (start -10.03 -1.27) + (end -2.49 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "2eb8a3d4-c371-4094-a59d-6f9051d3dea6") + ) + (fp_text user "${REFERENCE}" + (at -5.775 5.08 90) + (layer "F.Fab") + (uuid "2d5432a5-80f8-4964-9530-931d83ebb70c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect + (at 0 0 180) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D14_(MISO))") + (pinfunction "CLK_1") + (pintype "passive") + (uuid "10b2ff69-d9b5-4195-927c-77a3fe246a06") + ) + (pad "2" thru_hole circle + (at 0 2.54 180) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D16_(MOSI))") + (pinfunction "DT_2") + (pintype "passive") + (uuid "852aaa94-3b85-4527-abf6-26ea6840be24") + ) + (pad "3" thru_hole circle + (at 0 5.08 180) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(Arduino_Pro_Micro1-D10)") + (pinfunction "SW_3") + (pintype "passive") + (uuid "f92d11db-c637-46f0-bbd5-4bd65d92b678") + ) + (pad "4" thru_hole circle + (at 0 7.62 180) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "VCC") + (pinfunction "+_4") + (pintype "passive") + (uuid "376bffa8-ed0e-4e19-9a78-04c77784fca9") + ) + (pad "5" thru_hole circle + (at 0 10.16 180) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_5") + (pintype "passive") + (uuid "793084ac-fe67-4fa0-ae43-62a02d4f8c0b") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Connector_PinSocket_2.54mm.3dshapes/PinSocket_1x05_P2.54mm_Horizontal.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (group "" + (uuid "dcc6fe29-18d4-4d50-9d9e-1e764cd34672") + (members "4b54ef52-ebe8-4f5f-ad0f-0cd7b91481ef" "a0983587-1e36-4e6f-adb3-09a008b969d9" + "e25d4d26-520c-42b1-9113-596635ea2697" "e40f853d-9323-43e9-8d44-5c9120a4a6b7" + ) + ) + (embedded_fonts no) +) diff --git a/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_prl b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_prl new file mode 100755 index 0000000..bd49c7f --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_prl @@ -0,0 +1,138 @@ +{ + "board": { + "active_layer": 0, + "active_layer_preset": "", + "auto_track_width": true, + "hidden_netclasses": [], + "hidden_nets": [], + "high_contrast_mode": 0, + "net_color_mode": 1, + "opacity": { + "images": 0.6, + "pads": 1.0, + "shapes": 1.0, + "tracks": 1.0, + "vias": 1.0, + "zones": 0.6 + }, + "prototype_zone_fills": false, + "selection_filter": { + "dimensions": true, + "footprints": true, + "graphics": true, + "keepouts": true, + "lockedItems": false, + "otherItems": true, + "pads": true, + "text": true, + "tracks": true, + "vias": true, + "zones": true + }, + "visible_items": [ + "vias", + "footprint_text", + "footprint_anchors", + "ratsnest", + "grid", + "footprints_front", + "footprints_back", + "footprint_values", + "footprint_references", + "tracks", + "drc_errors", + "drawing_sheet", + "bitmaps", + "pads", + "zones", + "drc_warnings", + "drc_exclusions", + "locked_item_shadows", + "conflict_shadows", + "shapes", + "board_outline_area", + "ly_points" + ], + "visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff", + "zone_display_mode": 0 + }, + "git": { + "integration_disabled": false, + "repo_type": "", + "repo_username": "", + "ssh_key": "" + }, + "meta": { + "filename": "SmartKeyAssistant.kicad_prl", + "version": 5 + }, + "net_inspector_panel": { + "col_hidden": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "col_order": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "col_widths": [ + 162, + 147, + 93, + 101, + 112, + 102, + 96, + 90, + 91, + 91 + ], + "custom_group_rules": [], + "expanded_rows": [], + "filter_by_net_name": true, + "filter_by_netclass": true, + "filter_text": "", + "group_by_constraint": false, + "group_by_netclass": false, + "show_time_domain_details": false, + "show_unconnected_nets": false, + "show_zero_pad_nets": false, + "sort_ascending": true, + "sorting_column": 0 + }, + "open_jobsets": [], + "project": { + "files": [] + }, + "schematic": { + "hierarchy_collapsed": [], + "selection_filter": { + "graphics": true, + "images": true, + "labels": true, + "lockedItems": false, + "otherItems": true, + "pins": true, + "ruleAreas": true, + "symbols": true, + "text": true, + "wires": true + } + } +} diff --git a/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pro b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pro new file mode 100755 index 0000000..01c194c --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_pro @@ -0,0 +1,713 @@ +{ + "board": { + "3dviewports": [], + "design_settings": { + "defaults": { + "apply_defaults_to_fp_barcodes": false, + "apply_defaults_to_fp_dimensions": false, + "apply_defaults_to_fp_fields": false, + "apply_defaults_to_fp_shapes": false, + "apply_defaults_to_fp_text": false, + "board_outline_line_width": 0.1, + "copper_line_width": 0.15, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.05, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": false, + "text_position": 0, + "units_format": 1 + }, + "fab_line_width": 0.1, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.1, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 1.27, + "height": 2.032, + "width": 2.032 + }, + "silk_line_width": 0.15, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15, + "silk_text_upright": false, + "zones": { + "45_degree_only": false, + "border_display_style": 2, + "border_hatch_pitch": 0.5, + "corner_radius": 0.0, + "corner_smoothing": 0, + "fill_mode": 0, + "hatch_gap": 1.5, + "hatch_orientation": 0.0, + "hatch_smoothing_level": 0, + "hatch_smoothing_value": 0.1, + "hatch_thickness": 1.0, + "min_clearance": 0.508, + "min_island_area": 10.0, + "min_thickness": 0.25, + "pad_connection": 1, + "remove_islands": 0, + "thermal_relief_gap": 0.5, + "thermal_relief_spoke_width": 0.5 + } + }, + "diff_pair_dimensions": [ + { + "gap": 0.0, + "via_gap": 0.0, + "width": 0.0 + } + ], + "drc_exclusions": [], + "meta": { + "filename": "board_design_settings.json", + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "connection_width": "warning", + "copper_edge_clearance": "error", + "copper_sliver": "warning", + "courtyards_overlap": "error", + "creepage": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint": "error", + "footprint_filters_mismatch": "ignore", + "footprint_symbol_field_mismatch": "warning", + "footprint_symbol_mismatch": "warning", + "footprint_type_mismatch": "error", + "hole_clearance": "error", + "hole_near_hole": "error", + "hole_to_hole": "error", + "holes_co_located": "warning", + "invalid_outline": "error", + "isolated_copper": "warning", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "lib_footprint_issues": "warning", + "lib_footprint_mismatch": "warning", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "mirrored_text_on_front_layer": "warning", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "missing_tuning_profile": "warning", + "net_conflict": "warning", + "nonmirrored_text_on_back_layer": "warning", + "npth_inside_courtyard": "ignore", + "padstack": "error", + "pth_inside_courtyard": "ignore", + "shorting_items": "error", + "silk_edge_clearance": "warning", + "silk_over_copper": "error", + "silk_overlap": "error", + "skew_out_of_range": "error", + "solder_mask_bridge": "error", + "starved_thermal": "error", + "text_height": "warning", + "text_on_edge_cuts": "error", + "text_thickness": "warning", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_angle": "error", + "track_dangling": "warning", + "track_not_centered_on_via": "ignore", + "track_on_post_machined_layer": "error", + "track_segment_length": "error", + "track_width": "error", + "tracks_crossing": "error", + "tuning_profile_track_geometries": "ignore", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zone_has_empty_net": "error", + "zones_intersect": "error" + }, + "rules": { + "allow_blind_buried_vias": false, + "allow_microvias": false, + "max_error": 0.005, + "min_clearance": 0.0, + "min_connection": 0.0, + "min_copper_edge_clearance": 0.05, + "min_groove_width": 0.0, + "min_hole_clearance": 0.0, + "min_hole_to_hole": 0.25, + "min_microvia_diameter": 0.2, + "min_microvia_drill": 0.1, + "min_resolved_spokes": 2, + "min_silk_clearance": 0.0, + "min_text_height": 0.8, + "min_text_thickness": 0.08, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.2, + "min_via_annular_width": 0.05, + "min_via_diameter": 0.4, + "solder_mask_to_copper_clearance": 0.0, + "use_height_for_length_calcs": true + }, + "teardrop_options": [ + { + "td_onpthpad": true, + "td_onroundshapesonly": false, + "td_onsmdpad": true, + "td_ontrackend": false, + "td_onvia": true + } + ], + "teardrop_parameters": [ + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_round_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_rect_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_on_pad_in_zone": false, + "td_target_name": "td_track_end", + "td_width_to_size_filter_ratio": 0.9 + } + ], + "track_widths": [ + 0.0, + 0.2, + 0.4, + 0.6 + ], + "tuning_pattern_settings": { + "diff_pair_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 1.0 + }, + "diff_pair_skew_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 0.6 + }, + "single_track_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 0.6 + } + }, + "via_dimensions": [ + { + "diameter": 0.0, + "drill": 0.0 + }, + { + "diameter": 0.6, + "drill": 0.3 + }, + { + "diameter": 0.8, + "drill": 0.4 + } + ], + "zones_allow_external_fillets": false, + "zones_use_no_outline": true + }, + "ipc2581": { + "bom_rev": "", + "dist": "", + "distpn": "", + "internal_id": "", + "mfg": "", + "mpn": "", + "sch_revision": "" + }, + "layer_pairs": [], + "layer_presets": [], + "viewports": [] + }, + "boards": [], + "component_class_settings": { + "assignments": [], + "meta": { + "version": 0 + }, + "sheet_component_classes": { + "enabled": false + } + }, + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "conflicting_netclasses": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "endpoint_off_grid": "warning", + "extra_units": "error", + "field_name_whitespace": "warning", + "footprint_filter": "ignore", + "footprint_link_issues": "warning", + "four_way_junction": "ignore", + "global_label_dangling": "warning", + "ground_pin_not_ground": "warning", + "hier_label_mismatch": "error", + "isolated_pin_label": "warning", + "label_dangling": "error", + "label_multiple_wires": "warning", + "lib_symbol_issues": "warning", + "lib_symbol_mismatch": "warning", + "missing_bidi_pin": "warning", + "missing_input_pin": "warning", + "missing_power_pin": "error", + "missing_unit": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "same_local_global_label": "warning", + "similar_label_and_power": "warning", + "similar_labels": "warning", + "similar_power": "warning", + "simulation_model_issue": "error", + "single_global_label": "ignore", + "stacked_pin_name": "warning", + "unannotated": "error", + "unconnected_wire_endpoint": "warning", + "undefined_netclass": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "SmartKeyAssistant.kicad_pro", + "version": 3 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "priority": 2147483647, + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "tuning_profile": "", + "via_diameter": 0.6, + "via_drill": 0.4, + "wire_width": 6 + } + ], + "meta": { + "version": 5 + }, + "net_colors": null, + "netclass_assignments": null, + "netclass_patterns": [] + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "plot": "", + "pos_files": "", + "specctra_dsn": "", + "step": "", + "svg": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "annotation": { + "method": 0, + "sort_order": 0 + }, + "bom_export_filename": "${PROJECTNAME}.csv", + "bom_fmt_presets": [], + "bom_fmt_settings": { + "field_delimiter": ",", + "keep_line_breaks": false, + "keep_tabs": false, + "name": "CSV", + "ref_delimiter": ",", + "ref_range_delimiter": "", + "string_delimiter": "\"" + }, + "bom_presets": [], + "bom_settings": { + "exclude_dnp": false, + "fields_ordered": [ + { + "group_by": false, + "label": "Reference", + "name": "Reference", + "show": true + }, + { + "group_by": true, + "label": "Value", + "name": "Value", + "show": true + }, + { + "group_by": false, + "label": "Datasheet", + "name": "Datasheet", + "show": true + }, + { + "group_by": false, + "label": "Footprint", + "name": "Footprint", + "show": true + }, + { + "group_by": false, + "label": "Qty", + "name": "${QUANTITY}", + "show": true + }, + { + "group_by": true, + "label": "DNP", + "name": "${DNP}", + "show": true + } + ], + "filter_string": "", + "group_symbols": true, + "include_excluded_from_bom": false, + "name": "Grouped By Value", + "sort_asc": true, + "sort_field": "Reference" + }, + "bus_aliases": {}, + "connection_grid_size": 50.0, + "drawing": { + "dashed_lines_dash_length_ratio": 12.0, + "dashed_lines_gap_length_ratio": 3.0, + "default_bus_thickness": 12.0, + "default_junction_size": 40.0, + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "default_wire_thickness": 6.0, + "field_names": [], + "hop_over_size_choice": 0, + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.3, + "operating_point_overlay_i_precision": 3, + "operating_point_overlay_i_range": "~A", + "operating_point_overlay_v_precision": 3, + "operating_point_overlay_v_range": "~V", + "overbar_offset_ratio": 1.23, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.3 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "reuse_designators": true, + "space_save_all_events": true, + "spice_adjust_passive_values": false, + "spice_current_sheet_as_root": false, + "spice_external_command": "spice \"%I\"", + "spice_model_current_sheet_as_root": true, + "spice_save_all_currents": false, + "spice_save_all_dissipations": false, + "spice_save_all_voltages": false, + "subpart_first_id": 65, + "subpart_id_separator": 0, + "top_level_sheets": [ + { + "filename": "SmartKeyAssistant.kicad_sch", + "name": "SmartKeyAssistant", + "uuid": "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + } + ], + "used_designators": "", + "variants": [] + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "SmartKeyAssistant" + ] + ], + "text_variables": {}, + "tuning_profiles": { + "meta": { + "version": 0 + }, + "tuning_profiles_impedance_geometric": [] + } +} diff --git a/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_sch b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_sch new file mode 100755 index 0000000..faef7de --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/SmartKeyAssistant.kicad_sch @@ -0,0 +1,12683 @@ +(kicad_sch + (version 20260306) + (generator "eeschema") + (generator_version "10.0") + (uuid "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55") + (paper "A2") + (title_block + (date "sam. 04 avril 2015") + ) + (lib_symbols + (symbol "Conn_01x05_Pin_1" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J3" + (at 0.635 10.16 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "KY-040" + (at 0.635 7.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Connector_PinSocket_2.00mm:PinSocket_1x05_P2.00mm_Horizontal" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x05, script generated" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_locked" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x05_Pin_1_1_1" + (rectangle + (start 0.8636 5.207) + (end 0 4.953) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 -4.953) + (end 0 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 1.27 5.08) (xy 0.8636 5.08) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 2.54) (xy 0.8636 2.54) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 0) (xy 0.8636 0) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -2.54) (xy 0.8636 -2.54) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -5.08) (xy 0.8636 -5.08) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at 5.08 5.08 180) + (length 3.81) + (name "CLK" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 2.54 180) + (length 3.81) + (name "DT" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 3.81) + (name "SW" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 -2.54 180) + (length 3.81) + (name "+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 -5.08 180) + (length 3.81) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Connector:Conn_01x04_Pin" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J2" + (at 0.635 7.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Screen" + (at 0.635 5.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x04, script generated" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_locked" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "connector" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_01x04_Pin_1_1" + (rectangle + (start 0.8636 2.667) + (end 0 2.413) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 0.127) + (end 0 -0.127) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 -2.413) + (end 0 -2.667) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start 0.8636 -4.953) + (end 0 -5.207) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 1.27 2.54) (xy 0.8636 2.54) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 0) (xy 0.8636 0) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -2.54) (xy 0.8636 -2.54) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -5.08) (xy 0.8636 -5.08) + ) + (stroke + (width 0.1524) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at 5.08 2.54 180) + (length 3.81) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 3.81) + (name "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 -2.54 180) + (length 3.81) + (name "SDA" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 -5.08 180) + (length 3.81) + (name "SCL" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Device:C" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "C" + (at 0.635 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C" + (at 0.635 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "C_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 0.762) (xy 2.032 0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 -0.762) (xy 2.032 -0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "C_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Device:LED" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "D" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "LED" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Light emitting diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "LED diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "LED* LED_SMD:* LED_THT:*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "LED_0_1" + (polyline + (pts + (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 0) (xy 1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 -1.27) (xy -1.27 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "LED_1_1" + (pin passive line + (at -3.81 0 0) + (length 2.54) + (name "K" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 2.54) + (name "A" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Device:R" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "R" + (at 2.032 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 0 0 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "R res resistor" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "R_*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "R_0_1" + (rectangle + (start -1.016 -2.54) + (end 1.016 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Diode:1N4148" + (pin_numbers + (hide yes) + ) + (pin_names + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "D" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "1N4148" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "diode" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "D*DO?35*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "1N4148_0_1" + (polyline + (pts + (xy -1.27 1.27) (xy -1.27 -1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 1.27) (xy 1.27 -1.27) (xy -1.27 0) (xy 1.27 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 0) (xy -1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "1N4148_1_1" + (pin passive line + (at -3.81 0 0) + (length 2.54) + (name "K" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 3.81 0 180) + (length 2.54) + (name "A" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Interface_Expansion:PCF8574T" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U" + (at -7.112 14.732 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "PCF8574T" + (at 3.302 14.732 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "8-bit I/O Expander, I2C interface, interrupt output, fixed address bits 0b0100xxx, SOIC-16" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "NXP Port-Expander" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "*SOIC*7.5x10.3mm?P1.27mm*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "PCF8574T_0_1" + (rectangle + (start -7.62 12.7) + (end 7.62 -10.16) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "PCF8574T_1_1" + (pin input line + (at -10.16 -2.54 0) + (length 2.54) + (name "A0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -10.16 -5.08 0) + (length 2.54) + (name "A1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -10.16 -7.62 0) + (length 2.54) + (name "A2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 10.16 180) + (length 2.54) + (name "P0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 7.62 180) + (length 2.54) + (name "P1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 5.08 180) + (length 2.54) + (name "P2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 2.54 180) + (length 2.54) + (name "P3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -12.7 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 0 180) + (length 2.54) + (name "P4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -2.54 180) + (length 2.54) + (name "P5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -5.08 180) + (length 2.54) + (name "P6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -7.62 180) + (length 2.54) + (name "P7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin open_collector line + (at -10.16 2.54 0) + (length 2.54) + (name "~{INT}" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -10.16 10.16 0) + (length 2.54) + (name "SCL" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 7.62 0) + (length 2.54) + (name "SDA" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 15.24 270) + (length 2.54) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "16" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Logic_LevelTranslator:TXS0108EPW" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U" + (at -6.35 16.51 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "TXS0108EPW" + (at 3.81 16.51 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" + (at 0 -19.05 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "www.ti.com/lit/ds/symlink/txs0108e.pdf" + (at 0 -2.54 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Bidirectional level-shifting voltage translator, TSSOP-20" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "8-bit" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "*SSOP*4.4x6.5mm*P0.65mm*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "TXS0108EPW_0_1" + (rectangle + (start -7.62 15.24) + (end 7.62 -15.24) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "TXS0108EPW_1_1" + (pin bidirectional line + (at -10.16 7.62 0) + (length 2.54) + (name "A1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at -2.54 17.78 270) + (length 2.54) + (name "VCCA" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 5.08 0) + (length 2.54) + (name "A2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 2.54 0) + (length 2.54) + (name "A3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 0 0) + (length 2.54) + (name "A4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 -2.54 0) + (length 2.54) + (name "A5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 -5.08 0) + (length 2.54) + (name "A6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 -7.62 0) + (length 2.54) + (name "A7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -10.16 -10.16 0) + (length 2.54) + (name "A8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -10.16 10.16 0) + (length 2.54) + (name "OE" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -17.78 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -10.16 180) + (length 2.54) + (name "B8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -7.62 180) + (length 2.54) + (name "B7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "13" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -5.08 180) + (length 2.54) + (name "B6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 -2.54 180) + (length 2.54) + (name "B5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 0 180) + (length 2.54) + (name "B4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "16" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 2.54 180) + (length 2.54) + (name "B3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "17" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 5.08 180) + (length 2.54) + (name "B2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "18" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 2.54 17.78 270) + (length 2.54) + (name "VCCB" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 10.16 7.62 180) + (length 2.54) + (name "B1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "20" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "RF:NRF24L01" + (pin_names + (offset 1.016) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U3" + (at 12.7 1.2701 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "NRF24L01" + (at 12.7 -1.2699 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 5.08 20.32 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + ) + ) + (property "Datasheet" "" + (at 0 2.54 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "Low Power RF Transceiver" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "QFN*4x4*0.5mm*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "NRF24L01_0_1" + (rectangle + (start -11.43 16.51) + (end 11.43 -16.51) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + (arc + (start -1.27 7.62) + (mid 2.008 7.088) + (end 2.54 3.81) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 0 5.08) + (radius 0.635) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 0 4.445) (xy 0 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start -0.635 6.985) + (mid 1.4383 6.5183) + (end 1.905 4.445) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 0 6.35) + (mid 0.9108 5.9908) + (end 1.27 5.08) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 11.43 -13.97) + (end 11.43 -13.97) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "NRF24L01_1_1" + (pin input line + (at -15.24 13.97 0) + (length 3.81) + (name "CE" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -15.24 10.16 0) + (length 3.81) + (name "CSN" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input clock + (at -15.24 2.54 0) + (length 3.81) + (name "SCK" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at -15.24 7.62 0) + (length 3.81) + (name "MOSI" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin output line + (at -15.24 5.08 0) + (length 3.81) + (name "MISO" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin output line + (at -15.24 -2.54 0) + (length 3.81) + (name "IRQ" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at -2.54 20.32 270) + (length 3.81) + (name "VDD" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_out line + (at 1.27 20.32 270) + (length 3.81) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Regulator_Linear:MCP1700x-120xxMB" + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U4" + (at -0.254 -8.382 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "MCP1700x-120xxMB" + (at 0 -6.35 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Package_TO_SOT_SMD:SOT-89-3" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/20001826D.pdf" + (at 0 -1.27 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "250mA Low Quiscent Current LDO, 1.2V output, SOT-89" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "regulator linear ldo" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "SOT?89*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "MCP1700x-120xxMB_0_1" + (rectangle + (start -5.08 -5.08) + (end 5.08 1.905) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "MCP1700x-120xxMB_1_1" + (pin power_in line + (at 0 3.81 270) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at -7.62 0 0) + (length 2.54) + (name "VI" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_out line + (at 7.62 0 180) + (length 2.54) + (name "VO" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "SW_Push_1" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_1_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "SW_Push_2" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_2_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "SW_Push_3" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_3_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "SW_Push_4" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_4_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "Switch:SW_Push" + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "SW" + (at 1.27 2.54 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push" + (at 0 -1.524 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "SW_Push_0_1" + (circle + (center -2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.032 0) + (radius 0.508) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 1.27) (xy -2.54 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "power:GND" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -6.35 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 270) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "power:VCC" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 0 3.556 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "VCC_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "VCC_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "pro_micro_rp2040:pro_micro_rp2040" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "Arduino_Pro_Micro1" + (at 0.635 20.32 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "" + (at 11.43 21.59 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Arduino:Arduino_Pro_Micro" + (at 11.43 21.59 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 11.43 21.59 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "pro_micro_rp2040_0_1" + (rectangle + (start -11.43 17.78) + (end 12.7 -17.78) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "pro_micro_rp2040_1_1" + (pin bidirectional line + (at -15.24 12.7 0) + (length 3.81) + (name "RX0/D0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 10.16 0) + (length 3.81) + (name "TX0/D1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 2.54 0) + (length 3.81) + (name "D2_(SDA)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 0 0) + (length 3.81) + (name "D3_(SCL)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 -2.54 0) + (length 3.81) + (name "D4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 -5.08 0) + (length 3.81) + (name "D5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 -7.62 0) + (length 3.81) + (name "D6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 -10.16 0) + (length 3.81) + (name "D7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 -12.7 0) + (length 3.81) + (name "D8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 -15.24 0) + (length 3.81) + (name "D9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 -15.24 180) + (length 3.81) + (name "D10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 -10.16 180) + (length 3.81) + (name "D14_(MISO)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 -7.62 180) + (length 3.81) + (name "D15/SCLK" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 -12.7 180) + (length 3.81) + (name "D16_(MOSI)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "16" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 -5.08 180) + (length 3.81) + (name "A0/D18" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "18" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 -2.54 180) + (length 3.81) + (name "A1/D19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 0 180) + (length 3.81) + (name "A2/D20" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "20" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 16.51 2.54 180) + (length 3.81) + (name "A3/D21" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "21" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at -15.24 7.62 0) + (length 3.81) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at -15.24 5.08 0) + (length 3.81) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 16.51 10.16 180) + (length 3.81) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 16.51 12.7 180) + (length 3.81) + (name "RAW" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "RAW" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 16.51 7.62 180) + (length 3.81) + (name "RST" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "RST" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 16.51 5.08 180) + (length 3.81) + (name "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + ) + (junction + (at 431.8 299.72) + (diameter 0) + (color 0 0 0 0) + (uuid "0f7e1f13-02b2-4d01-9313-a3c9bf5240a9") + ) + (junction + (at 354.33 309.88) + (diameter 0) + (color 0 0 0 0) + (uuid "12cace1f-3db9-4368-acbd-4aa6a451eae7") + ) + (junction + (at 457.2 265.43) + (diameter 0) + (color 0 0 0 0) + (uuid "18710043-b11a-4a81-b7e8-3a06f9578cd1") + ) + (junction + (at 495.3 167.64) + (diameter 0) + (color 0 0 0 0) + (uuid "2670b3b5-633a-4421-8646-5bddabc6f654") + ) + (junction + (at 388.62 307.34) + (diameter 0) + (color 0 0 0 0) + (uuid "3317d027-35b9-4b91-8806-fc32135597e3") + ) + (junction + (at 414.02 229.87) + (diameter 0) + (color 0 0 0 0) + (uuid "3fe84082-989a-4dbe-9fb6-33d21326688e") + ) + (junction + (at 408.94 208.28) + (diameter 0) + (color 0 0 0 0) + (uuid "46288e65-ab4f-4e20-bfb9-92ec15a5806c") + ) + (junction + (at 325.12 304.8) + (diameter 0) + (color 0 0 0 0) + (uuid "4bfb05ad-5dc4-4c26-9876-ed36b5b59911") + ) + (junction + (at 439.42 167.64) + (diameter 0) + (color 0 0 0 0) + (uuid "59d2e240-b73f-4d3b-9337-ec3f71e0d65d") + ) + (junction + (at 467.36 229.87) + (diameter 0) + (color 0 0 0 0) + (uuid "601d1f70-c110-402e-a427-bebb6bce47dc") + ) + (junction + (at 439.42 212.09) + (diameter 0) + (color 0 0 0 0) + (uuid "72a854c9-ada2-41d9-9b25-cf30f5337d61") + ) + (junction + (at 458.47 302.26) + (diameter 0) + (color 0 0 0 0) + (uuid "7d5d22cb-aafa-42bc-a2f9-040cbeef3bda") + ) + (junction + (at 363.22 326.39) + (diameter 0) + (color 0 0 0 0) + (uuid "902a87c8-705b-4e7f-a1c2-7bf1fbb1ae3e") + ) + (junction + (at 500.38 345.44) + (diameter 0) + (color 0 0 0 0) + (uuid "919e9312-68f2-45e8-9689-04ce97b9856d") + ) + (junction + (at 490.22 208.28) + (diameter 0) + (color 0 0 0 0) + (uuid "953c4637-5845-43d9-99e0-29fe9d0fa666") + ) + (junction + (at 495.3 190.5) + (diameter 0) + (color 0 0 0 0) + (uuid "9d29de8d-3905-43f8-b19c-c9bbcdb566a9") + ) + (junction + (at 434.34 306.07) + (diameter 0) + (color 0 0 0 0) + (uuid "a2830554-7e20-4c66-8c0c-d6039328308b") + ) + (junction + (at 354.33 303.53) + (diameter 0) + (color 0 0 0 0) + (uuid "a4c95b17-fdcd-442b-82f6-1de4839951a7") + ) + (junction + (at 495.3 212.09) + (diameter 0) + (color 0 0 0 0) + (uuid "a8932972-a561-43b6-85f6-9f53dadbf22a") + ) + (junction + (at 495.3 229.87) + (diameter 0) + (color 0 0 0 0) + (uuid "b2042e2f-4c7c-472a-9bb1-f99ffce566d9") + ) + (junction + (at 439.42 190.5) + (diameter 0) + (color 0 0 0 0) + (uuid "b7d4111e-00c9-451b-a30b-bb5fb125f8d1") + ) + (junction + (at 434.34 208.28) + (diameter 0) + (color 0 0 0 0) + (uuid "bb42144b-d552-44c6-ac7e-958ad21d7a09") + ) + (junction + (at 467.36 190.5) + (diameter 0) + (color 0 0 0 0) + (uuid "c80d6aff-4f25-4ad8-923f-0eb223418bec") + ) + (junction + (at 467.36 212.09) + (diameter 0) + (color 0 0 0 0) + (uuid "d6cc3e35-1dde-4843-b827-960594224448") + ) + (junction + (at 467.36 167.64) + (diameter 0) + (color 0 0 0 0) + (uuid "d7a3e508-90ec-4791-a146-93dca6cdf354") + ) + (junction + (at 439.42 229.87) + (diameter 0) + (color 0 0 0 0) + (uuid "d88fe976-7a8d-4841-9d7a-d9a1f66df4bc") + ) + (junction + (at 462.28 208.28) + (diameter 0) + (color 0 0 0 0) + (uuid "d960e289-ce0e-4c60-944e-2fd0cc2b45f1") + ) + (junction + (at 334.01 243.84) + (diameter 0) + (color 0 0 0 0) + (uuid "e4f64ab0-205c-4858-b2f1-841addc26f9d") + ) + (junction + (at 434.34 298.45) + (diameter 0) + (color 0 0 0 0) + (uuid "e8584c25-9e40-40fa-b1e5-bcfef7e143ae") + ) + (junction + (at 388.62 298.45) + (diameter 0) + (color 0 0 0 0) + (uuid "f3e70c28-3782-492b-9bb8-e8ce2da5d361") + ) + (no_connect + (at 427.99 302.26) + (uuid "1033689b-be81-4474-9608-289a54659db9") + ) + (no_connect + (at 440.69 368.3) + (uuid "2ddaa316-a5a0-4dce-b632-c6104ffa59b0") + ) + (no_connect + (at 427.99 297.18) + (uuid "60f72a54-ac14-476e-bf44-a2ea931eca11") + ) + (no_connect + (at 396.24 299.72) + (uuid "70601632-7104-4392-965d-d8d6bddf476e") + ) + (no_connect + (at 396.24 297.18) + (uuid "851b0005-836f-4614-a4bb-87e55f43a0c9") + ) + (no_connect + (at 487.68 312.42) + (uuid "ff870f18-31e4-44c4-98e9-c3e082112ccb") + ) + (wire + (pts + (xy 481.33 241.3) (xy 439.42 241.3) + ) + (stroke + (width 0) + (type default) + ) + (uuid "055a1bb6-1be1-4ab4-a124-276f98766470") + ) + (wire + (pts + (xy 462.28 208.28) (xy 467.36 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0749652b-0cef-4834-996e-d6cd3a3504ed") + ) + (wire + (pts + (xy 471.17 322.58) (xy 487.68 322.58) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0c6d7a33-7144-43e9-aee1-44bc2dffb5b8") + ) + (wire + (pts + (xy 463.55 302.26) (xy 463.55 292.1) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0d5bc5c5-5c95-4262-86a9-0ff271ecfd75") + ) + (wire + (pts + (xy 483.87 240.03) (xy 467.36 240.03) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0db23549-9e96-4513-834f-f470c3041c6c") + ) + (wire + (pts + (xy 388.62 289.56) (xy 388.62 298.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "109d7fb1-ed94-4ad9-a453-ab8abb232706") + ) + (wire + (pts + (xy 462.28 208.28) (xy 462.28 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "148a0a17-f7f7-480a-ad0b-d7f828f938d4") + ) + (wire + (pts + (xy 457.2 265.43) (xy 466.09 265.43) + ) + (stroke + (width 0) + (type default) + ) + (uuid "151bcf89-fdf5-497c-9b19-f45ae37d1d82") + ) + (wire + (pts + (xy 500.38 335.28) (xy 500.38 345.44) + ) + (stroke + (width 0) + (type default) + ) + (uuid "15cfed42-6fa8-4a6e-8758-140fce0295a6") + ) + (wire + (pts + (xy 345.44 220.98) (xy 345.44 233.68) + ) + (stroke + (width 0) + (type default) + ) + (uuid "18a067c0-df7e-4237-8c89-6c1d658c2ba3") + ) + (wire + (pts + (xy 467.36 229.87) (xy 467.36 240.03) + ) + (stroke + (width 0) + (type default) + ) + (uuid "19cf870d-a40d-4196-906f-639df03eab83") + ) + (wire + (pts + (xy 436.88 304.8) (xy 445.77 304.8) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1af1b2cc-f857-49f3-8083-641c2569ac1f") + ) + (wire + (pts + (xy 354.33 303.53) (xy 354.33 309.88) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1c270681-3e8a-44a0-a840-71b7311d5592") + ) + (wire + (pts + (xy 379.73 322.58) (xy 396.24 322.58) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1d79674a-6304-49a1-afbf-96b7c36000b2") + ) + (wire + (pts + (xy 481.33 255.27) (xy 481.33 241.3) + ) + (stroke + (width 0) + (type default) + ) + (uuid "210038c6-1ba4-47d8-a765-cc48ee3a4ead") + ) + (wire + (pts + (xy 483.87 255.27) (xy 483.87 240.03) + ) + (stroke + (width 0) + (type default) + ) + (uuid "21d52309-5409-46ef-b5c8-e494010cb506") + ) + (wire + (pts + (xy 427.99 322.58) (xy 450.85 322.58) + ) + (stroke + (width 0) + (type default) + ) + (uuid "21e6d37d-8695-4d83-8534-b6fc769e5530") + ) + (wire + (pts + (xy 363.22 223.52) (xy 350.52 223.52) + ) + (stroke + (width 0) + (type default) + ) + (uuid "24179c3f-1fbc-4609-92ab-9be839b4cbd2") + ) + (wire + (pts + (xy 467.36 212.09) (xy 495.3 212.09) + ) + (stroke + (width 0) + (type default) + ) + (uuid "255bf037-e396-4146-bebe-dac3c2e5754f") + ) + (wire + (pts + (xy 462.28 185.42) (xy 462.28 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "26918d7e-5c24-4c49-b006-ceff74e738de") + ) + (wire + (pts + (xy 457.2 260.35) (xy 457.2 265.43) + ) + (stroke + (width 0) + (type default) + ) + (uuid "279fda96-c51d-4a51-b05c-c4d9152b4703") + ) + (wire + (pts + (xy 431.8 304.8) (xy 431.8 306.07) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2d499170-f67f-436e-959e-9a93f2ad4636") + ) + (wire + (pts + (xy 354.33 289.56) (xy 354.33 303.53) + ) + (stroke + (width 0) + (type default) + ) + (uuid "321f22bb-f99f-4918-9c36-837287e91ab7") + ) + (wire + (pts + (xy 325.12 300.99) (xy 325.12 304.8) + ) + (stroke + (width 0) + (type default) + ) + (uuid "335ff5d7-4c6c-4fa2-bdc3-2a311d39d5f9") + ) + (wire + (pts + (xy 334.01 238.76) (xy 334.01 243.84) + ) + (stroke + (width 0) + (type default) + ) + (uuid "37bf9847-15f1-425d-babd-bac74809aa43") + ) + (wire + (pts + (xy 314.96 304.8) (xy 332.74 304.8) + ) + (stroke + (width 0) + (type default) + ) + (uuid "37eb0aba-91e2-4ede-b86e-b8efd0ff814e") + ) + (wire + (pts + (xy 427.99 325.12) (xy 450.85 325.12) + ) + (stroke + (width 0) + (type default) + ) + (uuid "385d4ca3-469a-4e96-8d18-6966255c99e1") + ) + (wire + (pts + (xy 379.73 327.66) (xy 379.73 322.58) + ) + (stroke + (width 0) + (type default) + ) + (uuid "419c4a2f-2ad1-483b-a970-2ed2d1d15f7d") + ) + (wire + (pts + (xy 431.8 299.72) (xy 433.07 299.72) + ) + (stroke + (width 0) + (type default) + ) + (uuid "42b372bd-8878-4689-b198-9933fe9643b0") + ) + (wire + (pts + (xy 414.02 229.87) (xy 414.02 242.57) + ) + (stroke + (width 0) + (type default) + ) + (uuid "438a36dc-8909-4b0d-ab1b-8454e757b198") + ) + (wire + (pts + (xy 372.11 313.69) (xy 372.11 320.04) + ) + (stroke + (width 0) + (type default) + ) + (uuid "45989b5f-13ab-4b5c-b8ba-1e4337fbf2eb") + ) + (wire + (pts + (xy 414.02 190.5) (xy 439.42 190.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4858f450-a2ed-40bd-a364-c11ae57dd06e") + ) + (wire + (pts + (xy 323.85 243.84) (xy 334.01 243.84) + ) + (stroke + (width 0) + (type default) + ) + (uuid "497e3d92-df80-4f50-859d-6ff9cf113407") + ) + (wire + (pts + (xy 436.88 304.8) (xy 436.88 306.07) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4c182067-4a22-445c-8e05-6b5e6de35753") + ) + (wire + (pts + (xy 314.96 309.88) (xy 354.33 309.88) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4e118e9c-88bf-47b0-ba30-578b99dcfe0e") + ) + (wire + (pts + (xy 449.58 265.43) (xy 457.2 265.43) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4e2d64d9-c7af-4f0d-9dd0-f889acc73c63") + ) + (wire + (pts + (xy 490.22 229.87) (xy 495.3 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4edd6a21-0bee-4194-a469-1aa36103016a") + ) + (wire + (pts + (xy 354.33 220.98) (xy 354.33 222.25) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4fb983a9-a3c6-48a6-887e-9ccd11ea7166") + ) + (wire + (pts + (xy 388.62 298.45) (xy 388.62 307.34) + ) + (stroke + (width 0) + (type default) + ) + (uuid "5e158c44-4c4d-4d77-a164-cca8d567bb90") + ) + (wire + (pts + (xy 495.3 190.5) (xy 500.38 190.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "630d1b4a-c7c1-4f55-98f3-8ed3d8a749f5") + ) + (wire + (pts + (xy 439.42 185.42) (xy 434.34 185.42) + ) + (stroke + (width 0) + (type default) + ) + (uuid "675cf335-9eba-4fd7-9a9e-703ca271601b") + ) + (wire + (pts + (xy 408.94 229.87) (xy 414.02 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6ea5a6f6-d245-4cc4-a9bc-39a306819cfe") + ) + (wire + (pts + (xy 495.3 229.87) (xy 495.3 240.03) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6fbcc555-39ce-4960-9a4e-aa177b46497f") + ) + (wire + (pts + (xy 354.33 222.25) (xy 347.98 222.25) + ) + (stroke + (width 0) + (type default) + ) + (uuid "72f3e1ca-6d03-4064-9442-52c97a0d685f") + ) + (wire + (pts + (xy 427.99 299.72) (xy 431.8 299.72) + ) + (stroke + (width 0) + (type default) + ) + (uuid "73eead3e-6f5a-4502-afb1-136b92ba776f") + ) + (wire + (pts + (xy 350.52 223.52) (xy 350.52 233.68) + ) + (stroke + (width 0) + (type default) + ) + (uuid "75ff554d-8f99-4c65-8a5b-f7eedc0b1650") + ) + (wire + (pts + (xy 528.32 345.44) (xy 500.38 345.44) + ) + (stroke + (width 0) + (type default) + ) + (uuid "773138ce-6430-42c4-b59b-53f25b66ff28") + ) + (wire + (pts + (xy 495.3 167.64) (xy 500.38 167.64) + ) + (stroke + (width 0) + (type default) + ) + (uuid "7bd563f2-86c2-43f3-a253-791de1d1a7fb") + ) + (wire + (pts + (xy 439.42 229.87) (xy 439.42 241.3) + ) + (stroke + (width 0) + (type default) + ) + (uuid "827e8176-cea7-43e4-8748-28ee3f2dc043") + ) + (wire + (pts + (xy 359.41 311.15) (xy 375.92 311.15) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8329edab-b2da-4a10-8be8-ab4e242ef9fd") + ) + (wire + (pts + (xy 355.6 321.31) (xy 360.68 321.31) + ) + (stroke + (width 0) + (type default) + ) + (uuid "835c5553-76dd-47a0-8dec-087a1d4a6185") + ) + (wire + (pts + (xy 490.22 208.28) (xy 490.22 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "83f76ac5-4af8-47d6-b844-5da6324dcb6e") + ) + (wire + (pts + (xy 431.8 306.07) (xy 434.34 306.07) + ) + (stroke + (width 0) + (type default) + ) + (uuid "846775df-7853-4df0-905a-8bcb0cc2d1a0") + ) + (wire + (pts + (xy 354.33 309.88) (xy 396.24 309.88) + ) + (stroke + (width 0) + (type default) + ) + (uuid "87480a9b-9bf4-4fd3-8541-418861d30891") + ) + (wire + (pts + (xy 495.3 185.42) (xy 490.22 185.42) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8795924d-94d8-4e1e-a165-b7fb7840ce88") + ) + (wire + (pts + (xy 486.41 255.27) (xy 486.41 240.03) + ) + (stroke + (width 0) + (type default) + ) + (uuid "899d99e3-1bd6-4520-be47-66e9d1649dee") + ) + (wire + (pts + (xy 436.88 299.72) (xy 436.88 298.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8f107d46-70e0-4292-9240-157331fe000b") + ) + (wire + (pts + (xy 436.88 298.45) (xy 434.34 298.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8f7c8d89-7ba7-4e97-b5cc-6b496c21bd0a") + ) + (wire + (pts + (xy 414.02 167.64) (xy 439.42 167.64) + ) + (stroke + (width 0) + (type default) + ) + (uuid "916093d4-5057-4e18-a285-1cc79149ce13") + ) + (wire + (pts + (xy 500.38 212.09) (xy 495.3 212.09) + ) + (stroke + (width 0) + (type default) + ) + (uuid "943269ae-24a9-4dc3-8845-6161ca8b7dcd") + ) + (wire + (pts + (xy 334.01 243.84) (xy 340.36 243.84) + ) + (stroke + (width 0) + (type default) + ) + (uuid "969d7937-8e43-4483-be01-c05de87e99e0") + ) + (wire + (pts + (xy 439.42 212.09) (xy 467.36 212.09) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9befa447-830e-4c80-bf77-8de2be2c94d8") + ) + (wire + (pts + (xy 471.17 317.5) (xy 487.68 317.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9dbd7c24-201b-474a-b4ea-3eae88d28d14") + ) + (wire + (pts + (xy 427.99 317.5) (xy 450.85 317.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9e2ee101-dc48-4058-8a30-ebd39c77a2f1") + ) + (wire + (pts + (xy 471.17 325.12) (xy 487.68 325.12) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a33fbc48-6341-4d0b-9af8-91cf4b3e2ec1") + ) + (wire + (pts + (xy 528.32 292.1) (xy 528.32 345.44) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a36bcaa6-6305-49a7-b288-d13ae23fe2dd") + ) + (wire + (pts + (xy 361.95 313.69) (xy 372.11 313.69) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a3c0d3b0-1604-4646-be4c-8170cd6b564c") + ) + (wire + (pts + (xy 445.77 302.26) (xy 458.47 302.26) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a3ce94c9-199c-428a-afb4-3ad36f8bde8f") + ) + (wire + (pts + (xy 427.99 304.8) (xy 431.8 304.8) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a4ef8ce4-5476-443c-94b3-7d5ce9c1e544") + ) + (wire + (pts + (xy 462.28 229.87) (xy 467.36 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a5303135-0dc9-4cca-ad94-b20a60499109") + ) + (wire + (pts + (xy 471.17 320.04) (xy 487.68 320.04) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a856d283-9bae-447c-bc19-2f07c9a57f31") + ) + (wire + (pts + (xy 431.8 299.72) (xy 431.8 298.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a8d2942a-35a1-46d5-ab3f-401783275ac1") + ) + (wire + (pts + (xy 414.02 212.09) (xy 439.42 212.09) + ) + (stroke + (width 0) + (type default) + ) + (uuid "af0ed87e-b71a-412f-a570-df5a7c5da474") + ) + (wire + (pts + (xy 363.22 326.39) (xy 355.6 326.39) + ) + (stroke + (width 0) + (type default) + ) + (uuid "af80f834-deb6-495b-adc3-0a62e0b845d9") + ) + (wire + (pts + (xy 436.88 306.07) (xy 434.34 306.07) + ) + (stroke + (width 0) + (type default) + ) + (uuid "b03c558e-6a66-4157-851b-006529bb7ebc") + ) + (wire + (pts + (xy 439.42 167.64) (xy 495.3 167.64) + ) + (stroke + (width 0) + (type default) + ) + (uuid "b3534a73-482f-4378-91d7-f6498ff1e8ea") + ) + (wire + (pts + (xy 427.99 320.04) (xy 450.85 320.04) + ) + (stroke + (width 0) + (type default) + ) + (uuid "b3d5fa1e-dd91-4e01-9c06-e056b590d4d4") + ) + (wire + (pts + (xy 414.02 185.42) (xy 408.94 185.42) + ) + (stroke + (width 0) + (type default) + ) + (uuid "b5cb1587-f434-4287-9fef-c21279f5d485") + ) + (wire + (pts + (xy 434.34 185.42) (xy 434.34 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ba77eb6f-61b2-4655-8f8b-c771911bf228") + ) + (wire + (pts + (xy 408.94 208.28) (xy 414.02 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "bba6f20a-b158-4cb0-945d-c3caa0e8df44") + ) + (wire + (pts + (xy 370.84 326.39) (xy 363.22 326.39) + ) + (stroke + (width 0) + (type default) + ) + (uuid "be0aa0ff-252b-4976-8cf7-32e84a237b5e") + ) + (wire + (pts + (xy 486.41 280.67) (xy 486.41 275.59) + ) + (stroke + (width 0) + (type default) + ) + (uuid "c4b27226-eeb5-4889-a92a-65fb32bbe037") + ) + (wire + (pts + (xy 359.41 318.77) (xy 359.41 311.15) + ) + (stroke + (width 0) + (type default) + ) + (uuid "c6cc55c5-f852-42b6-ac66-c4a797a36416") + ) + (wire + (pts + (xy 356.87 303.53) (xy 354.33 303.53) + ) + (stroke + (width 0) + (type default) + ) + (uuid "c6d4dc7c-7644-4c6b-9432-20804e0d6483") + ) + (wire + (pts + (xy 408.94 185.42) (xy 408.94 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "c98d91b3-05b0-4914-b490-36e565b6684b") + ) + (wire + (pts + (xy 467.36 185.42) (xy 462.28 185.42) + ) + (stroke + (width 0) + (type default) + ) + (uuid "cef219af-0949-4206-8166-070103e3a570") + ) + (wire + (pts + (xy 408.94 208.28) (xy 408.94 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "cef8ee0f-c357-417f-ba27-f4b3fc69d423") + ) + (wire + (pts + (xy 355.6 323.85) (xy 361.95 323.85) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d25d4be2-5d6f-4281-841f-97efcd5dd6ec") + ) + (wire + (pts + (xy 373.38 312.42) (xy 373.38 317.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d327a774-f1c6-400a-be97-f5e276131b38") + ) + (wire + (pts + (xy 360.68 312.42) (xy 373.38 312.42) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d412b725-662b-48f5-9999-cb74f3dabd6c") + ) + (wire + (pts + (xy 360.68 260.35) (xy 360.68 254) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d8e710f4-a2e5-438c-a02b-6dacdbc7d160") + ) + (wire + (pts + (xy 478.79 242.57) (xy 478.79 255.27) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d9f28c78-5de2-44c2-92e1-8f1ec1803207") + ) + (wire + (pts + (xy 361.95 323.85) (xy 361.95 313.69) + ) + (stroke + (width 0) + (type default) + ) + (uuid "da5210e4-a82d-4a14-8cf2-dfbad107f91f") + ) + (wire + (pts + (xy 486.41 240.03) (xy 495.3 240.03) + ) + (stroke + (width 0) + (type default) + ) + (uuid "db8377cf-dc07-49c9-9e35-1284611cf3f0") + ) + (wire + (pts + (xy 431.8 298.45) (xy 434.34 298.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "dc504778-f4b3-4ce6-9d54-19ba6c553400") + ) + (wire + (pts + (xy 375.92 314.96) (xy 396.24 314.96) + ) + (stroke + (width 0) + (type default) + ) + (uuid "dc7658b7-d670-40fc-b700-a7900b0c6e00") + ) + (wire + (pts + (xy 372.11 320.04) (xy 396.24 320.04) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ddfb9791-54e5-415c-a081-ebbfad43c4ab") + ) + (wire + (pts + (xy 463.55 292.1) (xy 528.32 292.1) + ) + (stroke + (width 0) + (type default) + ) + (uuid "df11e6d6-2888-425a-a0b2-428c1c7d1b08") + ) + (wire + (pts + (xy 373.38 317.5) (xy 396.24 317.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "dfd6661b-0b56-4375-be13-abfdbc590e0e") + ) + (wire + (pts + (xy 388.62 307.34) (xy 396.24 307.34) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e58180ae-2260-489d-a7c8-4180fafd1ef8") + ) + (wire + (pts + (xy 384.81 298.45) (xy 388.62 298.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e6304990-3a4c-4e7c-b07b-7ef079c973e8") + ) + (wire + (pts + (xy 314.96 307.34) (xy 388.62 307.34) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e8ebbdc2-c0aa-46a8-b5c8-5e8371359879") + ) + (wire + (pts + (xy 434.34 208.28) (xy 434.34 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e90bfedb-2cfa-4b92-9f76-f314ec5ac45c") + ) + (wire + (pts + (xy 355.6 318.77) (xy 359.41 318.77) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e954ab70-ddc3-4d62-b14f-3c5b8f4b1375") + ) + (wire + (pts + (xy 363.22 322.58) (xy 363.22 326.39) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ea6de597-93c2-4b5e-8bb3-578f1815e52d") + ) + (wire + (pts + (xy 490.22 185.42) (xy 490.22 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ec2544e7-fa23-458c-bdd6-9ec4aad4a601") + ) + (wire + (pts + (xy 360.68 321.31) (xy 360.68 312.42) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ec6141eb-e866-48d2-9804-c536178dd0a2") + ) + (wire + (pts + (xy 347.98 222.25) (xy 347.98 233.68) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f361cdf3-6cd7-4a80-9171-fc8cd4dce64a") + ) + (wire + (pts + (xy 434.34 208.28) (xy 439.42 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f4a48795-9fdf-4eaa-9596-8e03ccb23fa0") + ) + (wire + (pts + (xy 375.92 311.15) (xy 375.92 314.96) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f57e7d6c-74f5-4b09-b979-7810708fbfc5") + ) + (wire + (pts + (xy 490.22 208.28) (xy 495.3 208.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f5ca9154-4043-4403-ae86-14cfeec52a26") + ) + (wire + (pts + (xy 445.77 304.8) (xy 445.77 302.26) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f6cfff34-2a8c-4931-9332-ec498bf537c8") + ) + (wire + (pts + (xy 443.23 299.72) (xy 436.88 299.72) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f7bc135f-aab8-4a01-bbaf-3f6ba892c37e") + ) + (wire + (pts + (xy 439.42 190.5) (xy 467.36 190.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f7bf59fe-f8d6-48ed-bb09-c16e96c62c65") + ) + (wire + (pts + (xy 363.22 220.98) (xy 363.22 223.52) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f8364c6a-b750-455c-accf-cdfe33cd977d") + ) + (wire + (pts + (xy 434.34 229.87) (xy 439.42 229.87) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f962e4d4-49db-44b3-be44-433874baa3e1") + ) + (wire + (pts + (xy 478.79 242.57) (xy 414.02 242.57) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ff76b85f-daf9-424e-855f-fb2e4555b0c6") + ) + (wire + (pts + (xy 467.36 190.5) (xy 495.3 190.5) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ffdaf53d-e68a-4955-92e7-5760796e9b4f") + ) + (label "ROW_3" + (at 500.38 212.09 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "01db6767-f41a-4e27-8e42-58f1d4f90ad7") + ) + (label "SDA" + (at 347.98 254 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "1254d03c-515a-4b76-a37b-cd0b0f1be72c") + ) + (label "PCF_INT" + (at 478.79 275.59 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "1a9c5bda-f41f-4b71-951d-1a7ca288eb81") + ) + (label "SDA" + (at 354.33 289.56 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "2303c1dc-2c9b-4842-a993-52f0378e8eab") + ) + (label "SDA" + (at 473.71 275.59 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "2825b0b5-02f2-48f6-b07a-737b152d3a4a") + ) + (label "SCL" + (at 471.17 275.59 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "2f224c03-c076-4265-ae6b-9863f817d969") + ) + (label "PCF_INT" + (at 353.06 254 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "75394484-9599-4e68-b004-21eee5ee66a9") + ) + (label "ROW_3" + (at 476.25 255.27 90) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "76406ffd-9858-4b2d-8428-e2b63c95c588") + ) + (label "ROW_2" + (at 500.38 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "800c922e-edd1-4bf4-a18f-7578ba34b7e1") + ) + (label "ROW_2" + (at 473.71 255.27 90) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "b0826e74-f9ba-41ac-9bbc-942d73bf2b50") + ) + (label "PCF_INT" + (at 396.24 312.42 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "c2381b7f-7126-4b50-b2f2-35ff35453380") + ) + (label "ROW_1" + (at 471.17 255.27 90) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "c2dc8cf1-c857-4ecc-9c48-811d682a3ecd") + ) + (label "SCL" + (at 388.62 289.56 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "c30617c4-01ac-43fb-be52-322b83e8e4f0") + ) + (label "ROW_1" + (at 500.38 167.64 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "d7cbc68e-b7cb-40db-8fee-f6603fbc1061") + ) + (label "SCL" + (at 345.44 254 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "e40449c9-bcbe-42af-b667-341e732d4c12") + ) + (symbol + (lib_id "Diode:1N4148") + (at 414.02 226.06 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "02077e3b-c7e7-4807-8fe9-0259714a9dcf") + (property "Reference" "D9" + (at 416.56 224.7899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 416.56 227.3299 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 414.02 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 414.02 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 414.02 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 414.02 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 414.02 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "cfd50bfd-7e3d-475e-94da-bada74dcb898") + ) + (pin "1" + (uuid "68ec8b54-ddbb-495f-b7c5-8392eb0f4916") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D9") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 453.39 260.35 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "0315611c-1ba3-4812-bb4a-59387342365d") + (property "Reference" "C5" + (at 453.39 252.73 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "100nF" + (at 453.39 255.27 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 457.2 259.3848 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 453.39 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 453.39 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "500c7596-c4cc-42a7-ac4a-11b54aba3484") + ) + (pin "2" + (uuid "5eae8fe5-ce56-4c45-8027-b589b4f535c3") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C5") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 345.44 205.74 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "064ef641-80b0-47cb-9161-cf778f24c29b") + (property "Reference" "#PWR012" + (at 345.44 199.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 345.4399 201.93 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 345.44 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 345.44 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 345.44 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "a7a20de6-b220-49f3-ba10-0a709e8d3823") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR012") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_3") + (lib_id "Switch:SW_Push") + (at 467.36 172.72 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "078687b7-58b5-4389-a4db-2e68268c877e") + (property "Reference" "SW3" + (at 471.17 171.4499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_3" + (at 471.17 173.9899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 472.44 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 472.44 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 467.36 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "a0381eff-1ac8-49af-8261-d151604f6e64") + ) + (pin "2" + (uuid "b23c7c91-3d3b-46c9-ab5f-893c5ef73289") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 332.74 300.99 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "07f62c87-a43c-4e21-9da0-d243f4fea3f8") + (property "Reference" "#PWR016" + (at 339.09 300.99 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 336.55 300.9899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 332.74 300.99 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 332.74 300.99 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 332.74 300.99 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "9e8525a3-4e9f-42f4-86f4-ac8cb9e83f94") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR016") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Switch:SW_Push") + (at 379.73 332.74 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "09a318e8-725b-4cf5-9710-f9900bbbea5b") + (property "Reference" "SWPush1" + (at 383.54 331.4699 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_Mode" + (at 383.54 334.0099 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_THT:SW_PUSH_6mm" + (at 384.81 332.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 384.81 332.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 379.73 332.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "6b39eeb7-cb06-4980-b71c-fa18b5d43dc4") + ) + (pin "1" + (uuid "32ad7c7d-16a5-4c84-933f-dfafbecd8055") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SWPush1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 467.36 181.61 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "0ed4893b-41ca-44c8-b09b-992926f6e3e4") + (property "Reference" "D3" + (at 469.9 180.3399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 469.9 182.8799 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 467.36 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 467.36 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 467.36 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 467.36 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 467.36 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "473bbd11-5122-464a-9154-c4330b7746f6") + ) + (pin "1" + (uuid "79e32bae-ff00-4067-a6c3-d37a7d3b4990") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 495.3 204.47 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "108cdfd4-e4f3-41fb-8d96-da90cf3248eb") + (property "Reference" "D8" + (at 497.84 203.1999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 497.84 205.7399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 495.3 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 495.3 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 495.3 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 495.3 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 495.3 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "68f3b9ed-025c-4a75-90a4-306bdb7e4f24") + ) + (pin "1" + (uuid "167b9905-8309-4d8f-8339-fcf08aad6b27") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D8") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:LED") + (at 345.44 209.55 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "14e7f90c-d289-47be-b6ce-1432efcf52fa") + (property "Reference" "LED1" + (at 340.36 207.9625 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "" + (at 340.36 207.9625 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 345.44 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 345.44 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Light emitting diode" + (at 345.44 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 345.44 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "df321311-25f4-4a1a-9686-7c8df2d7dc61") + ) + (pin "2" + (uuid "5e749c70-01bd-4b63-aac4-0f8be40c4212") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "LED1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "RF:NRF24L01") + (at 502.92 314.96 0) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "16db9cb3-50ee-4320-84d9-34fc695d1db0") + (property "Reference" "U3" + (at 515.62 316.2301 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "NRF24L01" + (at 515.62 313.6901 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 508 335.28 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + ) + ) + (property "Datasheet" "" + (at 502.92 317.5 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 502.92 314.96 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "c258da55-ff05-4b03-afdb-30c0165ecdb0") + ) + (pin "4" + (uuid "c0dea229-2eb7-415b-9288-de217acbb013") + ) + (pin "19" + (uuid "2d2cc994-b647-4cce-871d-e69f276adb9d") + ) + (pin "1" + (uuid "b6b6a264-69e4-4bcc-8e05-12976906481d") + ) + (pin "3" + (uuid "a9d180a2-ed0c-4bcd-956f-ef33917c8890") + ) + (pin "5" + (uuid "1485d587-5f9c-4237-aa6d-ed4eecf4562a") + ) + (pin "6" + (uuid "282b7508-2d67-48a9-8cfb-d5fd94707876") + ) + (pin "7" + (uuid "4f6565ef-7fe0-496c-b143-7d8f7f5ecc68") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "U3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 483.87 275.59 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "1ccbbe27-6602-45de-be8d-673d030fdacd") + (property "Reference" "#PWR023" + (at 483.87 281.94 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 483.87 280.67 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 483.87 275.59 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 483.87 275.59 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 483.87 275.59 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "a33760d3-6549-4f73-8cf3-c6af55ac258a") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR023") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 467.36 204.47 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "1d8d13e4-c250-4fe4-a42e-ea5499a3cd2f") + (property "Reference" "D7" + (at 469.9 203.1999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 469.9 205.7399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 467.36 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 467.36 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 467.36 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 467.36 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 467.36 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "0682435e-40f8-4d79-9ce2-5fe3e4de528e") + ) + (pin "1" + (uuid "20d40200-c76f-477f-b4d0-77a6d52643b0") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D7") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 354.33 205.74 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "1e8d7a4d-b257-4963-8d1e-8b506b6dd00f") + (property "Reference" "#PWR013" + (at 354.33 199.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 354.3299 201.93 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 354.33 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 354.33 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 354.33 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "b74cf55e-69d3-45cc-b690-7b7dd1f335ea") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR013") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Regulator_Linear:MCP1700x-120xxMB") + (at 485.14 345.44 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "206f7fab-d290-4699-bccf-f712fad33d92") + (property "Reference" "5U3_1" + (at 485.394 337.058 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "MCP1700x-120xxMB" + (at 485.14 339.09 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Package_TO_SOT_SMD:SOT-89-3" + (at 485.14 350.52 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/20001826D.pdf" + (at 485.14 344.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "250mA Low Quiscent Current LDO, 1.2V output, SOT-89" + (at 485.14 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "c4a936f0-bfd9-478b-94a8-1d50cbf92879") + ) + (pin "2" + (uuid "9e4527e6-019e-4491-b376-f16337ccd593") + ) + (pin "3" + (uuid "69c28edb-b88e-45df-86bf-7cba4c319964") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "5U3_1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_1") + (lib_id "Switch:SW_Push") + (at 414.02 217.17 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "20f450ca-1524-4a69-baa9-5b5afbfaea2a") + (property "Reference" "SW9" + (at 417.83 215.8999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_1" + (at 417.83 218.4399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 419.1 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 419.1 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 414.02 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "d2125cac-490c-4466-9a16-e5d8a52d4b55") + ) + (pin "2" + (uuid "38b52e6b-8acf-4b9f-a0cc-30db79a244b2") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW9") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 370.84 326.39 270) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "236148f4-0e4d-4ce4-a8f1-e20f3d81048c") + (property "Reference" "#PWR09" + (at 367.03 326.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 374.65 326.3899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 370.84 326.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 370.84 326.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 370.84 326.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "156c37a5-38c2-448c-ba1b-c1ed9516f634") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR09") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 449.58 265.43 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "240292c8-4b33-46dc-93d0-3f252811348f") + (property "Reference" "#PWR021" + (at 453.39 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 444.5 265.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 449.58 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 449.58 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 449.58 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "3505997f-d373-403a-80e4-cc154687b1f3") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR021") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 367.03 322.58 270) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "24d8b0d3-58a4-454c-88fa-a799773f1940") + (property "Reference" "C4" + (at 367.03 314.96 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "100nF" + (at 367.03 317.5 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 363.22 321.6148 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 367.03 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 367.03 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "6ad3ae13-eab4-4f6b-b45a-339f36b70987") + ) + (pin "2" + (uuid "f558bcfb-42c4-4274-aa47-c032923aef88") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 496.57 345.44 90) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "28a2cfde-e7d5-4cbe-a0bc-f75c986e932f") + (property "Reference" "C7" + (at 495.2999 349.25 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 497.84 349.25 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 500.38 346.4052 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 496.57 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 496.57 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "2a80f9bb-a383-44a2-9f2f-c8c85919b050") + ) + (pin "1" + (uuid "a1e41bec-529d-4236-91fa-b78ea5342d33") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C7") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_3") + (lib_id "Switch:SW_Push") + (at 467.36 217.17 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "2cdd3180-c1ce-4224-b16d-dcac52bbfb9c") + (property "Reference" "SW11" + (at 471.17 215.8999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_3" + (at 471.17 218.4399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 472.44 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 472.44 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 467.36 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "a7024463-a297-4821-88d9-b671481de1b4") + ) + (pin "2" + (uuid "c97d7fba-0ca3-489c-9a00-2aa813de46d4") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW11") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 314.96 302.26 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "339df4e8-86d5-49bf-88b8-7fdd2eccd4f9") + (property "Reference" "#PWR010" + (at 321.31 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 318.77 302.2599 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 314.96 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 314.96 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 314.96 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "33fa67ca-23fe-41e7-8de1-bb4956a7a31c") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR010") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_4") + (lib_id "Switch:SW_Push") + (at 495.3 172.72 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "36fe8cea-3967-4d8b-9b23-38cec0d265ac") + (property "Reference" "SW4" + (at 499.11 171.4499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_4" + (at 499.11 173.9899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 500.38 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 500.38 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 495.3 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "90938452-7bf0-4607-9d21-4efde1896540") + ) + (pin "1" + (uuid "0c016753-6010-4b88-8ac6-467953df6ce9") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 368.3 243.84 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "37e8d8bf-4748-4413-888a-76c5ccae53fb") + (property "Reference" "#PWR017" + (at 374.65 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 373.38 243.84 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 368.3 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 368.3 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 368.3 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "9ffe682d-9e1d-4ffe-8b89-115448504961") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR017") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 396.24 302.26 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "3b380c9e-40dc-4915-a983-63e565d059e5") + (property "Reference" "#PWR06" + (at 389.89 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 392.43 302.2599 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 396.24 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 396.24 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 396.24 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "c34b8352-7368-46fa-b07d-314fd71e5db3") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR06") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 473.71 345.44 90) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "3ef883cf-39c2-4bbd-a5d4-81830d33b093") + (property "Reference" "C2" + (at 472.4399 349.25 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 474.98 349.25 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 477.52 346.4052 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 473.71 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 473.71 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "2d7cbde1-0d0c-45ea-a83e-a2c94e324eea") + ) + (pin "1" + (uuid "361f82f6-9167-4e13-9ba2-4d8cc2e52eff") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 358.14 254 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "3f7144a8-3838-47a8-81f9-72c563664eca") + (property "Reference" "#PWR025" + (at 358.14 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 358.14 259.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 358.14 254 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 358.14 254 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 358.14 254 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "2223b68d-4aba-4508-9d71-7320fa1dbd16") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR025") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_4") + (lib_id "Switch:SW_Push") + (at 495.3 217.17 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "47a0e8f0-4745-41c2-9b92-cc3924b470cf") + (property "Reference" "SW12" + (at 499.11 215.8999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_4" + (at 499.11 218.4399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 500.38 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 500.38 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 495.3 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "17d5ac04-e1e2-44f4-844e-aca3b7fb6392") + ) + (pin "1" + (uuid "3a0e89e9-c4e0-4166-a027-193f02ae89a3") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW12") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 364.49 303.53 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "4ada85bc-fbf1-4307-8b35-50e23a94eb7b") + (property "Reference" "#PWR029" + (at 360.68 303.53 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 368.3 303.5299 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 364.49 303.53 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 364.49 303.53 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 364.49 303.53 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "a57916eb-2721-427c-b601-2d16ad8b8297") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR029") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 360.68 260.35 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "4c847976-36ad-4c92-a7f8-77d6a182bf2a") + (property "Reference" "#PWR026" + (at 360.68 266.7 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 360.68 265.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 360.68 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 360.68 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 360.68 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "77445f03-8bc9-4b35-b62b-5efd9762fb03") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR026") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 323.85 243.84 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "529b684e-b791-40f6-8db5-199b5661f43e") + (property "Reference" "#PWR022" + (at 327.66 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 318.77 243.84 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 323.85 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 323.85 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 323.85 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "993d1125-53cd-4bfd-9b25-2e49ac15ca4a") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR022") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 354.33 217.17 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "529cb761-8519-4e06-929e-b6036937ffa3") + (property "Reference" "R2" + (at 347.98 217.17 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 350.52 217.17 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 356.108 217.17 90) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 354.33 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 354.33 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "73c8e7c7-5c70-4486-bb1d-22466987e395") + ) + (pin "1" + (uuid "db9f94bf-f8e9-41d4-bce7-6dae0c431e2e") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "R2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_1") + (lib_id "Switch:SW_Push") + (at 414.02 195.58 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "565175c1-2594-46a6-a01b-08bc33ecb066") + (property "Reference" "SW5" + (at 417.83 194.3099 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_1" + (at 417.83 196.8499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 419.1 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 419.1 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 414.02 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "70ec80e9-f6cd-45b3-8024-2068dbaff056") + ) + (pin "2" + (uuid "35b55dcc-8746-41aa-99b1-d6c931fb068c") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW5") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 370.84 322.58 90) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "568bdb4f-f18e-4c00-9099-9c5f3f8dd905") + (property "Reference" "#PWR020" + (at 377.19 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 374.65 322.5799 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 370.84 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 370.84 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 370.84 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "9da42e26-e5ef-49b8-a36f-95948ea19204") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR020") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 360.68 303.53 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "5899d0d1-0057-4f10-96c1-69162cfc2907") + (property "Reference" "R4" + (at 360.68 297.18 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R_Optional" + (at 360.68 299.72 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 360.68 305.308 90) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 360.68 303.53 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 360.68 303.53 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "2c7b7c44-a962-4534-8b20-60fcd32fbf9d") + ) + (pin "1" + (uuid "3cbb1a11-8c21-408d-bca6-711fad9e3c71") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "R4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 439.42 181.61 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "5a0cf240-c935-4b6c-8832-90ecf620f777") + (property "Reference" "D2" + (at 441.96 180.3399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 441.96 182.8799 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 439.42 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 439.42 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 439.42 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 439.42 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 439.42 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "3f79a81f-597a-4f16-b78b-2b458485997f") + ) + (pin "1" + (uuid "973c510d-55c6-4d9e-8627-fb662a096628") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Interface_Expansion:PCF8574T") + (at 355.6 243.84 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "5e8f4d72-da78-4056-aa83-83341ddd86d1") + (property "Reference" "U1" + (at 337.82 241.6967 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "PCF8574DWR" + (at 340.36 241.6967 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm" + (at 355.6 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf" + (at 355.6 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "8-bit I/O Expander, I2C interface, interrupt output, fixed address bits 0b0100xxx, SOIC-16" + (at 355.6 243.84 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "cc5cc81f-7e42-479f-8512-305e9d090afa") + ) + (pin "4" + (uuid "4eb162be-2ece-4383-b224-e16418992634") + ) + (pin "12" + (uuid "38977403-b532-42e6-9272-e0befc3658d4") + ) + (pin "10" + (uuid "8e2e0d5c-f851-41a4-b4d9-7e77200aba62") + ) + (pin "1" + (uuid "8e152bad-3c32-49cb-9741-b1a5db9dbf3a") + ) + (pin "11" + (uuid "900d4b5a-e69a-4437-9bfe-cb3603202ca3") + ) + (pin "8" + (uuid "b1188ff2-da64-4758-a1bb-c46ddc1085ce") + ) + (pin "9" + (uuid "59cb6d61-94bf-47f8-9a80-46879c90d014") + ) + (pin "5" + (uuid "b9bb1326-8c97-4d7a-b57d-8b2aa7439783") + ) + (pin "13" + (uuid "5b832e31-c618-46ad-a1fa-e348e28563e1") + ) + (pin "16" + (uuid "9f3a0f6c-41bb-47e2-9054-7f5ff1c14c2b") + ) + (pin "14" + (uuid "2b271fad-3e55-433f-bcb8-930fa675dede") + ) + (pin "6" + (uuid "705c99d2-c1da-4fc5-ad65-a28fe2ea2946") + ) + (pin "7" + (uuid "a5d630c6-aeb0-476b-ad08-8201cf5ec922") + ) + (pin "3" + (uuid "5cece34e-9562-44fe-bf84-e261548bc709") + ) + (pin "15" + (uuid "c8521f51-a5c5-48f8-90b2-7b090c67e115") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "U1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 345.44 217.17 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "6a637ad3-79ea-4ebd-954a-9cad32e62b20") + (property "Reference" "R1" + (at 339.09 217.17 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 341.63 217.17 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 347.218 217.17 90) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 345.44 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 345.44 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "847b15e2-1208-4538-a223-309847eda8a7") + ) + (pin "1" + (uuid "2474fe97-e6ea-41da-9532-ad1359ae2ee4") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "R1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_2") + (lib_id "Switch:SW_Push") + (at 439.42 217.17 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "6d844c1c-276c-4480-98e9-8d1e80e5ff58") + (property "Reference" "SW10" + (at 443.23 215.8999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_2" + (at 443.23 218.4399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 444.5 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 444.5 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 439.42 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "5693adcb-2e8b-4b4d-943b-77b36d420003") + ) + (pin "1" + (uuid "9b3e4f4a-670e-44b6-af9c-a2851b92b65d") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW10") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 379.73 337.82 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "6eff52f3-2f16-437f-8e49-d69e18890bbd") + (property "Reference" "#PWR01" + (at 379.73 344.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 379.73 342.9 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 379.73 337.82 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 379.73 337.82 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 379.73 337.82 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "7e10efe7-b078-471c-8bff-22962b909807") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR01") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 485.14 349.25 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "775ddbe6-98ee-4760-a50c-71b23bcebd60") + (property "Reference" "#PWR03" + (at 485.14 355.6 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 485.14 354.33 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 485.14 349.25 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 485.14 349.25 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 485.14 349.25 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "2fb0a724-43d5-4e06-84e2-7843f615c57f") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR03") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 363.22 217.17 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "7909f3a6-1d99-4126-9824-294193c0bd27") + (property "Reference" "R3" + (at 356.87 217.17 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 359.41 217.17 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 364.998 217.17 90) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 363.22 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 363.22 217.17 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "6ddc2103-e195-4f24-aaec-d5385ba47040") + ) + (pin "1" + (uuid "4b6f30bb-690b-4153-9cbf-8b8b994bc421") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "R3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 486.41 280.67 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "8171d768-1718-416a-b532-fac6378b421d") + (property "Reference" "#PWR027" + (at 486.41 276.86 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 486.41 285.75 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 486.41 280.67 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 486.41 280.67 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 486.41 280.67 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "4e691ed9-90bf-47e4-97f3-4e3723ca53f5") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR027") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 488.95 275.59 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "8307dd70-841f-4c79-999d-2c6ca30fa16d") + (property "Reference" "#PWR024" + (at 488.95 281.94 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 488.95 280.67 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 488.95 275.59 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 488.95 275.59 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 488.95 275.59 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "dae416b1-9ba2-42d9-91e1-025df6ee73fb") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR024") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Connector:Conn_01x04_Pin") + (at 309.88 304.8 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "84844544-6284-4513-a704-d13a2f1a10cc") + (property "Reference" "J2" + (at 310.515 297.18 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "I2C" + (at 310.515 299.72 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Connector_PinSocket_2.00mm:PinSocket_1x04_P2.00mm_Horizontal" + (at 309.88 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 309.88 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x04, script generated" + (at 309.88 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "fd1cb93d-0afc-4cbf-b210-0a1ba51e185c") + ) + (pin "1" + (uuid "8dd61bdf-5118-4ca3-9ee8-532f6a354cc4") + ) + (pin "3" + (uuid "4f9e1aee-1a6c-409b-a04c-6a1a08f5e1b1") + ) + (pin "4" + (uuid "592bd747-3565-4a19-8ba9-5ccda4fc2003") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "J2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_1") + (lib_id "Switch:SW_Push") + (at 414.02 172.72 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "85eded6d-5390-4250-bf2c-ab89e7633093") + (property "Reference" "SW1" + (at 417.83 171.4499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_1" + (at 417.83 173.9899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 419.1 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 419.1 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 414.02 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "77e8d708-e1fa-424c-90d7-01f1e674097c") + ) + (pin "2" + (uuid "7fedc059-7172-4fdc-b39b-4c3b6ba21e04") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 377.19 298.45 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "85fd663d-df2b-482f-8a11-1f305eacbba6") + (property "Reference" "#PWR030" + (at 381 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 373.38 298.4499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 377.19 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 377.19 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 377.19 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "3b24a0c0-f3ca-44b5-86c6-48200418f7a8") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR030") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 439.42 204.47 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "8cdf80b3-e647-424b-905b-84f898b3b4b3") + (property "Reference" "D6" + (at 441.96 203.1999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 441.96 205.7399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 439.42 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 439.42 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 439.42 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 439.42 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 439.42 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "1de47538-2dc6-4ee9-ad08-ededf6b9de50") + ) + (pin "1" + (uuid "e166a3c2-f147-44e1-a743-5951a60ac73a") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D6") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:LED") + (at 354.33 209.55 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "9039def1-376f-421c-934d-a06897a0b9ba") + (property "Reference" "LED2" + (at 349.25 207.9625 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "" + (at 349.25 207.9625 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 354.33 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 354.33 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Light emitting diode" + (at 354.33 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 354.33 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "19c47bb4-5cc7-4a47-8567-083b48889960") + ) + (pin "2" + (uuid "c5f06e1d-8431-4745-9335-75936c7c6739") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "LED2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 443.23 299.72 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "919d37ec-1b60-46ed-a2fe-84d2cc2bda30") + (property "Reference" "#PWR08" + (at 449.58 299.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 447.04 299.7199 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 443.23 299.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 443.23 299.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 443.23 299.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "9d7a439a-5a89-4c84-8a43-5954a8ea0d87") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR08") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_4") + (lib_id "Switch:SW_Push") + (at 495.3 195.58 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "938462f3-548b-4714-96a6-3825a0108532") + (property "Reference" "SW8" + (at 499.11 194.3099 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_4" + (at 499.11 196.8499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 500.38 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 500.38 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 495.3 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "de61f74b-fe30-489b-8ed2-edc5e7ca8b3e") + ) + (pin "1" + (uuid "c1a6748e-f2af-4b63-abc9-bac060c2e88b") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW8") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 328.93 300.99 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "9409abc1-33bb-4f1e-b668-fe2a121607c7") + (property "Reference" "C3" + (at 328.93 293.37 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "100nF" + (at 328.93 295.91 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 325.12 301.9552 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 328.93 300.99 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 328.93 300.99 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "d33c626b-7acf-4f05-b297-a0f31db67cd2") + ) + (pin "1" + (uuid "c01d5314-027c-4a13-949e-7b33b2b1eb8c") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_2") + (lib_id "Switch:SW_Push") + (at 439.42 172.72 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "9a609295-cd96-4ed1-9d1b-bcc6e101f605") + (property "Reference" "SW2" + (at 443.23 171.4499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_2" + (at 443.23 173.9899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 444.5 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 444.5 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 439.42 172.72 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "aac49706-8070-4d80-88af-62bbe3ade79f") + ) + (pin "1" + (uuid "1983369c-0429-41f6-88f4-e77ff6ff8f92") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 330.2 238.76 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "9c7820e7-cbd8-4021-835a-34e204f8dccd") + (property "Reference" "C6" + (at 330.2 231.14 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "100nF" + (at 330.2 233.68 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 334.01 237.7948 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 330.2 238.76 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 330.2 238.76 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "06149a19-f13e-45b3-a5f1-2a8e60d47d48") + ) + (pin "2" + (uuid "67cc7a7e-4283-4af3-8cef-e0b7200bbea7") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C6") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 449.58 260.35 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "9f1f3d31-8359-4ac3-b206-215e89368aa7") + (property "Reference" "#PWR031" + (at 443.23 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 445.77 260.3499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 449.58 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 449.58 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 449.58 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "c3dee2f2-3ef6-476a-8f77-5154a7d54fc5") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR031") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 332.74 304.8 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "a0332e67-cfd9-4272-b085-9d07470acdeb") + (property "Reference" "#PWR011" + (at 328.93 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 336.55 304.7999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 332.74 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 332.74 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 332.74 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "efb92bfc-b474-4b3f-8368-402798aed1ac") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR011") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 504.19 335.28 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "a9a9db1b-1c91-407d-9551-57f61d27a41c") + (property "Reference" "#PWR02" + (at 504.19 341.63 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 504.19 340.36 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 504.19 335.28 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 504.19 335.28 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 504.19 335.28 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "147111af-d704-42af-8e2b-c80a6fb5af58") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR02") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 414.02 204.47 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "abcd81ba-9319-4f49-b420-9b8470e89d68") + (property "Reference" "D5" + (at 416.56 203.1999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 416.56 205.7399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 414.02 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 414.02 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 414.02 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 414.02 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 414.02 204.47 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "db5f4e07-834c-4ac8-b3a3-9e9cd9a6e7b1") + ) + (pin "1" + (uuid "d11b555b-6f9d-437c-b9d8-6d4c480a4cb2") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D5") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 326.39 238.76 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "ae5c71d1-46aa-46fb-89ed-72d23f1d1b16") + (property "Reference" "#PWR032" + (at 320.04 238.76 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 322.58 238.7599 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 326.39 238.76 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 326.39 238.76 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 326.39 238.76 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "a6215e23-377d-465c-aa2f-07b49fbdc371") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR032") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "pro_micro_rp2040:pro_micro_rp2040") + (at 411.48 309.88 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b12de0d5-802a-4ba9-94cb-5d07c9e65aa9") + (property "Reference" "Arduino_Pro_Micro1" + (at 412.115 289.56 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "" + (at 422.91 288.29 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Arduino:Arduino_Pro_Micro" + (at 422.91 288.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 422.91 288.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 411.48 309.88 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "GND" + (uuid "5a152e09-57df-49ab-90cf-548df68aa6ff") + ) + (pin "RST" + (uuid "af87f874-11f7-48d3-932f-3b93daeffae7") + ) + (pin "RAW" + (uuid "215ef21c-b56d-4607-a374-61fc7f364ed3") + ) + (pin "19" + (uuid "77ac6b12-6cdd-49f9-91b4-ae6619ec3f30") + ) + (pin "VCC" + (uuid "835e7817-3d28-4cce-8403-366e8a4454e8") + ) + (pin "6" + (uuid "275d7ad2-202c-41fb-9d9b-5962a37d93fd") + ) + (pin "18" + (uuid "345ef97c-9874-4c77-89cd-50d3b397383b") + ) + (pin "15" + (uuid "10cbb6cd-2110-4f3d-8b68-969acfe2f6e0") + ) + (pin "2" + (uuid "16e19a3c-e71f-4815-b87f-744457f5b39b") + ) + (pin "4" + (uuid "6b2e14a1-655c-41ee-b982-6015b405e948") + ) + (pin "8" + (uuid "35887afa-2966-4bb4-9688-8186985509b0") + ) + (pin "3" + (uuid "1ac1d6b9-1ca3-4851-8ba3-e80394f6f17c") + ) + (pin "5" + (uuid "c6978d2d-13d0-43a4-bc2f-c4f89566423a") + ) + (pin "10" + (uuid "466dd567-aab6-40fb-9a26-41e4a503522d") + ) + (pin "14" + (uuid "25eee181-29d1-401c-b263-255e01bfef88") + ) + (pin "7" + (uuid "ce37970f-bd96-4d45-9f2b-415afc5cc618") + ) + (pin "20" + (uuid "1429f508-0b5b-471b-b728-5c5f7f93ddd3") + ) + (pin "21" + (uuid "deddf729-97ee-4c00-8fe8-34848e4eb06c") + ) + (pin "9" + (uuid "238baad4-2973-404d-b6f4-e4b2f8e2bd9e") + ) + (pin "16" + (uuid "e3ab14e6-fc60-416e-992a-fadb898e29b0") + ) + (pin "0" + (uuid "3f254152-c23b-40e0-abd5-39be0158dd7f") + ) + (pin "1" + (uuid "02e234fc-982f-4824-9de8-e6d4f7128c09") + ) + (pin "GND" + (uuid "2ec16631-f73a-43c8-b8a7-15052368bde4") + ) + (pin "GND" + (uuid "bbab2f34-d093-4310-98c0-8e9e3e2fbf8b") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "Arduino_Pro_Micro1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 414.02 181.61 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b1b1dee6-7736-4d9f-bf4b-bac68865af35") + (property "Reference" "D1" + (at 416.56 180.3399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 416.56 182.8799 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 414.02 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 414.02 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 414.02 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 414.02 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 414.02 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "049434ec-823f-4dc4-a267-5833738f67c5") + ) + (pin "1" + (uuid "7b8fed37-41cc-4ac2-ad5e-6b7541babe6b") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 458.47 302.26 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "b20e7d30-51c8-4dac-9345-a91b027bbe48") + (property "Reference" "#PWR018" + (at 458.47 306.07 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 456.946 298.958 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 458.47 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 458.47 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 458.47 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "21940bd4-a608-45ab-bc09-445261b0f176") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR018") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 495.3 226.06 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b5d87b1c-2cd7-4d9c-9037-1db7a5a26116") + (property "Reference" "D12" + (at 497.84 224.7899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 497.84 227.3299 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 495.3 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 495.3 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 495.3 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 495.3 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 495.3 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "3635f541-6e75-402a-8751-ff9245177064") + ) + (pin "1" + (uuid "a39f667f-750e-4b96-a447-c9d14d268445") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D12") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_2") + (lib_id "Switch:SW_Push") + (at 439.42 195.58 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b86e1b37-9d88-4716-900a-3bf23b724174") + (property "Reference" "SW6" + (at 443.23 194.3099 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_2" + (at 443.23 196.8499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 444.5 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 444.5 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 439.42 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "62494dbb-a58e-45cf-9333-ff734d7d0cbf") + ) + (pin "1" + (uuid "43d5134e-686e-4086-bbed-565ae7f5de94") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW6") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:LED") + (at 363.22 209.55 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "bb879226-ef61-4133-b78d-bba8c3d2fcfa") + (property "Reference" "LED3" + (at 358.14 207.9625 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "" + (at 358.14 207.9625 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 363.22 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 363.22 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Light emitting diode" + (at 363.22 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 363.22 209.55 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "1c1f4324-09e6-4219-b1c6-e965c2014067") + ) + (pin "2" + (uuid "4c1f3c8a-e668-4f26-afb2-b14b8d62e7b6") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "LED3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 363.22 254 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "c0d59a71-ea01-4d27-bb89-20771144b71b") + (property "Reference" "#PWR028" + (at 363.22 250.19 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 363.22 259.08 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 363.22 254 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 363.22 254 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 363.22 254 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "5b444512-a113-4bc0-b4a5-c6fd9f8008a6") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR028") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "SW_Push_3") + (lib_id "Switch:SW_Push") + (at 467.36 195.58 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "c4c23e27-e82b-4978-8951-3a933cb1367e") + (property "Reference" "SW7" + (at 471.17 194.3099 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "SW_Push_3" + (at 471.17 196.8499 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB" + (at 472.44 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 472.44 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Push button switch, generic, two pins" + (at 467.36 195.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "25e5c240-e409-46b0-9b0b-0eadb1c3a4bd") + ) + (pin "2" + (uuid "e01c5a6d-8f54-49a1-8eae-6423dd463dbc") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "SW7") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 396.24 304.8 270) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "cc9ffb89-913b-434d-b12d-eaac661c6186") + (property "Reference" "#PWR07" + (at 389.89 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 392.43 304.7999 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 396.24 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 396.24 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 396.24 304.8 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "f9893f54-936e-41e9-82a5-18359d79777d") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR07") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 381 298.45 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "ce23ee16-bc1d-47d9-98f1-b7d43562ee09") + (property "Reference" "R5" + (at 381 292.1 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R_Optional" + (at 381 294.64 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 381 300.228 90) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 381 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Resistor" + (at 381 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "61c76c3a-8b37-42ae-9474-e8b4b25f49e7") + ) + (pin "1" + (uuid "a6059f4c-f914-49b5-8e7f-f910bd2db96b") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "R5") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:VCC") + (at 469.9 345.44 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "cf119439-defc-46c3-a4c5-255c149a20f7") + (property "Reference" "#PWR033" + (at 473.71 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "VCC" + (at 466.09 345.4399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 469.9 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 469.9 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"VCC\"" + (at 469.9 345.44 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "2a87e3ff-baaf-45a5-b7a2-c2330a01373b") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR033") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_name "Conn_01x05_Pin_1") + (lib_id "Connector:Conn_01x05_Pin") + (at 350.52 323.85 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "d5d5369b-1e65-415c-a77b-d4bf52a4ddb5") + (property "Reference" "J3" + (at 351.155 313.69 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "KY-040" + (at 351.155 316.23 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Horizontal" + (at 350.52 323.85 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 350.52 323.85 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Generic connector, single row, 01x05, script generated" + (at 350.52 323.85 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "5" + (uuid "96d0f550-44d1-489a-a010-c7f6bafa0757") + ) + (pin "2" + (uuid "18cb4aec-0aa4-49e3-96ac-7318c433020a") + ) + (pin "3" + (uuid "14f58d1a-b516-4117-acf5-7cee710213df") + ) + (pin "1" + (uuid "bb8a7b86-553c-4b6f-b3d9-28a2801634b3") + ) + (pin "4" + (uuid "d49cf06d-98d1-4467-a61d-346e4b446c50") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "J3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 494.03 265.43 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "dc2a8314-4931-484a-af01-9c0ca696962d") + (property "Reference" "#PWR015" + (at 500.38 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 499.11 265.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 494.03 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 494.03 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 494.03 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "5b635081-6da2-43e8-a1e5-74bb11845042") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR015") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 439.42 226.06 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "dd3116c1-8f99-49b8-821b-933064d93b1e") + (property "Reference" "D10" + (at 441.96 224.7899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 441.96 227.3299 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 439.42 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 439.42 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 439.42 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 439.42 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 439.42 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "7180a120-29f4-4985-a229-89caed402a1e") + ) + (pin "1" + (uuid "fe161a95-ce86-46bd-b1f8-366fa7acc666") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D10") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 495.3 181.61 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "e10a76a1-ebc7-483c-afe5-4c0806bbefe3") + (property "Reference" "D4" + (at 497.84 180.3399 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 497.84 182.8799 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 495.3 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 495.3 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 495.3 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 495.3 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 495.3 181.61 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "9d3985a4-fa70-4d87-a365-89fe3c733cc5") + ) + (pin "1" + (uuid "6a6817ca-9bf4-4529-8974-ad43cd3bd3a0") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Logic_LevelTranslator:TXS0108EPW") + (at 461.01 320.04 0) + (mirror y) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "eaa6b178-3128-4751-b418-ba189da12f0a") + (property "Reference" "U4" + (at 458.8667 337.82 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "TXS0108EPW" + (at 458.8667 340.36 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" + (at 461.01 339.09 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "www.ti.com/lit/ds/symlink/txs0108e.pdf" + (at 461.01 322.58 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Bidirectional level-shifting voltage translator, TSSOP-20" + (at 461.01 320.04 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "8" + (uuid "1c073d31-8ea7-46d1-bbe0-3712cb96d596") + ) + (pin "13" + (uuid "ed279b04-d5c0-4a3d-b064-146726205d35") + ) + (pin "5" + (uuid "7b80ac85-1b86-401f-afc1-a2e03df9478d") + ) + (pin "17" + (uuid "6c571ff8-17c0-4216-bf71-bb0ffb39464d") + ) + (pin "10" + (uuid "aa4f2d57-6bba-4f33-a19f-eee7a56fe3a8") + ) + (pin "1" + (uuid "6959abc0-a5bd-46bc-86e7-28786c47f2a4") + ) + (pin "16" + (uuid "393a2047-8f80-45cf-af7f-283d8ae5987b") + ) + (pin "19" + (uuid "73658a34-efeb-4f69-81d8-30047e27e247") + ) + (pin "6" + (uuid "ac885b95-9a9d-4bc7-bf05-b48a80bff31e") + ) + (pin "2" + (uuid "f1d0e273-f93b-40eb-ac7e-9e6946895377") + ) + (pin "11" + (uuid "9a6c56c6-be21-4221-b893-b35a1f57492f") + ) + (pin "14" + (uuid "4a2ffc0c-c2ae-43e3-b4e3-89a532d008da") + ) + (pin "4" + (uuid "401bc741-c78e-4aeb-8c21-57fb2872716a") + ) + (pin "9" + (uuid "5bbd6f50-8a5d-411b-9b13-cbe4169ccc00") + ) + (pin "12" + (uuid "212e0213-8db4-4c59-a55c-bfca06cde0f5") + ) + (pin "18" + (uuid "3f9ec149-e40f-4e7f-873f-94d6028ba367") + ) + (pin "20" + (uuid "31ba4e59-be74-4f25-ae7a-797ede0810b8") + ) + (pin "7" + (uuid "b11c64a3-1f50-4c4c-a4e4-18450bb46fdb") + ) + (pin "3" + (uuid "1c27f220-0c6e-457f-8249-6783069c571e") + ) + (pin "15" + (uuid "7dad4ec6-22aa-4a16-9667-c1481ddffed6") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "U4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Diode:1N4148") + (at 467.36 226.06 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "ec6cc9ff-ff43-4fac-bacb-e97b4ae38b58") + (property "Reference" "D11" + (at 469.9 224.7899 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "1N4148" + (at 469.9 227.3299 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" + (at 467.36 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/1N4148_1N4448.pdf" + (at 467.36 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "100V 0.15A standard switching diode, DO-35" + (at 467.36 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Device" "D" + (at 467.36 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Sim.Pins" "1=K 2=A" + (at 467.36 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "017b474f-e820-43be-a489-eae3838ff341") + ) + (pin "1" + (uuid "2f4ca9f2-bf3b-4389-a3ec-d3066b6eafa3") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "D11") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Interface_Expansion:PCF8574T") + (at 481.33 265.43 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "ee770619-16e2-4bb3-a9df-11ff745d17b5") + (property "Reference" "U2" + (at 463.55 263.2867 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "PCF8574DVR" + (at 466.09 263.2867 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm" + (at 481.33 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf" + (at 481.33 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "8-bit I/O Expander, I2C interface, interrupt output, fixed address bits 0b0100xxx, SOIC-16" + (at 481.33 265.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "faa387a6-fc17-4ac6-9ff3-9b6caa2fb4ce") + ) + (pin "4" + (uuid "1d63d4cd-2bc0-4750-b257-705f0a8800b4") + ) + (pin "12" + (uuid "f7e74741-6b36-4708-b377-8e24eebf2484") + ) + (pin "10" + (uuid "7b46e3f0-717a-4047-a65b-dc44717e8676") + ) + (pin "1" + (uuid "3ca5df97-8e2b-45d5-a44c-2c725c2b77f4") + ) + (pin "11" + (uuid "77c5e431-3495-4074-b103-c4012df382a8") + ) + (pin "8" + (uuid "9200d58a-8ef6-4cba-8472-2c4efa0955f8") + ) + (pin "9" + (uuid "2edcfb83-10cd-4d5f-9fcd-6126fbbea198") + ) + (pin "5" + (uuid "1ebe89de-916c-42c3-a00e-cafd15167c02") + ) + (pin "13" + (uuid "f5a39931-2838-4f39-8177-6909bfd2c773") + ) + (pin "16" + (uuid "ba4ee271-6f39-4915-943a-df6db5e2e7f5") + ) + (pin "14" + (uuid "8da7a19b-33c6-4c2f-a9a8-006d28f15c0f") + ) + (pin "6" + (uuid "4c3728a8-89e2-4a4d-aa57-44708dd876df") + ) + (pin "7" + (uuid "18863cae-65b6-4e5b-8c57-884c367e7fc3") + ) + (pin "3" + (uuid "2c5e0453-8c7e-4604-98de-c66625d47cb5") + ) + (pin "15" + (uuid "af681d59-d4a6-4c3d-b1bd-ac15a513fc52") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "U2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 363.22 205.74 180) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "ef07af7d-c7b9-41d2-a812-87b5943a56e6") + (property "Reference" "#PWR014" + (at 363.22 199.39 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 363.2199 201.93 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 363.22 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 363.22 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 363.22 205.74 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "944c795f-f653-4d74-bc60-19459cb00ca9") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR014") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 355.6 328.93 90) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "f726e601-cdfc-4340-8c76-69cf1179afa8") + (property "Reference" "#PWR019" + (at 361.95 328.93 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 359.41 328.9299 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "" + (at 355.6 328.93 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 355.6 328.93 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 355.6 328.93 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "3429869a-869b-48e2-aa4d-66f75146a030") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "#PWR019") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 434.34 302.26 0) + (mirror x) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "fb80b39f-52d6-4bf1-8ebe-feaa15f04310") + (property "Reference" "C1" + (at 438.15 303.5301 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 438.15 300.99 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_01005_0402Metric" + (at 435.3052 298.45 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 434.34 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 434.34 302.26 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "2" + (uuid "f71bfeba-e5ff-4401-bcdd-8dd7454f7150") + ) + (pin "1" + (uuid "acaaebd1-93fe-40ad-a92a-dc226abf3357") + ) + (instances + (project "SmartKeyAssistant" + (path "/e63e39d7-6ac0-4ffd-8aa3-1841a4541b55" + (reference "C1") + (unit 1) + ) + ) + ) + ) + (group "" + (uuid "08aa02bb-dfd3-4383-9159-091dafb063cd") + (members "078687b7-58b5-4389-a4db-2e68268c877e" "0ed4893b-41ca-44c8-b09b-992926f6e3e4") + ) + (group "" + (uuid "0961c201-47e3-48ea-b95e-e00ae8de8406") + (members "1e8d7a4d-b257-4963-8d1e-8b506b6dd00f" "529cb761-8519-4e06-929e-b6036937ffa3" + "9039def1-376f-421c-934d-a06897a0b9ba" + ) + ) + (group "" + (uuid "2a4ad4fd-580a-41dd-903f-85f3f3346f9a") + (members "108cdfd4-e4f3-41fb-8d96-da90cf3248eb" "938462f3-548b-4714-96a6-3825a0108532") + ) + (group "" + (uuid "384e4b01-bc39-404a-8a37-36f0b50766f7") + (members "6d844c1c-276c-4480-98e9-8d1e80e5ff58" "dd3116c1-8f99-49b8-821b-933064d93b1e") + ) + (group "" + (uuid "3fcbf817-b7f9-490e-a7d4-e88a0ac98391") + (members "1d8d13e4-c250-4fe4-a42e-ea5499a3cd2f" "c4c23e27-e82b-4978-8951-3a933cb1367e") + ) + (group "" + (uuid "40c066c1-9ed0-46f8-97d1-29d7d434f712") + (members "85eded6d-5390-4250-bf2c-ab89e7633093" "b1b1dee6-7736-4d9f-bf4b-bac68865af35") + ) + (group "" + (uuid "43cd6197-8787-4eed-9c34-55e8b5f24500") + (members "5a0cf240-c935-4b6c-8832-90ecf620f777" "9a609295-cd96-4ed1-9d1b-bcc6e101f605") + ) + (group "" + (uuid "4bcd1687-44d6-444e-bfec-c6e3a98afa55") + (members "0315611c-1ba3-4812-bb4a-59387342365d" "151bcf89-fdf5-497c-9b19-f45ae37d1d82" + "18710043-b11a-4a81-b7e8-3a06f9578cd1" "1a9c5bda-f41f-4b71-951d-1a7ca288eb81" + "1ccbbe27-6602-45de-be8d-673d030fdacd" "240292c8-4b33-46dc-93d0-3f252811348f" + "279fda96-c51d-4a51-b05c-c4d9152b4703" "2825b0b5-02f2-48f6-b07a-737b152d3a4a" + "2f224c03-c076-4265-ae6b-9863f817d969" "4e2d64d9-c7af-4f0d-9dd0-f889acc73c63" + "8171d768-1718-416a-b532-fac6378b421d" "8307dd70-841f-4c79-999d-2c6ca30fa16d" + "9f1f3d31-8359-4ac3-b206-215e89368aa7" "c4b27226-eeb5-4889-a92a-65fb32bbe037" + "dc2a8314-4931-484a-af01-9c0ca696962d" "ee770619-16e2-4bb3-a9df-11ff745d17b5" + ) + ) + (group "" + (uuid "5019e159-fab7-497f-bde7-2e868a6e79bf") + (members "565175c1-2594-46a6-a01b-08bc33ecb066" "abcd81ba-9319-4f49-b420-9b8470e89d68") + ) + (group "" + (uuid "58fd9f6b-e001-4114-bd9b-61932493a16c") + (members "02077e3b-c7e7-4807-8fe9-0259714a9dcf" "20f450ca-1524-4a69-baa9-5b5afbfaea2a") + ) + (group "" + (uuid "61680f1d-9bf9-4c66-9d05-a2b8236cc6c1") + (members "2cdd3180-c1ce-4224-b16d-dcac52bbfb9c" "ec6cc9ff-ff43-4fac-bacb-e97b4ae38b58") + ) + (group "" + (uuid "805ce2d7-98d0-46f3-803e-ab7cbce022dc") + (members "1254d03c-515a-4b76-a37b-cd0b0f1be72c" "37bf9847-15f1-425d-babd-bac74809aa43" + "37e8d8bf-4748-4413-888a-76c5ccae53fb" "3f7144a8-3838-47a8-81f9-72c563664eca" + "497e3d92-df80-4f50-859d-6ff9cf113407" "4c847976-36ad-4c92-a7f8-77d6a182bf2a" + "529b684e-b791-40f6-8db5-199b5661f43e" "5e8f4d72-da78-4056-aa83-83341ddd86d1" + "75394484-9599-4e68-b004-21eee5ee66a9" "969d7937-8e43-4483-be01-c05de87e99e0" + "9c7820e7-cbd8-4021-835a-34e204f8dccd" "ae5c71d1-46aa-46fb-89ed-72d23f1d1b16" + "c0d59a71-ea01-4d27-bb89-20771144b71b" "d8e710f4-a2e5-438c-a02b-6dacdbc7d160" + "e40449c9-bcbe-42af-b667-341e732d4c12" "e4f64ab0-205c-4858-b2f1-841addc26f9d" + ) + ) + (group "" + (uuid "87a3af9a-d801-4e1f-b959-6c9fbf8acb47") + (members "8cdf80b3-e647-424b-905b-84f898b3b4b3" "b86e1b37-9d88-4716-900a-3bf23b724174") + ) + (group "" + (uuid "a3ac633a-f275-4a13-bdf0-af577ffadaa4") + (members "47a0e8f0-4745-41c2-9b92-cc3924b470cf" "b5d87b1c-2cd7-4d9c-9037-1db7a5a26116") + ) + (group "" + (uuid "a9077ecf-b254-46cd-9fda-17426d653113") + (members "7909f3a6-1d99-4126-9824-294193c0bd27" "bb879226-ef61-4133-b78d-bba8c3d2fcfa" + "ef07af7d-c7b9-41d2-a812-87b5943a56e6" + ) + ) + (group "" + (uuid "c2d31bf2-9451-4aa6-88b3-f0758912fb33") + (members "07f62c87-a43c-4e21-9da0-d243f4fea3f8" "335ff5d7-4c6c-4fa2-bdc3-2a311d39d5f9" + "339df4e8-86d5-49bf-88b8-7fdd2eccd4f9" "37eb0aba-91e2-4ede-b86e-b8efd0ff814e" + "4bfb05ad-5dc4-4c26-9876-ed36b5b59911" "84844544-6284-4513-a704-d13a2f1a10cc" + "9409abc1-33bb-4f1e-b668-fe2a121607c7" "a0332e67-cfd9-4272-b085-9d07470acdeb" + ) + ) + (group "" + (uuid "dd7cbc9d-9039-4731-a01d-37a920c31e17") + (members "36fe8cea-3967-4d8b-9b23-38cec0d265ac" "e10a76a1-ebc7-483c-afe5-4c0806bbefe3") + ) + (group "" + (uuid "f2020fc1-e512-4d1a-b992-f188d7054532") + (members "236148f4-0e4d-4ce4-a8f1-e20f3d81048c" "24d8b0d3-58a4-454c-88fa-a799773f1940" + "568bdb4f-f18e-4c00-9099-9c5f3f8dd905" "902a87c8-705b-4e7f-a1c2-7bf1fbb1ae3e" + "af80f834-deb6-495b-adc3-0a62e0b845d9" "be0aa0ff-252b-4976-8cf7-32e84a237b5e" + "d5d5369b-1e65-415c-a77b-d4bf52a4ddb5" "ea6de597-93c2-4b5e-8bb3-578f1815e52d" + "f726e601-cdfc-4340-8c76-69cf1179afa8" + ) + ) + (sheet_instances + (path "/" + (page "1") + ) + ) + (embedded_fonts no) +) diff --git a/arduino-smart-key-assistant/Board Design/fp-lib-table b/arduino-smart-key-assistant/Board Design/fp-lib-table new file mode 100755 index 0000000..7daf901 --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/fp-lib-table @@ -0,0 +1,5 @@ +(fp_lib_table + (version 7) + (lib (name "Library") (type "KiCad") (uri "C:/Users/vadik/Downloads/kicad/pro_micro_rp2040/pro_micro_rp2040.pretty/Library.pretty") (options "") (descr "")) + (lib (name "Arduino") (type "KiCad") (uri "${KIPRJMOD}/Arduino.pretty") (options "") (descr "")) +) diff --git a/arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_mod b/arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_mod new file mode 100755 index 0000000..69253fe --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_mod @@ -0,0 +1,501 @@ +(footprint "pro_micro_rp2040" + (version 20241229) + (generator "pcbnew") + (generator_version "9.0") + (layer "F.Cu") + (property "Reference" "REF**" + (at 8.89 -6.46 0) + (unlocked yes) + (layer "F.SilkS") + (uuid "7ff3df6d-490c-49d7-9ab0-d6db096e2061") + (effects + (font + (size 1 1) + (thickness 0.1) + ) + ) + ) + (property "Value" "Pro Micro RP2040" + (at 9.03 -8.33 0) + (unlocked yes) + (layer "F.Fab") + (uuid "ccd3ee50-09bc-40d8-915c-8c9976e77d02") + (effects + (font + (size 0.8 0.8) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d7e84b4d-d45e-4981-a48b-f8980f43bffc") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "830873c7-14d4-4ae6-a987-afd07c1c4aca") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (attr through_hole) + (fp_line + (start 0 -33) + (end 0 -30) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "43c01c78-1725-4bbc-9ba9-70060235654e") + ) + (fp_line + (start 0 -33) + (end 3 -33) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "53b738a3-338c-48bd-bb83-d6da396c18f3") + ) + (fp_line + (start 0 -3) + (end 0 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "50c7cc68-cb06-43cb-bf53-055feea10751") + ) + (fp_line + (start 0 0) + (end 0 -3) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "5d5589a7-ab21-4792-a102-1a59135e6c5d") + ) + (fp_line + (start 0 0) + (end 3 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "cd05a05c-cd92-4918-9a2c-1c38c03f617b") + ) + (fp_line + (start 3 -33) + (end 0 -33) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "b16f19ee-abb7-4661-8ea0-312d39ff6447") + ) + (fp_line + (start 17.78 -33) + (end 14.78 -33) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "4054f24c-e0f1-4603-87d2-fd37e7613bd0") + ) + (fp_line + (start 17.78 -33) + (end 17.78 -30) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "3d02bac2-3f74-489b-bd70-6222bf63cef2") + ) + (fp_line + (start 17.78 0) + (end 14.78 0) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "6609cb3d-b5a2-4324-9018-fc6e894561f5") + ) + (fp_line + (start 17.78 0) + (end 17.78 -3) + (stroke + (width 0.1) + (type default) + ) + (layer "F.SilkS") + (uuid "4f1982f3-e9b0-4e53-ad96-ac024c262211") + ) + (fp_rect + (start 4.39 -27.25) + (end 13.39 -33.65) + (stroke + (width 0.1) + (type default) + ) + (fill no) + (layer "F.SilkS") + (uuid "69b83113-b667-48b1-9df9-418c05d8f6bd") + ) + (fp_rect + (start 0 0) + (end 17.78 -33) + (stroke + (width 0.1) + (type default) + ) + (fill no) + (layer "Dwgs.User") + (uuid "42eb9804-e501-46ad-ad2b-cc165f82e2a7") + ) + (pad "0" thru_hole circle + (at 1.25 -29.2) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "53a3f0c2-b613-4388-876e-eb6189b0f161") + ) + (pad "1" thru_hole circle + (at 1.25 -26.66) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "c4899585-bf3c-41a9-973a-ba77b0e0c43d") + ) + (pad "2" thru_hole circle + (at 1.25 -19.04) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "73f3fda3-5649-475e-a4a9-71dc281caa6d") + ) + (pad "3" thru_hole circle + (at 1.25 -16.5) + (size 1.8 1.8) + (drill 0.96) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "de850a42-87a7-45be-bb76-f3a85402da70") + ) + (pad "3V3" thru_hole circle + (at 16.49 -21.58) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "db375cc1-cab2-42b1-b96c-49525f19479e") + ) + (pad "4" thru_hole circle + (at 1.25 -13.96) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "ac63f005-6421-48a5-99e2-7bdeefcb0f86") + ) + (pad "5" thru_hole circle + (at 1.25 -11.42) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "fcf94665-a92b-45b2-adf8-325e0c45a5b1") + ) + (pad "5V" thru_hole circle + (at 16.49 -29.2) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "6dbac95b-756a-49fa-a9b3-656cd3a2e511") + ) + (pad "6" thru_hole circle + (at 1.25 -8.88) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "1296072a-cbb9-4bce-9eed-d4da8f40901f") + ) + (pad "7" thru_hole circle + (at 1.25 -6.34) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "91f66996-06bb-4392-aa6a-0947824a942a") + ) + (pad "8" thru_hole circle + (at 1.25 -3.8) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "5b0e3b0a-c36d-4eb1-bee4-0f80d63ffd14") + ) + (pad "9" thru_hole circle + (at 1.25 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "78f7a500-d70e-4cba-9502-484a51a049af") + ) + (pad "10" thru_hole circle + (at 1.3 -31.74) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "f12bbe0c-c496-4871-b3a7-9167dc354cf9") + ) + (pad "11" thru_hole circle + (at 16.49 -31.74) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "a5e89498-3e0c-4791-9388-2cccc2ba802c") + ) + (pad "12" thru_hole circle + (at 3.79 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "df66fddc-a554-4fb3-9fe4-0d08fc0f007c") + ) + (pad "13" thru_hole circle + (at 6.33 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "aab5265e-2460-4920-a223-77b7bc3f1557") + ) + (pad "14" thru_hole circle + (at 8.87 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "d89c4224-142d-4b0a-bdc6-84cbddd0f6fe") + ) + (pad "15" thru_hole circle + (at 11.41 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "7a25ff05-387e-44fa-a553-68fe09674bb8") + ) + (pad "16" thru_hole circle + (at 13.95 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "9371f3cf-522a-4a21-a490-c1f8bcd24c38") + ) + (pad "18" thru_hole circle + (at 12.01 -15.7) + (size 1.6 1.6) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "17f5b0ed-59e7-4809-9eeb-9cf6b2d4e57a") + ) + (pad "20" thru_hole circle + (at 16.49 -6.34) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "13b9993f-d9c1-4c91-9fcb-142cca22f7ca") + ) + (pad "21" thru_hole circle + (at 16.49 -1.26) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "c9d5ad52-5ca0-44f4-8e01-de7bdad83848") + ) + (pad "22" thru_hole circle + (at 16.49 -8.88) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "865246e7-10b9-433f-a39a-967983b72f1d") + ) + (pad "23" thru_hole circle + (at 16.49 -3.8) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "3244ba4d-8336-4cee-a573-cff5efbe7e29") + ) + (pad "24" thru_hole circle + (at 14 -15.7) + (size 1.6 1.6) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "edc8353b-c37b-490c-9387-34e107517ab0") + ) + (pad "25" thru_hole circle + (at 3.79 -3.8) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "c6ee6112-dd6d-4256-a725-df4ac3197d5e") + ) + (pad "26" thru_hole circle + (at 16.49 -11.42) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "3f380726-4605-4953-ad75-3b0f9c0f862f") + ) + (pad "27" thru_hole circle + (at 16.49 -13.96) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "028fa739-0669-41db-9672-def59288f7d7") + ) + (pad "28" thru_hole circle + (at 16.49 -16.5) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "e3453e8f-e5fd-4d62-8936-542b20c0573f") + ) + (pad "29" thru_hole circle + (at 16.49 -19.04) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "06083d4c-e391-42b8-b365-8f4596e6d9b2") + ) + (pad "BOOT" thru_hole circle + (at 4 -24.93) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "ae5f26ab-18c7-4eee-b533-1ce35fa20d6e") + ) + (pad "GND" thru_hole circle + (at 1.25 -24.12) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "8a8a63e5-1d59-4018-9096-7d929c0dc2e0") + ) + (pad "GND" thru_hole circle + (at 1.25 -21.58) + (size 1.8 1.8) + (drill 0.96) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "999a19fc-c40a-4657-8268-bbe4538acf30") + ) + (pad "GND" thru_hole circle + (at 16.49 -26.66) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "537b1795-2242-4a27-89a3-2ed5d9169201") + ) + (pad "RST" thru_hole circle + (at 16.49 -24.12) + (size 1.8 1.8) + (drill 0.95) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "9b2bf9e9-89d7-47e5-b6d5-2326c1b49766") + ) + (group "" + (uuid "f43efc7c-ca14-4a08-a6c9-0801332cf2f1") + (members "028fa739-0669-41db-9672-def59288f7d7" "06083d4c-e391-42b8-b365-8f4596e6d9b2" + "1296072a-cbb9-4bce-9eed-d4da8f40901f" "13b9993f-d9c1-4c91-9fcb-142cca22f7ca" + "3244ba4d-8336-4cee-a573-cff5efbe7e29" "3f380726-4605-4953-ad75-3b0f9c0f862f" + "537b1795-2242-4a27-89a3-2ed5d9169201" "53a3f0c2-b613-4388-876e-eb6189b0f161" + "5b0e3b0a-c36d-4eb1-bee4-0f80d63ffd14" "6dbac95b-756a-49fa-a9b3-656cd3a2e511" + "73f3fda3-5649-475e-a4a9-71dc281caa6d" "78f7a500-d70e-4cba-9502-484a51a049af" + "7a25ff05-387e-44fa-a553-68fe09674bb8" "865246e7-10b9-433f-a39a-967983b72f1d" + "8a8a63e5-1d59-4018-9096-7d929c0dc2e0" "91f66996-06bb-4392-aa6a-0947824a942a" + "9371f3cf-522a-4a21-a490-c1f8bcd24c38" "999a19fc-c40a-4657-8268-bbe4538acf30" + "9b2bf9e9-89d7-47e5-b6d5-2326c1b49766" "a5e89498-3e0c-4791-9388-2cccc2ba802c" + "aab5265e-2460-4920-a223-77b7bc3f1557" "ac63f005-6421-48a5-99e2-7bdeefcb0f86" + "c4899585-bf3c-41a9-973a-ba77b0e0c43d" "c6ee6112-dd6d-4256-a725-df4ac3197d5e" + "c9d5ad52-5ca0-44f4-8e01-de7bdad83848" "d89c4224-142d-4b0a-bdc6-84cbddd0f6fe" + "db375cc1-cab2-42b1-b96c-49525f19479e" "de850a42-87a7-45be-bb76-f3a85402da70" + "df66fddc-a554-4fb3-9fe4-0d08fc0f007c" "e3453e8f-e5fd-4d62-8936-542b20c0573f" + "f12bbe0c-c496-4871-b3a7-9167dc354cf9" "fcf94665-a92b-45b2-adf8-325e0c45a5b1" + ) + ) + (embedded_fonts no) + (model "pro_micro_rp2040.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + (model "MiniPico_RP2040 V1.1.step" + (hide yes) + (offset + (xyz -5.15 80.3 0.4) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 90) + ) + ) +) diff --git a/arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_sym b/arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_sym new file mode 100755 index 0000000..3e6e482 --- /dev/null +++ b/arduino-smart-key-assistant/Board Design/pro_micro_rp2040.kicad_sym @@ -0,0 +1,639 @@ +(kicad_symbol_lib + (version 20251024) + (generator "kicad_symbol_editor") + (generator_version "10.0") + (symbol "pro_micro_rp2040" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U" + (at 0 1.27 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "" + (at 11.43 21.59 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 11.43 21.59 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 11.43 21.59 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "pro_micro_rp2040_0_1" + (rectangle + (start -11.43 17.78) + (end 12.7 -17.78) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "pro_micro_rp2040_1_1" + (pin bidirectional line + (at -13.97 12.7 0) + (length 2.54) + (name "RX0/D0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 10.16 0) + (length 2.54) + (name "TX0/D1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 2.54 0) + (length 2.54) + (name "D2_(SDA)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 0 0) + (length 2.54) + (name "D3_(SCL)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 15.24 5.08 180) + (length 2.54) + (name "3V3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3V3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 -2.54 0) + (length 2.54) + (name "D4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 -5.08 0) + (length 2.54) + (name "D5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 15.24 12.7 180) + (length 2.54) + (name "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5V" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 -7.62 0) + (length 2.54) + (name "D6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 -10.16 0) + (length 2.54) + (name "D7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 -12.7 0) + (length 2.54) + (name "D8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 -15.24 0) + (length 2.54) + (name "D9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -13.97 15.24 0) + (length 2.54) + (name "D11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 -15.24 180) + (length 2.54) + (name "D10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 15.24 180) + (length 2.54) + (name "D12" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "11" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 -10.16 180) + (length 2.54) + (name "D14_(MISO)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "14" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 -7.62 180) + (length 2.54) + (name "D15/SCLK" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "15" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 -12.7 180) + (length 2.54) + (name "D16_(MOSI)" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "16" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 -5.08 180) + (length 2.54) + (name "A0/D18" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "18" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 -2.54 180) + (length 2.54) + (name "A1/D19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "19" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 0 180) + (length 2.54) + (name "A2/D20" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "20" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 2.54 180) + (length 2.54) + (name "A3/D21" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "21" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -5.08 -20.32 90) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "31" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -2.54 -20.32 90) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "32" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 0 -20.32 90) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "33" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 2.54 -20.32 90) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "34" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 5.08 -20.32 90) + (length 2.54) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "35" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at -13.97 7.62 0) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at -13.97 5.08 0) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 15.24 10.16 180) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin unspecified line + (at 15.24 7.62 180) + (length 2.54) + (name "RST" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "RST" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) +) diff --git a/arduino-smart-key-assistant/KeyAssistant/.gitignore b/arduino-smart-key-assistant/KeyAssistant/.gitignore new file mode 100755 index 0000000..5762142 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/arduino-smart-key-assistant/KeyAssistant/.vscode/extensions.json b/arduino-smart-key-assistant/KeyAssistant/.vscode/extensions.json new file mode 100755 index 0000000..0678aa0 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} diff --git a/arduino-smart-key-assistant/KeyAssistant/include/README b/arduino-smart-key-assistant/KeyAssistant/include/README new file mode 100755 index 0000000..630164d --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/include/README @@ -0,0 +1,37 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the convention is to give header files names that end with `.h'. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/arduino-smart-key-assistant/KeyAssistant/lib/README b/arduino-smart-key-assistant/KeyAssistant/lib/README new file mode 100755 index 0000000..8d3ee2a --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into the executable file. + +The source code of each library should be placed in a separate directory +("lib/your_library_name/[Code]"). + +For example, see the structure of the following example libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional. for custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +Example contents of `src/main.c` using Foo and Bar: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +The PlatformIO Library Dependency Finder will find automatically dependent +libraries by scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/arduino-smart-key-assistant/KeyAssistant/platformio.ini b/arduino-smart-key-assistant/KeyAssistant/platformio.ini new file mode 100755 index 0000000..6d1fdd3 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/platformio.ini @@ -0,0 +1,31 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:uno] +platform = atmelavr +;board = uno +board = sparkfun_promicro16 +framework = arduino +lib_deps = + # --- БИБЛИОТЕКИ ДЛЯ ТЕКУЩЕГО МАКРОПАДА (ЛЕГКОВЕСНЫЕ) --- + gyverlibs/GyverOLED@^1.6.4 ; Быстрая и экономная библиотека для монохромных OLED-дисплеев (SSD1306/SSH1106). Идеальна для Arduino Uno/Pro Micro. + gyverlibs/GyverEncoder@^4.10 ; Опрос вращения и кликов энкодера с аппаратной фильтрацией дребезга контактов. + gyverlibs/EncButton ; Твоя новая библиотека для удобного опроса 3 настроечных кнопок (держит клики, удержания, многократные нажатия). + + # --- ЭКОСИСТЕМА ADAFRUIT ДЛЯ СТАРЫХ И НОВЫХ МОНОХРОМНЫХ ЭКРАНОВ --- + adafruit/Adafruit GFX Library @ ^1.11.9 ; Базовое "графическое ядро" от Adafruit. Содержит логику рисования линий, кругов, шрифтов. Нужна как фундамент для других библиотек Adafruit. + adafruit/Adafruit SSD1306 @ ^2.5.9 ; Альтернативная (более тяжелая, чем у Гайвера) библиотека для OLED 128x32/128x64. Работает строго в связке с Adafruit GFX. + adafruit/Adafruit MCP4725 @ ^2.0.2 + + # --- БИБЛИОТЕКИ ДЛЯ ЦВЕТНЫХ ДИСПЛЕЕВ (НА БУДУЩЕЕ) --- + # (Строка adafruit/Adafruit GFX Library дублировалась, одну можно будет потом убрать) + adafruit/Adafruit ST7735 and ST7789 Library @ ^1.10.4 ; Библиотека для цветных TFT-экранчиков, работающих по SPI. Как раз подойдет для запуска дисплея с твоей фотографии. + olikraus/Ucglib @ ^1.5.2 ; Мощная графическая библиотека для цветных TFT-дисплеев через SPI. Главный плюс — красивые шрифты и высокая скорость отрисовки геометрических фигур. + diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard.cpp b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard.cpp new file mode 100755 index 0000000..d9fcbad --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard.cpp @@ -0,0 +1,214 @@ +/* + Keyboard.cpp + + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Keyboard.h" +#include "KeyboardLayout.h" + +#if defined(_USING_HID) + +//================================================================================ +//================================================================================ +// Keyboard + +static const uint8_t _hidReportDescriptor[] PROGMEM = { + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x73, // LOGICAL_MAXIMUM (115) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x73, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION +}; + +Keyboard_::Keyboard_(void) +{ + static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); + HID().AppendDescriptor(&node); + _asciimap = KeyboardLayout_en_US; +} + +void Keyboard_::begin(const uint8_t *layout) +{ + _asciimap = layout; +} + +void Keyboard_::end(void) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID().SendReport(2,keys,sizeof(KeyReport)); +} + +uint8_t USBPutChar(uint8_t c); + +// press() adds the specified key (printing, non-printing, or modifier) +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we +// call release(), releaseAll(), or otherwise clear the report and resend. +size_t Keyboard_::press(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers |= (1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + setWriteError(); + return 0; + } + if ((k & ALT_GR) == ALT_GR) { + _keyReport.modifiers |= 0x40; // AltGr = right Alt + k &= 0x3F; + } else if ((k & SHIFT) == SHIFT) { + _keyReport.modifiers |= 0x02; // the left shift modifier + k &= 0x7F; + } + if (k == ISO_REPLACEMENT) { + k = ISO_KEY; + } + } + + // Add k to the key report only if it's not already present + // and if there is an empty slot. + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i=0; i<6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + sendReport(&_keyReport); + return 1; +} + +// release() takes the specified key out of the persistent key report and +// sends the report. This tells the OS the key is no longer pressed and that +// it shouldn't be repeated any more. +size_t Keyboard_::release(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers &= ~(1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + return 0; + } + if ((k & ALT_GR) == ALT_GR) { + _keyReport.modifiers &= ~(0x40); // AltGr = right Alt + k &= 0x3F; + } else if ((k & SHIFT) == SHIFT) { + _keyReport.modifiers &= ~(0x02); // the left shift modifier + k &= 0x7F; + } + if (k == ISO_REPLACEMENT) { + k = ISO_KEY; + } + } + + // Test the key report to see if k is present. Clear it if it exists. + // Check all positions in case the key is present more than once (which it shouldn't be) + for (i=0; i<6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + sendReport(&_keyReport); + return 1; +} + +void Keyboard_::releaseAll(void) +{ + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); +} + +size_t Keyboard_::write(uint8_t c) +{ + uint8_t p = press(c); // Keydown + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 +} + +size_t Keyboard_::write(const uint8_t *buffer, size_t size) { + size_t n = 0; + while (size--) { + if (*buffer != '\r') { + if (write(*buffer)) { + n++; + } else { + break; + } + } + buffer++; + } + return n; +} + +Keyboard_ Keyboard; + +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard.h new file mode 100755 index 0000000..e110404 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard.h @@ -0,0 +1,151 @@ +/* + Keyboard.h + + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_h +#define KEYBOARD_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// Modifiers +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +// Misc keys +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_MENU 0xED // "Keyboard Application" in USB standard +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_PRINT_SCREEN 0xCE // Print Screen / SysRq +#define KEY_SCROLL_LOCK 0xCF +#define KEY_PAUSE 0xD0 // Pause / Break + +// Numeric keypad +#define KEY_NUM_LOCK 0xDB +#define KEY_KP_SLASH 0xDC +#define KEY_KP_ASTERISK 0xDD +#define KEY_KP_MINUS 0xDE +#define KEY_KP_PLUS 0xDF +#define KEY_KP_ENTER 0xE0 +#define KEY_KP_1 0xE1 +#define KEY_KP_2 0xE2 +#define KEY_KP_3 0xE3 +#define KEY_KP_4 0xE4 +#define KEY_KP_5 0xE5 +#define KEY_KP_6 0xE6 +#define KEY_KP_7 0xE7 +#define KEY_KP_8 0xE8 +#define KEY_KP_9 0xE9 +#define KEY_KP_0 0xEA +#define KEY_KP_DOT 0xEB + +// Function keys +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD +#define KEY_F13 0xF0 +#define KEY_F14 0xF1 +#define KEY_F15 0xF2 +#define KEY_F16 0xF3 +#define KEY_F17 0xF4 +#define KEY_F18 0xF5 +#define KEY_F19 0xF6 +#define KEY_F20 0xF7 +#define KEY_F21 0xF8 +#define KEY_F22 0xF9 +#define KEY_F23 0xFA +#define KEY_F24 0xFB + +// Supported keyboard layouts +extern const uint8_t KeyboardLayout_de_DE[]; +extern const uint8_t KeyboardLayout_en_US[]; +extern const uint8_t KeyboardLayout_es_ES[]; +extern const uint8_t KeyboardLayout_fr_FR[]; +extern const uint8_t KeyboardLayout_it_IT[]; +extern const uint8_t KeyboardLayout_pt_PT[]; +extern const uint8_t KeyboardLayout_sv_SE[]; +extern const uint8_t KeyboardLayout_da_DK[]; +extern const uint8_t KeyboardLayout_hu_HU[]; + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +class Keyboard_ : public Print +{ +private: + KeyReport _keyReport; + const uint8_t *_asciimap; + void sendReport(KeyReport* keys); +public: + Keyboard_(void); + void begin(const uint8_t *layout = KeyboardLayout_en_US); + void end(void); + size_t write(uint8_t k); + size_t write(const uint8_t *buffer, size_t size); + size_t press(uint8_t k); + size_t release(uint8_t k); + void releaseAll(void); +}; +extern Keyboard_ Keyboard; + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout.h b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout.h new file mode 100755 index 0000000..a01cdec --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout.h @@ -0,0 +1,67 @@ +/* + KeyboardLayout.h + + This file is not part of the public API. It is meant to be included + only in Keyboard.cpp and the keyboard layout files. Layout files map + ASCII character codes to keyboard scan codes (technically, to USB HID + Usage codes), possibly altered by the SHIFT or ALT_GR modifiers. + Non-ACSII characters (anything outside the 7-bit range NUL..DEL) are + not supported. + + == Creating your own layout == + + In order to create your own layout file, copy an existing layout that + is similar to yours, then modify it to use the correct keys. The + layout is an array in ASCII order. Each entry contains a scan code, + possibly modified by "|SHIFT" or "|ALT_GR", as in this excerpt from + the Italian layout: + + 0x35, // bslash + 0x30|ALT_GR, // ] + 0x2e|SHIFT, // ^ + + Do not change the control characters (those before scan code 0x2c, + corresponding to space). Do not attempt to grow the table past DEL. Do + not use both SHIFT and ALT_GR on the same character: this is not + supported. Unsupported characters should have 0x00 as scan code. + + For a keyboard with an ISO physical layout, use the scan codes below: + + +---+---+---+---+---+---+---+---+---+---+---+---+---+-------+ + |35 |1e |1f |20 |21 |22 |23 |24 |25 |26 |27 |2d |2e |BackSp | + +---+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----+ + | Tab |14 |1a |08 |15 |17 |1c |18 |0c |12 |13 |2f |30 | Ret | + +-----++--++--++--++--++--++--++--++--++--++--++--++--++ | + |CapsL |04 |16 |07 |09 |0a |0b |0d |0e |0f |33 |34 |31 | | + +----+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+----+ + |Shi.|32 |1d |1b |06 |19 |05 |11 |10 |36 |37 |38 | Shift | + +----+---++--+-+-+---+---+---+---+---+--++---+---++----+----+ + |Ctrl|Win |Alt | |AlGr|Win |Menu|Ctrl| + +----+----+----+------------------------+----+----+----+----+ + + The ANSI layout is identical except that key 0x31 is above (rather + than next to) Return, and there is not key 0x32. + + Give a unique name to the layout array, then declare it in Keyboard.h + with a line of the form: + + extern const uint8_t KeyboardLayout_xx_YY[]; + + == Encoding details == + + All scan codes are less than 0x80, which makes bit 7 available to + signal that a modifier (Shift or AltGr) is needed to generate the + character. With only one exception, keys that are used with modifiers + have scan codes that are less than 0x40. This makes bit 6 available + to signal whether the modifier is Shift or AltGr. The exception is + 0x64, the key next next to Left Shift on the ISO layout (and absent + from the ANSI layout). We handle it by replacing its value by 0x32 in + the layout arrays. +*/ + +#include + +#define SHIFT 0x80 +#define ALT_GR 0xc0 +#define ISO_KEY 0x64 +#define ISO_REPLACEMENT 0x32 diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_da_DK.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_da_DK.cpp new file mode 100755 index 0000000..b7f9895 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_da_DK.cpp @@ -0,0 +1,138 @@ +/* + * Danish keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_da_DK[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x1f|SHIFT, // " + 0x20|SHIFT, // # + 0x21|ALT_GR, // $ + 0x22|SHIFT, // % + 0x23|SHIFT, // & + 0x31, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x31|SHIFT, // * + 0x2d, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x24|SHIFT, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x37|SHIFT, // : + 0x36|SHIFT, // ; + 0x32, // < + 0x27|SHIFT, // = + 0x32|SHIFT, // > + 0x2d|SHIFT, // ? + 0x1f|ALT_GR, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x25|ALT_GR, // [ + 0x32|ALT_GR, // bslash + 0x26|ALT_GR, // ] + 0x00, // ^ not supported (requires dead key + space) + 0x38|SHIFT, // _ + 0x00, // ` not supported (requires dead key + space) + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x24|ALT_GR, // { + 0x2e|ALT_GR, // | + 0x27|ALT_GR, // } + 0x00, // ~ not supported (requires dead key + space) + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_de_DE.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_de_DE.cpp new file mode 100755 index 0000000..858d956 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_de_DE.cpp @@ -0,0 +1,138 @@ +/* + * German keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_de_DE[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x1f|SHIFT, // " + 0x31, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x23|SHIFT, // & + 0x31|SHIFT, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x30|SHIFT, // * + 0x30, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x24|SHIFT, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x37|SHIFT, // : + 0x36|SHIFT, // ; + 0x32, // < + 0x27|SHIFT, // = + 0x32|SHIFT, // > + 0x2d|SHIFT, // ? + 0x14|ALT_GR, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1d|SHIFT, // Y + 0x1c|SHIFT, // Z + 0x25|ALT_GR, // [ + 0x2d|ALT_GR, // bslash + 0x26|ALT_GR, // ] + 0x00, // ^ not supported (requires dead key + space) + 0x38|SHIFT, // _ + 0x00, // ` not supported (requires dead key + space) + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1d, // y + 0x1c, // z + 0x24|ALT_GR, // { + 0x32|ALT_GR, // | + 0x27|ALT_GR, // } + 0x30|ALT_GR, // ~ + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_en_US.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_en_US.cpp new file mode 100755 index 0000000..51d8dd5 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_en_US.cpp @@ -0,0 +1,138 @@ +/* + * Standard US keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_en_US[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // { + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_es_ES.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_es_ES.cpp new file mode 100755 index 0000000..93a89a9 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_es_ES.cpp @@ -0,0 +1,138 @@ +/* + * Spanish keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_es_ES[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x1f|SHIFT, // " + 0x20|ALT_GR, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x23|SHIFT, // & + 0x2d, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x30|SHIFT, // * + 0x30, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x24|SHIFT, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x37|SHIFT, // : + 0x36|SHIFT, // ; + 0x32, // < + 0x27|SHIFT, // = + 0x32|SHIFT, // > + 0x2d|SHIFT, // ? + 0x1f|ALT_GR, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f|ALT_GR, // [ + 0x35|ALT_GR, // bslash + 0x30|ALT_GR, // ] + 0x00, // ^ not supported (requires dead key + space) + 0x38|SHIFT, // _ + 0x00, // ` not supported (requires dead key + space) + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x34|ALT_GR, // { + 0x1e|ALT_GR, // | + 0x31|ALT_GR, // } + 0x00, // ~ not supported (requires dead key + space) + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_fr_FR.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_fr_FR.cpp new file mode 100755 index 0000000..80fa6ce --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_fr_FR.cpp @@ -0,0 +1,138 @@ +/* + * Traditional (not AFNOR) French keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_fr_FR[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x38, // ! + 0x20, // " + 0x20|ALT_GR, // # + 0x30, // $ + 0x34|SHIFT, // % + 0x1E, // & + 0x21, // ' + 0x22, // ( + 0x2d, // ) + 0x31, // * + 0x2e|SHIFT, // + + 0x10, // , + 0x23, // - + 0x36|SHIFT, // . + 0x37|SHIFT, // / + 0x27|SHIFT, // 0 + 0x1e|SHIFT, // 1 + 0x1f|SHIFT, // 2 + 0x20|SHIFT, // 3 + 0x21|SHIFT, // 4 + 0x22|SHIFT, // 5 + 0x23|SHIFT, // 6 + 0x24|SHIFT, // 7 + 0x25|SHIFT, // 8 + 0x26|SHIFT, // 9 + 0x37, // : + 0x36, // ; + 0x32, // < + 0x2e, // = + 0x32|SHIFT, // > + 0x10|SHIFT, // ? + 0x27|ALT_GR, // @ + 0x14|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x33|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x04|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1d|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1a|SHIFT, // Z + 0x22|ALT_GR, // [ + 0x25|ALT_GR, // bslash + 0x2d|ALT_GR, // ] + 0x26|ALT_GR, // ^ + 0x25, // _ + 0x24|ALT_GR, // ` + 0x14, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x33, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x04, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1d, // w + 0x1b, // x + 0x1c, // y + 0x1a, // z + 0x21|ALT_GR, // { + 0x23|ALT_GR, // | + 0x2e|ALT_GR, // } + 0x1f|ALT_GR, // ~ + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_hu_HU.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_hu_HU.cpp new file mode 100755 index 0000000..8d11e1e --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_hu_HU.cpp @@ -0,0 +1,144 @@ +/* + * Standard HU keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_hu_HU[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x21|SHIFT, // ! + 0x1f|SHIFT, // " + 0x1b|ALT_GR, // # + 0x33|ALT_GR, // $ + 0x22|SHIFT, // % + 0x06|ALT_GR, // & + 0x1e|SHIFT, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x38|ALT_GR, // * + 0x20|SHIFT, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x23|SHIFT, // / + + 0x35, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + + 0x37|SHIFT, // : + 0x36|ALT_GR, // ; + 0x32|ALT_GR, // < + 0x24|SHIFT, // = + 0x1d|ALT_GR, // > + 0x36|SHIFT, // ? + 0x19|ALT_GR, // @ + + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1d|SHIFT, // Y + 0x1c|SHIFT, // Z + + 0x09|ALT_GR, // [ + 0x14|ALT_GR, // bslash + 0x0a|ALT_GR, // ] + 0x20|ALT_GR, // ^ + 0x38|SHIFT, // _ + 0x24|ALT_GR, // ` + + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1d, // y + 0x1c, // z + + 0x05|ALT_GR, // { + 0x1a|ALT_GR, // | + 0x11|ALT_GR, // } + 0x1e|ALT_GR, // ~ + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_it_IT.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_it_IT.cpp new file mode 100755 index 0000000..b24588f --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_it_IT.cpp @@ -0,0 +1,138 @@ +/* + * Italian keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_it_IT[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x1f|SHIFT, // " + 0x34|ALT_GR, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x23|SHIFT, // & + 0x2d, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x30|SHIFT, // * + 0x30, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x24|SHIFT, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x37|SHIFT, // : + 0x36|SHIFT, // ; + 0x32, // < + 0x27|SHIFT, // = + 0x32|SHIFT, // > + 0x2d|SHIFT, // ? + 0x33|ALT_GR, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f|ALT_GR, // [ + 0x35, // bslash + 0x30|ALT_GR, // ] + 0x2e|SHIFT, // ^ + 0x38|SHIFT, // _ + 0x00, // ` not in this layout + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x00, // { not supported (requires AltGr+Shift) + 0x35|SHIFT, // | + 0x00, // } not supported (requires AltGr+Shift) + 0x00, // ~ not in this layout + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_pt_PT.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_pt_PT.cpp new file mode 100755 index 0000000..025e10f --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_pt_PT.cpp @@ -0,0 +1,138 @@ +/* + * Portuguese keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_pt_PT[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x1f|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x23|SHIFT, // & + 0x2d, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x2f|SHIFT, // * + 0x2f, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x24|SHIFT, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x37|SHIFT, // : + 0x36|SHIFT, // ; + 0x32, // < + 0x27|SHIFT, // = + 0x32|SHIFT, // > + 0x2d|SHIFT, // ? + 0x1f|ALT_GR, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x25|ALT_GR, // [ + 0x35, // bslash + 0x26|ALT_GR, // ] + 0x00, // ^ not supported (requires dead key + space) + 0x38|SHIFT, // _ + 0x00, // ` not supported (requires dead key + space) + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x24|ALT_GR, // { + 0x35|SHIFT, // | + 0x27|ALT_GR, // } + 0x00, // ~ not supported (requires dead key + space) + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_sv_SE.cpp b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_sv_SE.cpp new file mode 100755 index 0000000..eea0705 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/KeyboardLayout_sv_SE.cpp @@ -0,0 +1,138 @@ +/* + * Swedish keyboard layout. + */ + +#include "KeyboardLayout.h" + +extern const uint8_t KeyboardLayout_sv_SE[128] PROGMEM = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x1f|SHIFT, // " + 0x20|SHIFT, // # + 0x21|ALT_GR, // $ + 0x22|SHIFT, // % + 0x23|SHIFT, // & + 0x31, // ' + 0x25|SHIFT, // ( + 0x26|SHIFT, // ) + 0x31|SHIFT, // * + 0x2d, // + + 0x36, // , + 0x38, // - + 0x37, // . + 0x24|SHIFT, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x37|SHIFT, // : + 0x36|SHIFT, // ; + 0x32, // < + 0x27|SHIFT, // = + 0x32|SHIFT, // > + 0x2d|SHIFT, // ? + 0x1f|ALT_GR, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x25|ALT_GR, // [ + 0x2d|ALT_GR, // bslash + 0x26|ALT_GR, // ] + 0x00, // ^ not supported (requires dead key + space) + 0x38|SHIFT, // _ + 0x00, // ` not supported (requires dead key + space) + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x24|ALT_GR, // { + 0x32|ALT_GR, // | + 0x27|ALT_GR, // } + 0x00, // ~ not supported (requires dead key + space) + 0x00 // DEL +}; diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_da_DK.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_da_DK.h new file mode 100755 index 0000000..d1eba61 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_da_DK.h @@ -0,0 +1,44 @@ +/* + Keyboard_da_DK.h + + Copyright (c) 2021, Peter John + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_DA_DK_h +#define KEYBOARD_DA_DK_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// DA_DK keys +#define KEY_A_RING (136+0x2f) +#define KEY_SLASHED_O (136+0x34) +#define KEY_ASH (136+0x33) +#define KEY_UMLAUT (136+0x30) +#define KEY_ACUTE_ACC (136+0x2e) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_de_DE.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_de_DE.h new file mode 100755 index 0000000..f1e92b2 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_de_DE.h @@ -0,0 +1,45 @@ +/* + Keyboard_de_DE.h + + Copyright (c) 2022, Edgar Bonet + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_DE_DE_h +#define KEYBOARD_DE_DE_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// de_DE keys +#define KEY_CIRCUMFLEX (136+0x35) +#define KEY_ESZETT (136+0x2d) +#define KEY_ACUTE (136+0x2e) +#define KEY_U_UMLAUT (136+0x2f) +#define KEY_O_UMLAUT (136+0x33) +#define KEY_A_UMLAUT (136+0x34) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_es_ES.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_es_ES.h new file mode 100755 index 0000000..1d808ed --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_es_ES.h @@ -0,0 +1,45 @@ +/* + Keyboard_es_ES.h + + Copyright (c) 2022, Edgar Bonet + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_ES_ES_h +#define KEYBOARD_ES_ES_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// es_ES keys +#define KEY_MASCULINE_ORDINAL (136+0x35) +#define KEY_INVERTED_EXCLAMATION (136+0x2e) +#define KEY_GRAVE (136+0x2f) +#define KEY_N_TILDE (136+0x33) +#define KEY_ACUTE (136+0x34) +#define KEY_C_CEDILLA (136+0x31) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_fr_FR.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_fr_FR.h new file mode 100755 index 0000000..faef422 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_fr_FR.h @@ -0,0 +1,46 @@ +/* + Keyboard_fr_FR.h + + Copyright (c) 2022, Edgar Bonet + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_FR_FR_h +#define KEYBOARD_FR_FR_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// fr_FR keys +#define KEY_SUPERSCRIPT_TWO (136+0x35) +#define KEY_E_ACUTE (136+0x1f) +#define KEY_E_GRAVE (136+0x24) +#define KEY_C_CEDILLA (136+0x26) +#define KEY_A_GRAVE (136+0x27) +#define KEY_CIRCUMFLEX (136+0x2f) +#define KEY_U_GRAVE (136+0x34) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_hu_HU.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_hu_HU.h new file mode 100755 index 0000000..0d8cf44 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_hu_HU.h @@ -0,0 +1,52 @@ +/* + Keyboard_hu_HU.h + + Copyright (c) 2023, Barab(0x34)si Rich(0x34)rd + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_HU_HU_h +#define KEYBOARD_HU_HU_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// hu_HU keys +#define KEY_O_ACUTE (136+0x2e) +#define KEY_O_UMLAUT (136+0x27) +#define KEY_O_DOUBLE_ACUTE (136+0x2f) + +#define KEY_U_ACUTE (136+0x30) +#define KEY_U_UMLAUT (136+0x2d) +#define KEY_U_DOUBLE_ACUTE (136+0x31) + +#define KEY_A_ACUTE (136+0x34) + +#define KEY_E_ACUTE (136+0x33) + +#define KEY_I_ACUTE (136+0x32) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_it_IT.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_it_IT.h new file mode 100755 index 0000000..7d5e354 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_it_IT.h @@ -0,0 +1,44 @@ +/* + Keyboard_it_IT.h + + Copyright (c) 2022, Edgar Bonet + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_IT_IT_h +#define KEYBOARD_IT_IT_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// it_IT keys +#define KEY_I_GRAVE (136+0x2e) +#define KEY_E_GRAVE (136+0x2f) +#define KEY_O_GRAVE (136+0x33) +#define KEY_A_GRAVE (136+0x34) +#define KEY_U_GRAVE (136+0x31) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_pt_PT.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_pt_PT.h new file mode 100755 index 0000000..0d956c2 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_pt_PT.h @@ -0,0 +1,44 @@ +/* + Keyboard_pt_PT.h + + Copyright (c) 2022, Edgar Bonet + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_PT_PT_h +#define KEYBOARD_PT_PT_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// pt_PT keys +#define KEY_LEFT_GUILLEMET (136+0x2e) +#define KEY_ACUTE (136+0x30) +#define KEY_C_CEDILLA (136+0x33) +#define KEY_MASCULINE_ORDINAL (136+0x34) +#define KEY_TILDE (136+0x31) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_sv_SE.h b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_sv_SE.h new file mode 100755 index 0000000..7d1f42a --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Keyboard_sv_SE.h @@ -0,0 +1,44 @@ +/* + Keyboard_sv_SE.h + + Copyright (c) 2021, Peter John + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef KEYBOARD_SV_SE_h +#define KEYBOARD_SV_SE_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Keyboard + +// SV_SE keys +#define KEY_A_RING (136+0x2f) +#define KEY_A_UMLAUT (136+0x34) +#define KEY_O_UMLAUT (136+0x33) +#define KEY_UMLAUT (136+0x30) +#define KEY_ACUTE_ACC (136+0x2e) + +#endif +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.cpp b/arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.cpp new file mode 100755 index 0000000..79f4389 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.cpp @@ -0,0 +1,315 @@ +// Based on the work by DFRobot + +#include "LiquidCrystal_I2C.h" +#include +#if defined(ARDUINO) && ARDUINO >= 100 + +#include "Arduino.h" + +#define printIIC(args) Wire.write(args) +inline size_t LiquidCrystal_I2C::write(uint8_t value) { + send(value, Rs); + return 1; +} + +#else +#include "WProgram.h" + +#define printIIC(args) Wire.send(args) +inline void LiquidCrystal_I2C::write(uint8_t value) { + send(value, Rs); +} + +#endif +#include "Wire.h" + + + +// When the display powers up, it is configured as follows: +// +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that its in that state when a sketch starts (and the +// LiquidCrystal constructor is called). + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows) +{ + _Addr = lcd_Addr; + _cols = lcd_cols; + _rows = lcd_rows; + _backlightval = LCD_NOBACKLIGHT; +} + +void LiquidCrystal_I2C::init(){ + init_priv(); +} + +void LiquidCrystal_I2C::init_priv() +{ + Wire.begin(); + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + begin(_cols, _rows); +} + +void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { + if (lines > 1) { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != 0) && (lines == 1)) { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 + delay(50); + + // Now we pull both RS and R/W low to begin commands + expanderWrite(_backlightval); // reset expanderand turn backlight off (Bit 8 =1) + delay(1000); + + //put the LCD into 4 bit mode + // this is according to the hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + write4bits(0x03 << 4); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + write4bits(0x03 << 4); + delayMicroseconds(4500); // wait min 4.1ms + + // third go! + write4bits(0x03 << 4); + delayMicroseconds(150); + + // finally, set to 4-bit interface + write4bits(0x02 << 4); + + + // set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear it off + clear(); + + // Initialize to default text direction (for roman languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + + home(); + +} + +/********** high level commands, for the user! */ +void LiquidCrystal_I2C::clear(){ + command(LCD_CLEARDISPLAY);// clear display, set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal_I2C::home(){ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){ + int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; + if ( row > _numlines ) { + row = _numlines-1; // we count rows starting w/0 + } + command(LCD_SETDDRAMADDR | (col + row_offsets[row])); +} + +// Turn the display on/off (quickly) +void LiquidCrystal_I2C::noDisplay() { + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::display() { + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LiquidCrystal_I2C::noCursor() { + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::cursor() { + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turn on and off the blinking cursor +void LiquidCrystal_I2C::noBlink() { + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::blink() { + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LiquidCrystal_I2C::scrollDisplayLeft(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} +void LiquidCrystal_I2C::scrollDisplayRight(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LiquidCrystal_I2C::leftToRight(void) { + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LiquidCrystal_I2C::rightToLeft(void) { + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'right justify' text from the cursor +void LiquidCrystal_I2C::autoscroll(void) { + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LiquidCrystal_I2C::noAutoscroll(void) { + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Allows us to fill the first 8 CGRAM locations +// with custom characters +void LiquidCrystal_I2C::createChar(uint8_t location, uint8_t charmap[]) { + location &= 0x7; // we only have 8 locations 0-7 + command(LCD_SETCGRAMADDR | (location << 3)); + for (int i=0; i<8; i++) { + write(charmap[i]); + } +} + +// Turn the (optional) backlight off/on +void LiquidCrystal_I2C::noBacklight(void) { + _backlightval=LCD_NOBACKLIGHT; + expanderWrite(0); +} + +void LiquidCrystal_I2C::backlight(void) { + _backlightval=LCD_BACKLIGHT; + expanderWrite(0); +} + + + +/*********** mid level commands, for sending data/cmds */ + +inline void LiquidCrystal_I2C::command(uint8_t value) { + send(value, 0); +} + + +/************ low level data pushing commands **********/ + +// write either command or data +void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) { + uint8_t highnib=value&0xf0; + uint8_t lownib=(value<<4)&0xf0; + write4bits((highnib)|mode); + write4bits((lownib)|mode); +} + +void LiquidCrystal_I2C::write4bits(uint8_t value) { + expanderWrite(value); + pulseEnable(value); +} + +void LiquidCrystal_I2C::expanderWrite(uint8_t _data){ + Wire.beginTransmission(_Addr); + printIIC((int)(_data) | _backlightval); + Wire.endTransmission(); +} + +void LiquidCrystal_I2C::pulseEnable(uint8_t _data){ + expanderWrite(_data | En); // En high + delayMicroseconds(1); // enable pulse must be >450ns + + expanderWrite(_data & ~En); // En low + delayMicroseconds(50); // commands need > 37us to settle +} + + +// Alias functions + +void LiquidCrystal_I2C::cursor_on(){ + cursor(); +} + +void LiquidCrystal_I2C::cursor_off(){ + noCursor(); +} + +void LiquidCrystal_I2C::blink_on(){ + blink(); +} + +void LiquidCrystal_I2C::blink_off(){ + noBlink(); +} + +void LiquidCrystal_I2C::load_custom_character(uint8_t char_num, uint8_t *rows){ + createChar(char_num, rows); +} + +void LiquidCrystal_I2C::setBacklight(uint8_t new_val){ + if(new_val){ + backlight(); // turn backlight on + }else{ + noBacklight(); // turn backlight off + } +} + +void LiquidCrystal_I2C::printstr(const char c[]){ + //This function is not identical to the function used for "real" I2C displays + //it's here so the user sketch doesn't have to be changed + print(c); +} + + +// unsupported API functions +void LiquidCrystal_I2C::off(){} +void LiquidCrystal_I2C::on(){} +void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {} +uint8_t LiquidCrystal_I2C::status(){return 0;} +uint8_t LiquidCrystal_I2C::keypad (){return 0;} +uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;} +void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end){} +void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_row_end){} +void LiquidCrystal_I2C::setContrast(uint8_t new_val){} + + diff --git a/arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.h b/arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.h new file mode 100755 index 0000000..201be33 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/LiquidCrystal_I2C.h @@ -0,0 +1,126 @@ +//YWROBOT +#ifndef LiquidCrystal_I2C_h +#define LiquidCrystal_I2C_h + +#include +#include "Print.h" +#include + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +// flags for backlight control +#define LCD_BACKLIGHT 0x08 +#define LCD_NOBACKLIGHT 0x00 + +#define En B00000100 // Enable bit +#define Rw B00000010 // Read/Write bit +#define Rs B00000001 // Register select bit + +class LiquidCrystal_I2C : public Print { +public: + LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); + void clear(); + void home(); + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void printLeft(); + void printRight(); + void leftToRight(); + void rightToLeft(); + void shiftIncrement(); + void shiftDecrement(); + void noBacklight(); + void backlight(); + void autoscroll(); + void noAutoscroll(); + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); +#if defined(ARDUINO) && ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + void command(uint8_t); + void init(); + +////compatibility API function aliases +void blink_on(); // alias for blink() +void blink_off(); // alias for noBlink() +void cursor_on(); // alias for cursor() +void cursor_off(); // alias for noCursor() +void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() +void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() +void printstr(const char[]); + +////Unsupported API functions (not implemented in this library) +uint8_t status(); +void setContrast(uint8_t new_val); +uint8_t keypad(); +void setDelay(int,int); +void on(); +void off(); +uint8_t init_bargraph(uint8_t graphtype); +void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); +void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); + + +private: + void init_priv(); + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void expanderWrite(uint8_t); + void pulseEnable(uint8_t); + uint8_t _Addr; + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + uint8_t _numlines; + uint8_t _cols; + uint8_t _rows; + uint8_t _backlightval; +}; + +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Mouse.cpp b/arduino-smart-key-assistant/KeyAssistant/src/Mouse.cpp new file mode 100755 index 0000000..b2a2cd7 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Mouse.cpp @@ -0,0 +1,123 @@ +/* + Mouse.cpp + + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Mouse.h" + +#if defined(_USING_HID) + +static const uint8_t _hidReportDescriptor[] PROGMEM = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION +}; + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_(void) : _buttons(0) +{ + static HIDSubDescriptor node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); + HID().AppendDescriptor(&node); +} + +void Mouse_::begin(void) +{ +} + +void Mouse_::end(void) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + uint8_t m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID().SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + +Mouse_ Mouse; + +#endif diff --git a/arduino-smart-key-assistant/KeyAssistant/src/Mouse.h b/arduino-smart-key-assistant/KeyAssistant/src/Mouse.h new file mode 100755 index 0000000..2672b5c --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/Mouse.h @@ -0,0 +1,60 @@ +/* + Mouse.h + + Copyright (c) 2015, Arduino LLC + Original code (pre-library): Copyright (c) 2011, Peter Barrett + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef MOUSE_h +#define MOUSE_h + +#include "HID.h" + +#if !defined(_USING_HID) + +#warning "Using legacy HID core (non pluggable)" + +#else + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(void); + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default +}; +extern Mouse_ Mouse; + +#endif +#endif \ No newline at end of file diff --git a/arduino-smart-key-assistant/KeyAssistant/src/main copy.txt b/arduino-smart-key-assistant/KeyAssistant/src/main copy.txt new file mode 100755 index 0000000..9513de6 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/main copy.txt @@ -0,0 +1,196 @@ +#include +#include +#include +#include +#include +#include +#include + + + +// === НАСТРОЙКА ДЕБАГА === +#define DEBUG_MODE 1 // Поставь 0 (или закомментируй), чтобы ПОЛНОСТЬЮ отключить дебаг + +#if (DEBUG_MODE == 1) + // Если дебаг включен, макрос DEB_PRINT превращается в обычный Serial.println + #define DEB_PRINT(x) Serial.println(x) + #define DEB_INIT() \ + Serial.begin(9600); \ + while (!Serial && (millis() < 2000)); \ + Serial.println(F("=== ДЕБАГ АКТИВЕН ===")) + +#else + // Если дебаг выключен, макросы превращаются в ПУСТОТУ. + #define DEB_PRINT(x) + #define DEB_INIT() +#endif + + +#define PRIMARY_EEPROM_WRITE_MODE 0 // Поставь 0 (или закомментируй), чтобы ПОЛНОСТЬЮ отключить дебаг + +#if (PRIMARY_EEPROM_WRITE_MODE == 1) + // Если дебаг включен, макрос WRITE_TEST_PASSES() превращается в обычный Serial.println + #define WRITE_TEST_PASSES() fillEEPROMWithData() +#else + // Если дебаг выключен, макросы превращаются в ПУСТОТУ. + #define WRITE_TEST_PASSES() +#endif +// ======================== + +void updateDisplay(); +void fillEEPROMWithData(); +String readPassword(int idx); + +const int SLOT_SIZE = 50; + + +GyverOLED oled; +Encoder enc(9, 8, 7); +LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размер дисплея + +int counter = 1; +enum DeviceMode { MODE_INFO, MODE_WRITE, MODE_GAMEPAD }; +DeviceMode currentMode = MODE_INFO; +int currentSlot = 0; + +// Классический стабильный массив строк скрипта во Flash-памяти +const char pythonScript[] PROGMEM = +"import serial, sys, time\n" +"import serial.tools.list_ports\n" +"print('--- MACROPAD 20-SLOT CONFIGURATOR ---')\n" +"ports = list(serial.tools.list_ports.comports())\n" +"if not ports:\n" +" print('No COM ports found!'); sys.exit()\n" +"print('Available ports:')\n" +"for i, p in enumerate(ports): print(f'{i}: {p.device}')\n" +"idx = int(input('Select port index: '))\n" +"port = ports[idx].device\n" +"try:\n" +" ser = serial.Serial(port, 115200, timeout=1)\n" +" time.sleep(2)\n" +" slot = int(input('Enter slot number (1-20): '))\n" +" password = input('Enter new password: ')\n" +" cmd = f'SET:{slot-1}:{password}\\n'\n" +" ser.write(cmd.encode('utf-8'))\n" +" print('Password successfully saved to Macropad!')\n" +" ser.close()\n" +"except Exception as e:\n" +" print(f'Error: {e}')\n" +"input('\\nPress Enter to exit...')\n"; + +void setup() { + DEB_INIT(); // Инициализация порта (испарится, если DEBUG_MODE = 0) + + DEB_PRINT(F("Старт дисплея...")); + oled.init(); + oled.clear(); + + WRITE_TEST_PASSES(); + + enc.setType(TYPE2); + updateDisplay(); + + lcd.init(); // Инициализация lcd + lcd.backlight(); // Включаем подсветку + lcd.setCursor(0,0); // Устанавливаем курсор в начало 1 строки + lcd.print("Hello, world"); // Выводим текст + lcd.setCursor(0,1); // Устанавливаем курсор в начало 2 строки + lcd.print("www.robotchip.ru"); // Выводим текст +} + +void loop() { + enc.tick(); + + if (enc.isTurn()) { + DEB_PRINT(F("Поворот энкодера!")); + if (enc.isRight() && counter < 20) counter++; + if (enc.isLeft() && counter > 1) counter--; + + updateDisplay(); + } + + if (enc.isClick()) { + DEB_PRINT(F("Клик!")); + counter = 1; + updateDisplay(); + } + + +} + +void updateDisplaySinus() { + DEB_PRINT(F("Отрисовка синусоиды...")); + + oled.clear(); // Очищаем буфер + + // Если счетчик равен 0, деление сломает логику, приравняем к 1 + int frequency = counter; + //if (frequency == 0) frequency = 1; + + // Цикл идет по всей ширине экрана (128 пикселей) + for (int x = 0; x < 128; x++) { + + // Вычисляем Y по формуле: + // 16 — это центр экрана 128x32 по вертикали + // 12 — амплитуда (волна будет колебаться от 4 до 28 пикселя) + // frequency — управляет тем, сколько волн поместится на экране + float angle = (float)x / 10.0 * ((float)frequency / 1.0); + int y = 16 + 12 * sin(angle); + + // Проверяем, чтобы Y случайно не вышел за границы экрана (0..31) + if (y >= 0 && y < 32) { + oled.dot(x, y); // Рисуем точку синусоиды + } + } + + // Для наглядности выведем значение счетчика в углу мелким шрифтом + // oled.setScale(1); + // oled.setCursor(2, 0); + // oled.print(F("F: ")); + // oled.print(counter); + + oled.update(); // Выводим буфер на экран + DEB_PRINT(F(" [ОК] Синусоида выведена")); + +} + +void updateDisplay() { + DEB_PRINT(F("Обновление экрана...")); + oled.clear(); + oled.setScale(0); + oled.setCursor(0, 0); + oled.print("Slot :"); + oled.print(counter); + oled.setCursor(0, 1); + oled.print(readPassword(counter)); + DEB_PRINT(("Читаем пароль номер"+ String(counter)+ " " + readPassword(counter))); + oled.update(); +} + +void fillEEPROMWithData() { + DEB_PRINT(F("Начало записи памяти")); + String hotkeys[4] = {"SuperSecret123!", "WorkPass2026#", "QwErTy_9876", "My_Mega_Password"}; + for (int slot = 0; slot < 4; slot++) { + int addr = slot * SLOT_SIZE; String pass = hotkeys[slot]; + for (unsigned int i = 0; i < SLOT_SIZE - 1; i++) { EEPROM.update(addr + i, (i < pass.length()) ? pass[i] : '\0'); } + EEPROM.update(addr + SLOT_SIZE - 1, '\0'); + DEB_PRINT(("Записан пароль" + String(slot)+ " " + pass)); + } + for (int slot = 4; slot < 20; slot++) { + int addr = slot * SLOT_SIZE; String pass = "ArchPass_" + String(slot + 1); + for (unsigned int i = 0; i < SLOT_SIZE - 1; i++) { EEPROM.update(addr + i, (i < pass.length()) ? pass[i] : '\0'); } + EEPROM.update(addr + SLOT_SIZE - 1, '\0'); + DEB_PRINT(("Записан пароль" + String(slot)+ " " + pass)); + } +} + + +String readPassword(int idx) { + String p = ""; + for (int i = 0; i < SLOT_SIZE; i++) { + char c = EEPROM.read(idx * SLOT_SIZE + i); + if (c == '\0' || c == 255) break; + p += c; + } + return p; +} \ No newline at end of file diff --git a/arduino-smart-key-assistant/KeyAssistant/src/main.cpp b/arduino-smart-key-assistant/KeyAssistant/src/main.cpp new file mode 100755 index 0000000..342e51a --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/main.cpp @@ -0,0 +1,268 @@ +#define EB_DEB_TIME 30 + +#include +#include +#include +#include +#include +#include // Используем одну библиотеку для всего + +// === НАСТРОЙКА ДЕБАГА === +#define DEBUG_MODE 1 // Поставь 0 (или закомментируй), чтобы ПОЛНОСТЬЮ отключить дебаг + +#if (DEBUG_MODE == 1) + // Если дебаг включен, макрос DEB_PRINT превращается в обычный Serial.println + #define DEB_PRINT(x) Serial.println(x) + #define DEB_INIT() \ + Serial.begin(9600); \ + while (!Serial && (millis() < 2000)); \ + Serial.println(F("=== ДЕБАГ АКТИВЕН ===")) + +#else + // Если дебаг выключен, макросы превращаются в ПУСТОТУ. + #define DEB_PRINT(x) + #define DEB_INIT() +#endif + + +#define PRIMARY_EEPROM_WRITE_MODE 1 // Поставь 0 (или закомментируй), чтобы отключить запись тестовых паролей в память + +#if (PRIMARY_EEPROM_WRITE_MODE == 1) + // Если дебаг включен, макрос WRITE_TEST_PASSES() превращается в обычный fillEEPROMWithData() + #define WRITE_TEST_PASSES() fillEEPROMWithData() +#else + // Если дебаг выключен, макросы превращаются в ПУСТОТУ. + #define WRITE_TEST_PASSES() +#endif +// ======================== + + +static constexpr uint8_t ENCODER_CLK = 15; +static constexpr uint8_t ENCODER_DT = 14; +static constexpr uint8_t ENCODER_SW = 16; +static constexpr uint8_t MODE_BUTTON_PIN = 6; // Пин для кнопки изменения режима + +void updateDisplay(); +void updateDisplaySinus(); +void fillEEPROMWithData(); +void printPythonScript(); +void printPass(int idx); +String readPassword(int idx); + +const int SLOT_SIZE = 50; +const int HALF_SLOT_SIZE = 25; + +// Твой рабочий OLED 128x64 с буфером +GyverOLED oled; + +// Инициализируем энкодер с кнопкой через EncButton. Порядок пинов: CLK, DT, SW +EncButton enc(ENCODER_CLK, ENCODER_DT, ENCODER_SW); +EncButton modeButton(MODE_BUTTON_PIN); // Создаем объект для отдельной кнопки + +int counter = 1; +enum DeviceMode { MODE_INFO, MODE_WRITE, MODE_GAMEPAD }; +DeviceMode currentMode = MODE_INFO; +bool showPasswords = true; // Новый флаг для отображения паролей + +// Классический стабильный массив строк скрипта во Flash-памяти +const char pythonScript[] PROGMEM = +"import serial, sys, time\n" +"import serial.tools.list_ports\n" +"print('--- MACROPAD 20-SLOT CONFIGURATOR ---')\n" +"ports = list(serial.tools.list_ports.comports())\n" +"if not ports:\n" +" print('No COM ports found!'); sys.exit()\n" +"print('Available ports:')\n" +"for i, p in enumerate(ports): print(f'{i}: {p.device}')\n" +"idx = int(input('Select port index: '))\n" +"port = ports[idx].device\n" +"try:\n" +" ser = serial.Serial(port, 115200, timeout=1)\n" +" time.sleep(2)\n" +" slot = int(input('Enter slot number (1-20): '))\n" +" password = input('Enter new password: ')\n" +" cmd = f'SET:{slot-1}:{password}\\n'\n" +" ser.write(cmd.encode('utf-8'))\n" +" print('Password successfully saved to Macropad!')\n" +" ser.close()\n" +"except Exception as e:\n" +" print(f'Error: {e}')\n" +"input('\\nPress Enter to exit...')\n"; + +void setup() { + DEB_INIT(); // Инициализация порта (испарится, если DEBUG_MODE = 0) + + DEB_PRINT(F("Старт дисплея...")); + oled.init(); + oled.clear(); + + Keyboard.begin(); // Инициализация клавиатуры + + + + WRITE_TEST_PASSES(); + + // enc.setType(TYPE2); // Больше не нужно, EncButton сама отлично обрабатывает типы энкодеров + + // Вместо старого lcd.init() выводим приветствие на OLED + oled.setScale(1); // Мелкий шрифт, чтобы всё влезло на 128x64 + oled.setCursor(0, 0); // 1 строка + oled.print("Hello, world"); + oled.setCursor(0, 2); // 2 строка (у 128x64 шаг строки равен 2) + oled.print("www.robotchip.ru"); + oled.update(); // Выталкиваем буфер приветствия на экран + + delay(2000); // Даем пару секунд рассмотреть заставку, как на старом LCD + + updateDisplay(); // Переходим к рабочему экрану со слотами +} + +void loop() { + // Опрашиваем устройства + enc.tick(); + modeButton.tick(); + + // Проверка поворота энкодера + if (enc.isTurn()) { + DEB_PRINT(F("Поворот энкодера!")); + if (enc.isRight() && counter < 20) counter++; + if (enc.isLeft() && counter > 1) counter--; + + updateDisplay(); + } + + // Проверка клика по встроенной кнопке энкодера + if (enc.isClick()) { + DEB_PRINT(F("Клик!")); + printPass(counter-1); + updateDisplay(); + } + + // Обработка нажатия отдельной кнопки для изменения режима + if (modeButton.isClick()) { // Изменено с .click() на .isClick() для единообразия EncButton + DEB_PRINT(F("Кнопка режима была нажата!")); + currentMode = static_cast((currentMode + 1) % 3); // Переключаем режимы: MODE_INFO, MODE_WRITE, MODE_GAMEPAD + updateDisplay(); // Обновляем экран + } +} + +void updateDisplaySinus() { + DEB_PRINT(F("Отрисовка синусоиды...")); + + oled.clear(); // Очищаем буфер + + int frequency = counter; + + // Цикл идет по всей ширине экрана (128 пикселей) + for (int x = 0; x < 128; x++) { + // 32 — это центр экрана 128x64 по вертикали + // 20 — амплитуда + float angle = (float)x / 10.0 * ((float)frequency / 1.0); + int y = 32 + 20 * sin(angle); + + if (y >= 0 && y < 64) { + oled.dot(x, y); // Рисуем точку синусоиды + } + } + + oled.update(); // Выводим буфер на экран + DEB_PRINT(F(" [ОК] Синусоида выведена")); +} + +void updateDisplay() { + DEB_PRINT(F("Обновление экрана...")); + oled.clear(); + oled.setScale(2); // Используем масштаб 2, как было в твоем коде (в комментарии опечатка про 1) + oled.setCursor(0, 0); + oled.print("Slot :"); + oled.print(counter); + + switch (currentMode) { + case MODE_INFO: + oled.setCursor(0, 2); + if (showPasswords) { + oled.print(readPassword(counter-1)); + } else { + oled.print("******"); + } + break; + + case MODE_WRITE: + oled.setCursor(0, 2); + oled.print("Mode: WRITE"); + break; + + case MODE_GAMEPAD: + updateDisplaySinus(); + return; // Возвращаемся из функции, так как синусоида уже отрисована + break; + } + + DEB_PRINT(("Читаем пароль номер"+ String(counter)+ " " + readPassword(counter))); + oled.update(); +} + +void fillEEPROMWithData() { + DEB_PRINT(F("Начало записи памяти")); + String hotkeys[4][2] = {{"Main password", "SuperSecret123!"}, {"Second password", "WorkPass2026#" }, {"Third password", "P@ssw0rd!"},{"Fourth password", "My_Mega_Password"}}; + for (int slot = 0; slot < 4; slot++) { + int addr = slot * SLOT_SIZE; String name = hotkeys[slot][0]; String pass = hotkeys[slot][1]; + for (unsigned int i = 0; i < SLOT_SIZE - 1; i++) { + EEPROM.update(addr + i, (i < pass.length()) ? pass[i] : '\0'); + } + EEPROM.update(addr + SLOT_SIZE - 1, '\0'); + DEB_PRINT(("Записан пароль" + String(slot)+ " " + pass)); + } + for (int slot = 4; slot < 20; slot++) { + int addr = slot * SLOT_SIZE; String pass = "ANGELINA YA TEBYA LUBLU" + //+ String(slot + 1) + ; + for (unsigned int i = 0; i < SLOT_SIZE - 1; i++) { + EEPROM.update(addr + i, (i < pass.length()) ? pass[i] : '\0'); + } + EEPROM.update(addr + SLOT_SIZE - 1, '\0'); + DEB_PRINT(("Записан пароль" + String(slot)+ " " + pass)); + } +} + +String readPassword(int idx) { + String p = ""; + for (int i = 0; i < SLOT_SIZE; i++) { + char c = EEPROM.read(idx * SLOT_SIZE + i); + if (c == '\0' || c == 255) break; + p += c; + } + return p; +} + +void printPass(int idx) { + DEB_PRINT(F("Начинаем выплескивать пароль...")); + String pass = readPassword(idx); + Keyboard.print(pass); + DEB_PRINT(F("Пароль выплеснут!")); +} + + +void printPythonScript() { + DEB_PRINT(F("Начинаем выплескивать Python-скрипт...")); + + int i = 0; + while (true) { + // Читаем один символ прямо из Flash-памяти + char c = pgm_read_byte(&(pythonScript[i])); + + // Если дошли до конца строки (нулевой байт в Си-строках) — выходим + if (c == '\0') break; + + // Печатаем символ в ПК, как будто жмем кнопку на клавиатуре + Keyboard.write(c); + + i++; + + // Маленькая задержка между символами. + // Если ПК «захлебывается» и пропускает буквы, подними до 2-5 мс + delay(3); + } + + DEB_PRINT(F("Скрипт полностью напечатан!")); +} \ No newline at end of file diff --git a/arduino-smart-key-assistant/KeyAssistant/src/project.zip b/arduino-smart-key-assistant/KeyAssistant/src/project.zip new file mode 100755 index 0000000000000000000000000000000000000000..3bd02f19d797795d10965148c4a6831b5def343f GIT binary patch literal 11753 zcmd5?+ixS+c~_e>b%`2if%L5pXK6GdyX1(ZE-O*14Je6TD=V#3QG1bh7sQAhiDM0C z*qNcUgd)J}0PRB!*ezPbO%umxgCcMq;-+hN?bw@tVTAq>MS(uHuSI{~ch1~+*B*{>`bEUYeTv^c$btpGtgwAJ3=G@u^wtxy~C#%h&ve{CPx%Z^kxGXLPsSH*KeA>$dZ9=H*Po?Dj3)H-z6Y zJ)uB_V~^5#IkR))w_nmP{_FK)$U%QQ6D7@H);l)*R!0M~S4_KQ_1lKHddGAPt#d6C zk8GNM+Be&4?!fbPtGQ8GOHbG9JGy zG_#|7-l^mAlo!plI!5bw!^VP{_EE!dP2Eb*5vA3>?>lxh?iqGFq?R*nUzqKO5U}C9 zpdnmCA2&taRBmoP=l$gDpKewG0H&h~zDzqzw<6JWK{ zvJgXacf+~z=v?EDnp{lJt?u1y)n&)A3`U%VN79DI(yFM=;F{v!BTV2z#z|BU7PEO?SRa2!j#;SBcooTDQP z>0m`1>Xv6L%Na}enBS^zH+%~C74h1}_16-!WIP%w2!bV}#cyP+_>GJtku!bUGmmU= zvmCe_*f&mhT*LE>_MX`#CXk;cGredAqe?P%j~_sdk1ig;>7HEtIh^hhsS|uEF!UDO z^PlkY%Zs;JOoS+OcL559L+# z)Er?%3)1RxFitn>d(|_dUM!zi&qC1i`}ghX2o{=Yr>+Sr14}bd4^Tg*`~G2ZF(rds zwlMh%uit7R>JIysH4vVDf`IfLv8A_M2So@ApJLFm91m5A$Bc(9qvwk{f0-!!x+jd- z-qM*4r|YikxL9Q)T3)%R5T4^*NE?7DIhUqs%n}8FYp7@V{a!9F&N4#CMbi$9Bh${w zMMDh{R9Da}kYg_M^MT$vw#=gr4PYAo_e`71DOC?y1qx#0=FY9X=FY9n&09MR7XooP zc+ULlbLQ_pXMX=V^HdndfIt;0iyu%XL#}&@oW@z5GStPJ7vEF4k1`t);%67%6I88( zPblNRkB$Y^l(63ozF!cWFHyk(0>n=M_*76er?h$T*2UW*PJeg-2jtg_w>T*hePq^m z!2F36X?#<|wjb$&&ehUdjuWmdw=n58g>jLla;b`^N}j5X(k+A-+cybuE(}yLcAXF= zbbI2(9TcFXi%jUEAS^6iL6i6a8pC(dVsAK%mj{(Pt>RCVfk*~SRSz?d!vwk8?nA77GH!lr297b53w$O zDb}I1Ocj~rDhWI= zW1~ebBv~dQAZjk8Ac~{(uhAlw^05R|I$D;YyJ78+RV%yR@1h(W36GmRP0L2UPkv_^ zHiYqf7Z1&yT(TdG;HUwTJ1c-+YW|rf)tqya;mgz;gt>(vZD?fwV-C=InlD#OmyJNY*yC&+kKgT;ki|yD^%Kx4o~03G@;VYba-wbewMC8sk51= z4m})OhxjOhJ@qT7Rr-OKW41*xU#{fEHBm;Y{_b}LO>nwSPJ~gVI%t*Twzh9I>gYXg z*Q){vF6^)6EK@HM?HOt<$b>^#CtDasvg{o5j?sWcafkn@u$wKxC7JBqP-R)32FR#P zR*x_c6$m?Pbc4 zZWqeSGOBIGFyB-r$*1fYv8rwEN%G^6qr@-)d2MfZb24@m=o7H(H}~qhlhLEdorK<4 zlgQHg@V7*Gq%t-6I~^!;fT%M?+O#6X(npJY=qT4-&aa4UHqU!uz-H^+oE!5efErS@1WAvEjfskMRxCGJ__>9KIsj}k*ZQvKxH+5xP%33#p&1n^dxIYK#UzQ0 zlz1ulFYM?UQ>1?!(@s2xDF#aMNRb?QIDYx#c2`P zkbj&wc8&WBwi^Y`^!?H_!ydNN7&+D6H%L>jKRl0&{qMI*mCBU?VDB(XCFA1VmmXWhSTe=-1E!Dm!rr$ zI3c6M_FR?@QnHEuk399zbUlB~!7(IQNfbV0+CI!pS3?FM2vEku_% zQXDnWZfXp<1bP%;geawt1-XWHmSvAbyGq+08dAhH^tnf{b{;KntYV9^1 z`a+(VL&7WN>MAi{57~JS^GQNIGb*qrz(#DS0}oYH9eQ4^-5Bh>=35cY&%%uiNjelbG*fgY?PMCY+x2y^x6Ladke3pPDmHo2SxK5G z#Z%rIld`15q3rUT{^e9Q?#C|<{G^Nkrq@*JrGg@xg;Nv1049@n=sqnSCpyv3CRJs; zI3H(et}5=)k17wsEIfvlEFh%DnW7Pe$hb;1e(ynHJ+W?yMA1s155-n2`3Ov6p|Zne zhq!8SDxk7e$w&SWu1g|Yvstm*jLgTot;zP|=@&C#tU^{D)HlWy$`SRH*`Fn&I_8@! zr2_cUa(>4dtZX@bxYFF}%4-|zv7X5;ki8y5zaW0Hl zo6`KGW=hnsmW)*jrQ$0z%sJhu_}72`$?yH)rKu_Un|!C@cX6kpZR$s^-qqgl9Gfy; z_QY^K{Ah#BQZCTD-p7xcE+v|p?bw4ZqC<4`W5dnzw9z(wInCEY0f}DDDj)t| z$W|GVtvr7v6660?w%JkHN=yGwWSbk2ZGjz^SN0rx?evEYhdL@lnSs zFU}4duv{u@bJ1Yrc&dq#6BMGXSvsOnYRe0ygbPXbG#ra0UA|l?YYP#V&_HAOiY!jL zDdw_frS)YUytvTq#+;=z2*CMxOa}%V*ug7HBArq3Fz#ei%%cXf`nQ~=L`3?EfB)X0IW<-`nOH$=k zg$*EEM0UbTmo=I)wUWM9-vkzfVc7&fk)86Ay%86j) z5J)W0iA0DpV%zB9hcjFOG7Z^GWw={>`@`AK|MPdIrs!{SxA-!;Maw*Jbr;xlPxuva zhprBbO&%QJ+w(K8;84zpuKKo}mZ!z{hL3PD*YIW{Dj9&+`o7bpp8#~aXoS534pa}Y z8*S5-VRg;dtEO*_3f$_=@a5sT)489%3Bl-Z=f-dR<{x}5zUZ91SWFk4!_VVK^dwu+ z#I@&P^kffBw~xcm<3}IjF}{mDjF+?~b=cwO@uUAnH=gXbhcT1NkhR0l<41+UknMMF U{MI*U`s?`bKk)r;0GOKk9{~E2_5c6? literal 0 HcmV?d00001 diff --git a/arduino-smart-key-assistant/KeyAssistant/src/sketch.txt b/arduino-smart-key-assistant/KeyAssistant/src/sketch.txt new file mode 100755 index 0000000..972ca76 --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/src/sketch.txt @@ -0,0 +1,278 @@ +#include +#include +#include +#include +#include +#include + +// 1. ОБЪЯВЛЯЕМ ПРОТОТИПЫ ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРА +void updateDisplay(); +void fillEEPROMWithData(); +void handleGamepadMode(); +void handlePasswordModes(); +void checkIncomingSerial(); +void checkModeButton(); +void sendPassword(int idx); +String readPassword(int idx); + +// Инициализация дисплея +LiquidCrystal_I2C lcd(0x27, 16, 2); + +const int SLOT_SIZE = 50; + +// ПИНЫ +const int JOY_Y_PIN = A1; +const int JOY_X_PIN = A2; +const int JOY_SW_PIN = 9; +const int BTN_A = 4; +const int BTN_B = 5; +const int BTN_X = 6; +const int BTN_Y = 7; +const int BTN_MODE = 8; + +enum DeviceMode { MODE_INFO, MODE_WRITE, MODE_GAMEPAD }; +DeviceMode currentMode = MODE_INFO; +int currentSlot = 0; + +// Переменные логики +bool joyYToggled = false; +bool lastModeBtnState = HIGH; +//bool lastA = HIGH, lastB = HIGH, lastX = HIGH, lastY = HIGH; + +unsigned long joySwPressedTime = 0; +bool isSwPressed = false; + + + +void setup() { + Serial.begin(115200); + Keyboard.begin(); + Mouse.begin(); + lcd.init(); lcd.backlight(); + + pinMode(JOY_SW_PIN, INPUT_PULLUP); + pinMode(BTN_A, INPUT_PULLUP); + pinMode(BTN_B, INPUT_PULLUP); + pinMode(BTN_X, INPUT_PULLUP); + pinMode(BTN_Y, INPUT_PULLUP); + pinMode(BTN_MODE, INPUT_PULLUP); + + // Раскомментируй строчку ниже ОДИН РАЗ, если нужно забить память тест-паролями + // fillEEPROMWithData(); + + updateDisplay(); +} + +void loop() { + checkModeButton(); + + if (currentMode == MODE_GAMEPAD) { + handleGamepadMode(); + } else { + handlePasswordModes(); + } + + checkIncomingSerial(); +} + +// 2. РЕАЛИЗАЦИЯ ФУНКЦИЙ + +void checkModeButton() { + bool state = digitalRead(BTN_MODE); + if (state == LOW && lastModeBtnState == HIGH) { + delay(50); + if (digitalRead(BTN_MODE) == LOW) { + currentMode = (DeviceMode)((currentMode + 1) % 3); + updateDisplay(); + while(digitalRead(BTN_MODE) == LOW); + } + } + lastModeBtnState = state; +} + +void handlePasswordModes() { + int yVal = analogRead(JOY_Y_PIN); + bool swVal = digitalRead(JOY_SW_PIN); + + if (!joyYToggled) { + if (yVal < 200) { currentSlot = (currentSlot == 19) ? 0 : currentSlot + 1; joyYToggled = true; updateDisplay(); } + else if (yVal > 800) { currentSlot = (currentSlot == 0) ? 19 : currentSlot - 1; joyYToggled = true; updateDisplay(); } + } + if (yVal >= 400 && yVal <= 600) joyYToggled = false; + + if (swVal == LOW) { + if (!isSwPressed) { + joySwPressedTime = millis(); + isSwPressed = true; + } + if (isSwPressed && (millis() - joySwPressedTime > 2000)) { + lcd.clear(); lcd.print("Dumping script.."); + //Keyboard.print(pythonScript); + int len = strlen_P(pythonScript); + for (int i = 0; i < len; i++) { + char c = pgm_read_byte_near(pythonScript + i); + Keyboard.print(c); + + delay(1); + } + isSwPressed = false; + updateDisplay(); + } + } else { + if (isSwPressed) { + if (millis() - joySwPressedTime > 50) { + if (currentMode == MODE_WRITE) { + sendPassword(currentSlot); + } + } + isSwPressed = false; + } + } + static bool lastA = HIGH, lastB = HIGH, lastX = HIGH, lastY = HIGH; + + if (digitalRead(BTN_A) == LOW && lastA == HIGH) { delay(50); if(digitalRead(BTN_A)==LOW) sendPassword(0); } + if (digitalRead(BTN_B) == LOW && lastB == HIGH) { delay(50); if(digitalRead(BTN_B)==LOW) sendPassword(1); } + if (digitalRead(BTN_X) == LOW && lastX == HIGH) { delay(50); if(digitalRead(BTN_X)==LOW) sendPassword(2); } + if (digitalRead(BTN_Y) == LOW && lastY == HIGH) { delay(50); if(digitalRead(BTN_Y)==LOW) sendPassword(3); } + + lastA = digitalRead(BTN_A); lastB = digitalRead(BTN_B); + lastX = digitalRead(BTN_X); lastY = digitalRead(BTN_Y); +} + +void handleGamepadMode() { + int xVal = analogRead(JOY_X_PIN); + int yVal = analogRead(JOY_Y_PIN); + bool swVal = digitalRead(JOY_SW_PIN); + + // 1. ДВИЖЕНИЕ МЫШИ + // Считаем отклонение от центра (0-1023, центр ~512) + int deltaX = xVal - 512; + int deltaY = yVal - 512; + + // Если вышли за пределы мертвой зоны в 100 единиц + if (abs(deltaX) > 100 || abs(deltaY) > 100) { + // Масштабируем скорость (делим на 50, как у тебя, или подбираем экспериментально) + int mouseX = deltaX / 50; + // Инвертируем Y, если джойстик при отклонении "вперед" должен двигать курсор "вверх" + int mouseY = (deltaY / 50); + + // Ограничиваем значения в безопасный диапазон [-128, 127] + mouseX = constrain(mouseX, -127, 127); + mouseY = constrain(mouseY, -127, 127); + + // Двигаем курсор! + Mouse.move(mouseX, mouseY, 0); + } + + // 2. КЛИК КНОПКИ ДЖОЙСТИКА (Левая Кнопка Мыши) + static bool lastSwVal = HIGH; + if (swVal == LOW && lastSwVal == HIGH) { + delay(50); // Дебаунс + if (digitalRead(JOY_SW_PIN) == LOW) { + // Имитируем полноценный клик (нажал и тут же отпустил) + Mouse.click(MOUSE_LEFT); + + // Альтернатива, если нуженドラッグ (зажатие): + // Mouse.press(MOUSE_LEFT); -> а при отпускании кнопки вызывать Mouse.release(MOUSE_LEFT); + } + } + lastSwVal = swVal; + + // 3. КЛАВИАТУРНЫЙ БЛОК (остается без изменений) + static bool lastA = HIGH, lastB = HIGH, lastX = HIGH, lastY = HIGH; + + if (digitalRead(BTN_A) == LOW && lastA == HIGH) { delay(50); if(digitalRead(BTN_A)==LOW) Serial.println("KEY: TAB"); Keyboard.write(KEY_TAB); } + if (digitalRead(BTN_B) == LOW && lastB == HIGH) { delay(50); if(digitalRead(BTN_B)==LOW) Serial.println("KEY: SPACE"); Keyboard.write(' '); } + if (digitalRead(BTN_X) == LOW && lastX == HIGH) { delay(50); if(digitalRead(BTN_X)==LOW) Serial.println("KEY: ENTER"); Keyboard.write(KEY_RETURN); } + if (digitalRead(BTN_Y) == LOW && lastY == HIGH) { delay(50); if(digitalRead(BTN_Y)==LOW) Serial.println("KEY: ESC"); Keyboard.write(KEY_ESC); } + + lastA = digitalRead(BTN_A); lastB = digitalRead(BTN_B); + lastX = digitalRead(BTN_X); lastY = digitalRead(BTN_Y); + + //if (digitalRead(BTN_A) == LOW) { Serial.println("KEY: TAB"); Keyboard.write(KEY_TAB); } + //if (digitalRead(BTN_B) == LOW) { Serial.println("KEY: SPACE"); Keyboard.write(' '); } + //if (digitalRead(BTN_X) == LOW) { Serial.println("KEY: ENTER"); Keyboard.write(KEY_RETURN); } + //if (digitalRead(BTN_Y) == LOW) { Serial.println("KEY: ESC"); Keyboard.write(KEY_ESC); } + + delay(10); // Задержку лучше уменьшить со 100 до 10-20 мс, чтобы мышь двигалась плавно, без рывков +} + +void sendPassword(int idx) { + String pass = readPassword(idx); + if (pass == "") pass = "EmptySlot" + String(idx + 1); + + Keyboard.print(pass); + + if (currentMode == MODE_WRITE) { + lcd.setCursor(0, 1); + lcd.print("Typed Slot: "); lcd.print(idx + 1); lcd.print(" "); + delay(1200); + updateDisplay(); + } +} + +String readPassword(int idx) { + String p = ""; + for (int i = 0; i < SLOT_SIZE; i++) { + char c = EEPROM.read(idx * SLOT_SIZE + i); + if (c == '\0' || c == 255) break; + p += c; + } + return p; +} + +void checkIncomingSerial() { + if (Serial.available() > 0) { + String input = Serial.readStringUntil('\n'); + input.trim(); + if (input.startsWith("SET:")) { + int firstColon = input.indexOf(':'); + int secondColon = input.indexOf(':', firstColon + 1); + if (firstColon != -1 && secondColon != -1) { + int slotIndex = input.substring(firstColon + 1, secondColon).toInt(); + String newPass = input.substring(secondColon + 1); + if (slotIndex >= 0 && slotIndex <= 19 && newPass.length() < SLOT_SIZE) { + int startAddress = slotIndex * SLOT_SIZE; + int len = newPass.length(); + for (int i = 0; i < SLOT_SIZE - 1; i++) { + if (i < len) EEPROM.update(startAddress + i, newPass[i]); + else EEPROM.update(startAddress + i, '\0'); + } + EEPROM.update(startAddress + SLOT_SIZE - 1, '\0'); + lcd.clear(); lcd.print("SAVED TO SLOT "); lcd.print(slotIndex + 1); + delay(1000); updateDisplay(); + } + } + } + } +} + +void updateDisplay() { + lcd.clear(); + lcd.setCursor(0, 0); + + switch(currentMode) { + case MODE_INFO: + lcd.print("MODE: [INFO]"); + lcd.setCursor(0, 1); + { + String pass = readPassword(currentSlot); + if (pass == "") pass = "Empty " + String(currentSlot + 1); + lcd.print(currentSlot + 1); lcd.print(": "); lcd.print(pass.substring(0, 12)); + } + break; + + case MODE_WRITE: + lcd.print("MODE: [WRITE]"); + lcd.setCursor(0, 1); + lcd.print("Select Slot: "); lcd.print(currentSlot + 1); + break; + + case MODE_GAMEPAD: + lcd.print("MODE: [GAMEPAD]"); + lcd.setCursor(0, 1); + lcd.print("Joy=Mouse 4B=HID"); + break; + } +} + diff --git a/arduino-smart-key-assistant/KeyAssistant/test/README b/arduino-smart-key-assistant/KeyAssistant/test/README new file mode 100755 index 0000000..b0416ad --- /dev/null +++ b/arduino-smart-key-assistant/KeyAssistant/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Test Runner and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html