My python program implement a sort of calibration of the light censor defined in a clean way,
#!/usr/bin/env python
import RPi.GPIO as GPIO, time, os
DEBUG = 1
GPIO.setmode(GPIO.BCM)
def RCtime (RCpin):
reading = 0
GPIO.setup(RCpin, GPIO.OUT)
GPIO.output(RCpin, GPIO.LOW)
time.sleep(0.1)
GPIO.setup(RCpin, GPIO.IN)
# This takes about 1 millisecond per loop cycle
while (GPIO.input(RCpin) == GPIO.LOW):
reading += 1
return reading
class LightRange(object):
def __init__(self, start, type):
self.Start = start
self.Type = type
def InRange(self, val):
return val <= self.Start
def __str__(self):
return "[%d]%s" % (self.Start, self.Type)
def __repr__(self):
return self.__str__()
class LightDetector(object):
def __init__(self):
self._ranges = []
# Value must be add from small to large
self._ranges.append(LightRange( 50, "A lot of light"))
self._ranges.append(LightRange( 500, "Some light"))
self._ranges.append(LightRange( 3500, "Very little light"))
self._ranges.append(LightRange(100000, "No light"))
def GetLightType(self, val):
for r in self._ranges:
if r.InRange(val):
return "%s - %d" % (r.Type, val)
return "Unknown value:%d" % (val)
def demo2():
ld = LightDetector()
while True:
lightType = ld.GetLightType(RCtime(18))
print lightType
demo2()

No comments:
Post a Comment