diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..13fecf3
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..e15ec35
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/other.xml b/.idea/other.xml
new file mode 100644
index 0000000..a708ec7
--- /dev/null
+++ b/.idea/other.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/pythonProject.iml b/.idea/pythonProject.iml
new file mode 100644
index 0000000..97538d9
--- /dev/null
+++ b/.idea/pythonProject.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main-comments-debug.py.inactive b/main-comments-debug.py.inactive
new file mode 100644
index 0000000..aebf147
--- /dev/null
+++ b/main-comments-debug.py.inactive
@@ -0,0 +1,109 @@
+import time
+from machine import Pin, ADC, PWM
+
+light_sensor_1 = ADC(26) # Side with servo on left
+light_sensor_2 = ADC(27) # Side with servo on right
+servo_pwm = PWM(Pin(28, Pin.OUT))
+servo_pwm.freq(50)
+
+cur_deg = 90
+
+reset_button = Pin(14, Pin.IN)
+calibrate_button = Pin(15, Pin.IN)
+cal_threshold = 0
+
+led = Pin('WL_GPIO0', Pin.OUT)
+led.high()
+
+run_avg = [0, 0, 0, 0, 0]
+
+def servo(degrees):
+ if degrees > 180:
+ degrees = 180
+ if degrees < 0:
+ degrees = 0
+ max_duty = 2500000
+ min_duty = 500000
+ new_duty = min_duty + (max_duty - min_duty) * (degrees / 180)
+ print("Adjusted Position: ", degrees)
+ servo_pwm.duty_ns(int(new_duty))
+
+
+def shift_array(arr, num_to_add):
+ arr.pop(0)
+ arr.append(num_to_add)
+ return arr
+
+
+# If this quits prematurely, add required buffer in final else statement
+def move_to_light():
+ print("Init Move To Light")
+ global cur_deg
+ is_facing_light = False
+ while not is_facing_light:
+ offset = light_sensor_1.read_u16() - light_sensor_2.read_u16()
+ if offset > 100 and cur_deg > 0:
+ cur_deg = cur_deg - 1
+ servo(cur_deg)
+ elif offset < -100 and cur_deg < 180:
+ cur_deg = cur_deg + 1
+ servo(cur_deg)
+ else:
+ is_facing_light = True
+ print("Current Degrees in move to light: ", cur_deg)
+ time.sleep(.01)
+
+
+# Deg+ = More Light to Right
+# Deg- = More Light to Left
+# Lower number = more light
+
+servo(90)
+
+while True:
+ if reset_button.value() == 1:
+ led.low()
+ cur_deg = 90
+ servo(90)
+ cal_threshold = 0
+ run_avg = [0, 0, 0, 0, 0]
+ while reset_button.value() == 1:
+ time.sleep(.1)
+ led.high()
+ diff = light_sensor_1.read_u16() - light_sensor_2.read_u16()
+ run_avg = shift_array(run_avg, diff)
+ if calibrate_button.value() == 1:
+ print("Button is being pressed")
+ cal_threshold = int((light_sensor_1.read_u16() + light_sensor_2.read_u16()) / 2) - 50
+ print("Sensor 1 Val: ", light_sensor_1.read_u16())
+ print("Sensor 2 Val: ", light_sensor_2.read_u16())
+ while calibrate_button.value() == 1:
+ time.sleep(.1)
+ print("New Threshold: ", cal_threshold)
+ if light_sensor_1.read_u16() > cal_threshold and light_sensor_2.read_u16() > cal_threshold:
+ continue
+ num_over = 0
+ first_iter = True
+ sign = True
+ for i in run_avg:
+ cur_num = i
+ print("Cur Num:", cur_num)
+ if abs(cur_num) > 150:
+ if first_iter:
+ if cur_num >= 0:
+ sign = True
+ else:
+ sign = False
+ first_iter = False
+ if (cur_num >= 0 and not sign) or (cur_num < 0 and sign):
+ num_over = 0
+ first_iter = True
+ break
+ elif (cur_num >= 0 and sign) or (cur_num < 0 and not sign):
+ print("Hit")
+ num_over += 1
+ print("Num Over: ", num_over)
+ print("Sign: ", sign)
+ if num_over == 5:
+ move_to_light()
+ run_avg = [0, 0, 0, 0, 0]
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..da41221
--- /dev/null
+++ b/main.py
@@ -0,0 +1,89 @@
+import time
+from machine import Pin, ADC, PWM
+
+light_sensor_1 = ADC(26)
+light_sensor_2 = ADC(27)
+servo_pwm = PWM(Pin(28, Pin.OUT))
+servo_pwm.freq(50)
+cur_deg = 90
+reset_button = Pin(14, Pin.IN)
+calibrate_button = Pin(15, Pin.IN)
+cal_threshold = 0
+led = Pin('WL_GPIO0', Pin.OUT)
+led.high()
+run_avg = [0, 0, 0, 0, 0]
+
+
+def servo(degrees):
+ if degrees > 180:
+ degrees = 180
+ if degrees < 0:
+ degrees = 0
+ max_duty = 2500000
+ min_duty = 500000
+ new_duty = min_duty + (max_duty - min_duty) * (degrees / 180)
+ servo_pwm.duty_ns(int(new_duty))
+
+
+def shift_array(arr, num_to_add):
+ arr.pop(0)
+ arr.append(num_to_add)
+ return arr
+
+
+def move_to_light():
+ global cur_deg
+ is_facing_light = False
+ while not is_facing_light:
+ offset = light_sensor_1.read_u16() - light_sensor_2.read_u16()
+ if offset > 100 and cur_deg > 0:
+ cur_deg = cur_deg - 1
+ servo(cur_deg)
+ elif offset < -100 and cur_deg < 180:
+ cur_deg = cur_deg + 1
+ servo(cur_deg)
+ else:
+ is_facing_light = True
+ time.sleep(.01)
+
+
+servo(90)
+while True:
+ if reset_button.value() == 1:
+ led.low()
+ cur_deg = 90
+ servo(90)
+ cal_threshold = 0
+ run_avg = [0, 0, 0, 0, 0]
+ while reset_button.value() == 1:
+ time.sleep(.1)
+ led.high()
+ diff = light_sensor_1.read_u16() - light_sensor_2.read_u16()
+ run_avg = shift_array(run_avg, diff)
+ if calibrate_button.value() == 1:
+ cal_threshold = int((light_sensor_1.read_u16() + light_sensor_2.read_u16()) / 2) - 50
+ while calibrate_button.value() == 1:
+ time.sleep(.1)
+ if light_sensor_1.read_u16() > cal_threshold and light_sensor_2.read_u16() > cal_threshold:
+ continue
+ num_over = 0
+ first_iter = True
+ sign = True
+ for i in run_avg:
+ cur_num = i
+ if abs(cur_num) > 150:
+ if first_iter:
+ if cur_num >= 0:
+ sign = True
+ else:
+ sign = False
+ first_iter = False
+ if (cur_num >= 0 and not sign) or (cur_num < 0 and sign):
+ num_over = 0
+ first_iter = True
+ break
+ elif (cur_num >= 0 and sign) or (cur_num < 0 and not sign):
+ num_over += 1
+ if num_over == 5:
+ move_to_light()
+ run_avg = [0, 0, 0, 0, 0]