Done!
This commit is contained in:
109
main-comments-debug.py.inactive
Normal file
109
main-comments-debug.py.inactive
Normal file
@@ -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]
|
||||
Reference in New Issue
Block a user