From 8b2aea8994136ffd43f52c42dd9350264e2c01ca Mon Sep 17 00:00:00 2001 From: aquazx20 Date: Tue, 4 Apr 2023 19:47:28 -0600 Subject: [PATCH] Improved keyboard pin assignment, added connection diagram and expanded documentation. --- Connection Diagram_UI.png | Bin 0 -> 25629 bytes DisplayESP32.ino | 22 +++++++++--------- Readme.md | 46 ++++++++++---------------------------- 3 files changed, 23 insertions(+), 45 deletions(-) create mode 100644 Connection Diagram_UI.png diff --git a/Connection Diagram_UI.png b/Connection Diagram_UI.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee84a09539c3bdcce9c774092c0e4d4c9fe5bf7 GIT binary patch literal 25629 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�Y;fa`-9LG3}afl3Nj6;TD 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