#is at .3, this code will convert that number to a target dc light level of 70%. lightLevel = 1 - lightLevel lightLevel = lightLevel * 100 #If the target light level is below 20%, this if statement scales it exponentially #downward to a lower level by taking the 1/4 root of the original value. This is done #to help make the lights dimmer indoors because the light sensor usually doesn't get #above 90 indoors. if (lightLevel < 20): lightLevel = lightLevel**(.25) #If the current duty cycle is below the target light level, then the dc value is #increased slightly, otherwise it is decreased slightly when it is measured as higher #than the target level. if (((dc - lightLevel) <= -1) and dc <= 99): dc = dc + 1 else: if (((dc - lightLevel) >= 1) and dc >= 1): dc = dc - 1 #This new dc value is fed into the LED switch to change its intensity. The loop runs every #.05 seconds, so the LEDs quickly dim or brighten to the level they are supposed to be at. LED.ChangeDutyCycle(dc) time.sleep(.05) #Everything is cleaned up and the program is ended. LED.stop() light.close() GPIO.output(signal, 0) GPIO.cleanup() sys.exit()
#ldrone.py from gpiozero import LightSensor from time import sleep ldr = LightSensor(4) try: while True: sleep(0.2) print("ldr.value " + str(ldr.value)) if ldr.value < 0.95: # make the sensitivity different print("Light Blocked") else: print("Light On") except KeyboardInterrupt: print("Exiting ...") finally: ldr.close()
class TestStrikeZone(unittest.TestCase): def setUp(self): self.strikeZone = StrikeZone() self.horizSensor1 = LightSensor(17) self.horizSensor2 = LightSensor(27) self.vertSensor1 = LightSensor(23) self.vertSensor2 = LightSensor(24) def tearDown(self): self.horizSensor1.close() self.horizSensor2.close() self.vertSensor1.close() self.vertSensor2.close() self.strikeZone = None '''Test ball hitting horiz1 and not hitting either vertical''' def test_horizSensor1_ball(self): self.strikeZone.horizDark(self.horizSensor1) self.assertEquals(self.strikeZone.horizDetected, 1) self.assertEquals(self.strikeZone.strikeCount, 0) self.assertEquals(self.strikeZone.ballCount, 0) self.strikeZone.horizLight(self.horizSensor1) self.assertEquals(self.strikeZone.strikeCount, 0) self.assertEquals(self.strikeZone.ballCount, 1) '''Test ball hitting vert1 and not hitting either horiz''' def test_vertSensor1_ball(self): self.strikeZone.vertDark(self.vertSensor1) self.assertEquals(self.strikeZone.vertDetected, 1) self.assertEquals(self.strikeZone.strikeCount, 0) self.assertEquals(self.strikeZone.ballCount, 0) self.strikeZone.vertLight(self.vertSensor1) self.assertEquals(self.strikeZone.strikeCount, 0) self.assertEquals(self.strikeZone.ballCount, 1) '''Test ball hitting horiz1 and horiz2 and not hitting either vertical''' def test_horizSensor1_and_horiz2_ball(self): self.strikeZone.horizDark(self.horizSensor1) self.strikeZone.horizDark(self.horizSensor2) self.assertEquals(self.strikeZone.horizDetected, 2) self.assertEquals(self.strikeZone.strikeCount, 0) self.assertEquals(self.strikeZone.ballCount, 0) self.strikeZone.horizLight(self.horizSensor1) self.strikeZone.horizLight(self.horizSensor2) self.assertEquals(self.strikeZone.strikeCount, 0) self.assertEquals(self.strikeZone.ballCount, 1) '''Test ball hitting horiz1 and vert2 for strike''' def test_horizSensor1_and_vert2_strike(self): self.strikeZone.horizDark(self.horizSensor1) self.strikeZone.vertDark(self.vertSensor2) self.assertEquals(self.strikeZone.horizDetected, 1) self.assertEquals(self.strikeZone.vertDetected, 1) self.strikeZone.horizLight(self.horizSensor1) self.strikeZone.vertLight(self.vertSensor2) self.assertEquals(self.strikeZone.strikeCount, 1) self.assertEquals(self.strikeZone.ballCount, 0)