diff --git a/EyeTrainerLayout.diy b/EyeTrainerLayout.diy
new file mode 100644
index 0000000..6dba283
--- /dev/null
+++ b/EyeTrainerLayout.diy
@@ -0,0 +1,2559 @@
+
+
+
+ 4
+ 37
+ 0
+
+ New Project
+ airac
+
+
+
+ 1
+
+
+ Board1
+ 127
+
+
+
+
+
+
+
+
+
+
+ Numbers
+ Bottom_Left
+ One_Side
+ Letters
+
+
+ TwoPoints
+
+
+
+
+ J1
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J2
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J3
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J4
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J5
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J6
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J7
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J8
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J9
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J10
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J11
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J12
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J13
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J14
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J15
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J16
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J17
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J18
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J19
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J20
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J21
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J22
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J23
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J24
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J25
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J26
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J27
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J28
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J29
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J30
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J31
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J32
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J33
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J34
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J35
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J36
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J37
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J38
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J39
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J40
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J41
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J42
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J43
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J44
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J45
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J46
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J47
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J48
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J49
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J50
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J51
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J52
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ J53
+ 127
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ 74HC595
+ 127
+
+ DEFAULT
+ _16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BOTH
+
+
+
+
+ NO
+
+
+ 74HC595
+ 127
+
+ DEFAULT
+ _16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BOTH
+
+
+
+
+ NO
+
+
+ Arduino Nano
+ 127
+
+ DEFAULT
+ _30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BOTH
+
+
+
+
+ NO
+
+
+ Arduino Nano
+ 127
+
+ DEFAULT
+ _30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BOTH
+
+
+
+
+ NO
+
+
+ R1
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R2
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R3
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R4
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R5
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R6
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R7
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R8
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R9
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R10
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R11
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R12
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R13
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R14
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R15
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R16
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ DisplayRect
+ 127
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Display
+ 127
+
+ DEFAULT
+ _8
+
+
+
+
+
+
+
+
+
+
+
+
+ BOTH
+
+
+
+
+ NO
+
+
+ SW1
+ 127
+
+ _90
+
+
+
+
+
+
+ BOTH
+
+
+
+
+
+ R10kOhm
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ SW2
+ 127
+
+ _90
+
+
+
+
+
+
+ BOTH
+
+
+
+
+
+ SW3
+ 127
+
+ _90
+
+
+
+
+
+
+ BOTH
+
+
+
+
+
+ R17
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ R18
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+ HALF
+ _5_BAND
+ Standard
+
+
+ D1
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D2
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D3
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D4
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D5
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D6
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D7
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D8
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D9
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D10
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D11
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D12
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D13
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D14
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D15
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ D16
+ 127
+
+
+
+
+
+
+
+
+
+
+
+ NAME
+ false
+ Directional
+ false
+ false
+
+
+
+ Arduino D3 to 74HC595 DS (Data Pin)
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ 74HC595 Q7* to 74HC595 DS (Data Pin)
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino GND to 74HC595 OE
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino GND to 74HC595 OE
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino GND to 74HC595 GND
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino GND to 74HC595 GND
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 To 74HC595 VCC
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 To 74HC595 VCC
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 to 74HC595 MR
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 to 74HC595 MR
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D4 to 74HC595 SH_CP (Clock Pin)
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D4 to 74HC595 SH_CP (Clock Pin)
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D5 to 74HC595 ST_CP (Latch Pin)
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ W1
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D6 to LED Ground PWMed
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino GND to Display GND
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 to Display V5
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D7 to Display DIO
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D8 to Display Clock
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D9 to Button 1
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D10 to Button 2
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino D11 to Button 3
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 to Button 1 Vcc
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 to Button 2 Vcc
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino V5 to Button 3 Vcc
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+ Arduino GND to Button PullDownResistor
+ 127
+
+
+
+
+
+
+
+ FOUR
+
+ true
+ -1
+ _22
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GeneralViewBreadBoard.jpg b/GeneralViewBreadBoard.jpg
new file mode 100644
index 0000000..25a7e91
Binary files /dev/null and b/GeneralViewBreadBoard.jpg differ
diff --git a/LogDistanceCalc.ipynb b/LogDistanceCalc.ipynb
new file mode 100644
index 0000000..cae324b
--- /dev/null
+++ b/LogDistanceCalc.ipynb
@@ -0,0 +1,91 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import math\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[12.5, 14.3, 16.4, 19.0, 22.1, 25.8, 30.3, 35.7, 42.1, 49.9, 59.3, 70.6, 84.2, 100.5, 120.1, 143.8]\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvZklEQVR4nO3dfXSU9Z3//9ckDAnQ3DjpN8ykJpq1VgihCGLSiN3VkoSgjVKpHmpAVj2ypUHF9CjSChhEKaxVCtJQerr2cCDW9qxQw2kjKbiga0ggKa4RirCbopXc/DQlA+QkjjPX7w+akTEBCVwzc+XK83GOba/PdeUz7/cZDK9eN5/LYRiGIQAAAAuJiXYBAAAAn0dAAQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAljMs2gVcjEAgoOPHjyshIUEOhyPa5QAAgAtgGIZOnjyptLQ0xcSc/xzJoAwox48fV3p6erTLAAAAF+GDDz7Q5Zdfft5jBmVASUhIkHSmwcTERFPn9vl82rFjhwoLC+V0Ok2d24ro197o197o197s2K/X61V6enrw7/HzGZQBpfeyTmJiYlgCysiRI5WYmGibPxDnQ7/2Rr/2Rr/2Zud+L+T2DG6SBQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAlkNAAQAAljMoF2oDAADh4Q8Yqm/uUPvJbqUmxCsn06XYmMi/946AAgAAJEnVTS0qrzqols7u4JgnKV7LirNUlO2JaC1c4gEAAKpuatH8zY0h4USSWju7NX9zo6qbWiJaDwEFAIAhzh8wVF51UEY/+3rHyqsOyh/o74jwIKAAADDE1Td39DlzcjZDUktnt+qbOyJWEwEFAIAhrv3kucPJxRxnBgIKAABDXGpCvKnHmYGAAgDAEJeT6ZInKV7nepjYoTNP8+RkuiJWEwEFAIAhLjbGoWXFWZLUJ6T0bi8rzoroeigEFAAAoKJsjypmT5I7KfQyjjspXhWzJ0V8HRQWagMAAJLOhJSCLLclVpId8BmUPXv2qLi4WGlpaXI4HNq2bds5j/3+978vh8OhNWvWhIx3dHSopKREiYmJSk5O1v33369Tp04NtBQAAGCy2BiH8q5K0e3XfkV5V6VEJZxIFxFQTp8+rQkTJmj9+vXnPW7r1q3au3ev0tLS+uwrKSnRu+++q5qaGm3fvl179uzRvHnzBloKAACwqQFf4pk+fbqmT59+3mM+/PBDPfjgg3rttdd06623huw7dOiQqqurtW/fPk2ePFmStG7dOt1yyy169tln+w00AABgaDH9HpRAIKA5c+bo0Ucf1bhx4/rsr62tVXJycjCcSFJ+fr5iYmJUV1en73znO31+pqenRz09PcFtr9crSfL5fPL5fKbW3zuf2fNaFf3aG/3aG/3amx37HUgvpgeUVatWadiwYXrooYf63d/a2qrU1NTQIoYNk8vlUmtra78/s3LlSpWXl/cZ37Fjh0aOHHnpRfejpqYmLPNaFf3aG/3aG/3am5367erquuBjTQ0oDQ0N+tnPfqbGxkY5HObdVLN48WKVlZUFt71er9LT01VYWKjExETTPkc6k+5qampUUFAgp9Np6txWRL/2Rr/2Rr/2Zsd+e6+AXAhTA8obb7yh9vZ2ZWRkBMf8fr9++MMfas2aNfrrX/8qt9ut9vb2kJ/79NNP1dHRIbfb3e+8cXFxiouL6zPudDrD9qWFc24rol97o197o197s1O/A+nD1IAyZ84c5efnh4xNmzZNc+bM0b333itJysvL04kTJ9TQ0KDrrrtOkrRr1y4FAgHl5uaaWQ4AABikBhxQTp06paNHjwa3m5ubdeDAAblcLmVkZCglJSXkeKfTKbfbrWuuuUaSNHbsWBUVFemBBx7Qhg0b5PP5tGDBAs2aNYsneAAAgKSLWAdl//79mjhxoiZOnChJKisr08SJE7V06dILnmPLli0aM2aMpk6dqltuuUU33nijNm7cONBSAACATQ34DMpNN90kwzAu+Pi//vWvfcZcLpcqKysH+tEAAGCI4GWBAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAABYjD9gqK65Qw0fOVTX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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "xs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]\n",
+ "# xs = [0, 1, 2, 3, 4]\n",
+ "\n",
+ "ys = []\n",
+ "current_y = 0\n",
+ "max_x = float(max(xs))\n",
+ "base = 16.0\n",
+ "length = 1.40\n",
+ "start_offset = 0.125\n",
+ "for x in xs:\n",
+ " current_y = base**(x/max_x) / base * length\n",
+ " ys.append(current_y)\n",
+ "\n",
+ "offset = start_offset - ys[0]\n",
+ "for i in range(0, len(ys)):\n",
+ " ys[i] += offset\n",
+ " ys[i] *= 1000\n",
+ " ys[i] = round(ys[i])\n",
+ " ys[i] /= 10\n",
+ "\n",
+ "plt.plot(xs, ys,'o')\n",
+ "plt.grid()\n",
+ "print(ys)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "my_python_env",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..390237f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,97 @@
+# Eye Trainer
+
+## Description
+
+This is a simple eye trainer which is supposed to reduce muscle stress after focusing on same distance for a long time. The constraction is long stick (1.0-1.5m) with LEDs placed along. LEDs turn on with choosen order after selected switch time is passed. Display helps to control the device.
+
+## Controls
+
+**Buttons:**
+
+1. Main
+2. Up
+3. Down
+
+## Usage
+
+Device starts in "run" mode. but inactive. Click "Up" button to start with default settings. Click "Down" button to pause. Click "Main" button to switch displayed info. On other screens than "run" press "Up" or "Down" buttons to change settings.
+
+On "Test" screen any button except "Main" will trigger test sequence to check display and LEDs.
+
+## Device Settings
+
+**LEDS order modes (rnod):**
+
+1. Forward (FrWd)
+2. Backward (bAC-)
+3. Ping-Pong (PInG)
+4. Random (rnd) (default)
+
+**Brightness (brgh):**
+
+Number from 25 to 255.
+
+**Switch Time (time):**
+
+Number between 25 and 1500 measured in milliseconds x10, i.e. 25 means 250 ms and 1500 means 15000 ms (15 seconds).
+Default value 300 (3 seconds).
+
+**Time mode (tmod):**
+
+1. Constant (CnSt)
+2. Manusl (nAnL)
+3. Decremental (dECr) (not implemented)
+
+## Components Used
+1. Arduino Nano (ATMega328PB) x1
+2. ShiftRegister 74HC595N x2
+3. LED x16
+4. Resistor 220Ohm x16
+5. Resistor 10kOhm x3
+6. Segment Display TM1637 x1
+7. Tact Button x3
+8. Solderless breadboards x3
+9. Wires (a lot)
+
+## Connection Scheme
+
+To be added. Hints are in file EyeTrainerLayout.diy (can be opened with DIY Layout Creator).
+
+### Text description
+
+**Arduino's BreadBoard:**
+
+1. Contains Arduino Nano, TM1637 Display, 3 tact buttons with 10kOhm resistors, connectors
+2. Pins D7, D8 controlls display (see Defines.h)
+3. Pins D9, D10, D11 receives buttons signals (see Defines.h)
+4. Pins D3, D4, D5 controlls shift registers (see Defines.h)
+5. Ping 6 controlls brightness of LEDs (see Defines.h)
+6. D6, D3, D4, D5, GND and 5V pins are passed to ShiftRegisters' BreadBoard
+
+**ShiftRegisters' BreadBoard:**
+
+1. Contains two 74HC595N shift registers, x16 220Ohm resistors and connectors
+2. Pins Q0..Q7 of both shift registers are used to controll LEDs.
+3. Two 74HC595N are connected sequentially. Latch, Data and Clock connections to Arduino board are defined in Defines.h
+
+**IMPORTANT: Arduino's pins are different in EyeTrainer project!**
+
+
+
+Source: https://blog.timodenk.com/shift-register-arduino-library/
+
+## General View
+
+
+
+## Notes
+
+Python script (LogDistanceCalc.ipynb, Jupyter Notebook) can be used to define distances between LEDs on stick.
+
+## Known Problems
+
+1. Sometimes buttons click are not registered or skipped.
+
+## Possible Improvements
+
+1. Lighten small printed and high contrast images with white LEDs. Probably it would be easier and healthier to focus eyes on, than watching LEDs directly.
diff --git a/ShiftRegisterSequentialConnection.png b/ShiftRegisterSequentialConnection.png
new file mode 100644
index 0000000..69d7ba2
Binary files /dev/null and b/ShiftRegisterSequentialConnection.png differ