Done!
This commit is contained in:
		
							parent
							
								
									05bef4c80a
								
							
						
					
					
						commit
						d680fc0dfd
					
				
							
								
								
									
										8
									
								
								.idea/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -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
 | 
				
			||||||
							
								
								
									
										6
									
								
								.idea/inspectionProfiles/profiles_settings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/inspectionProfiles/profiles_settings.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<component name="InspectionProjectProfileManager">
 | 
				
			||||||
 | 
					  <settings>
 | 
				
			||||||
 | 
					    <option name="USE_PROJECT_PROFILE" value="false" />
 | 
				
			||||||
 | 
					    <version value="1.0" />
 | 
				
			||||||
 | 
					  </settings>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										4
									
								
								.idea/misc.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.idea/misc.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (pythonProject)" project-jdk-type="Python SDK" />
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										8
									
								
								.idea/modules.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/modules.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="ProjectModuleManager">
 | 
				
			||||||
 | 
					    <modules>
 | 
				
			||||||
 | 
					      <module fileurl="file://$PROJECT_DIR$/.idea/pythonProject.iml" filepath="$PROJECT_DIR$/.idea/pythonProject.iml" />
 | 
				
			||||||
 | 
					    </modules>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										6
									
								
								.idea/other.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/other.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="PySciProjectComponent">
 | 
				
			||||||
 | 
					    <option name="PY_SCI_VIEW_SUGGESTED" value="true" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										19
									
								
								.idea/pythonProject.iml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.idea/pythonProject.iml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<module type="PYTHON_MODULE" version="4">
 | 
				
			||||||
 | 
					  <component name="FacetManager">
 | 
				
			||||||
 | 
					    <facet type="MicroPython" name="MicroPython">
 | 
				
			||||||
 | 
					      <configuration>
 | 
				
			||||||
 | 
					        <device name="Raspberry Pi Pico" />
 | 
				
			||||||
 | 
					      </configuration>
 | 
				
			||||||
 | 
					    </facet>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					  <component name="NewModuleRootManager">
 | 
				
			||||||
 | 
					    <content url="file://$MODULE_DIR$">
 | 
				
			||||||
 | 
					      <excludeFolder url="file://$MODULE_DIR$/.idea" />
 | 
				
			||||||
 | 
					      <excludeFolder url="file://$MODULE_DIR$/venv" />
 | 
				
			||||||
 | 
					    </content>
 | 
				
			||||||
 | 
					    <orderEntry type="inheritedJdk" />
 | 
				
			||||||
 | 
					    <orderEntry type="sourceFolder" forTests="false" />
 | 
				
			||||||
 | 
					    <orderEntry type="library" name="MicroPython" level="project" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</module>
 | 
				
			||||||
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="VcsDirectoryMappings">
 | 
				
			||||||
 | 
					    <mapping directory="$PROJECT_DIR$" vcs="Git" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										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]
 | 
				
			||||||
							
								
								
									
										89
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							@ -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]
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user