robolab/src/sensor.py

45 lines
1.2 KiB
Python

#!/usr/bin/env python3
import ev3dev.ev3 as ev3
from enum import Enum, unique
'''
add enum for color definitions (type should be tupel of int's).
later onwards compare the idividual readouts like this to determine the color:
RED = (>90, <40, <25)
BLUE = (<25, >75, >90)
Example:
color = (100, 30, 20)
(color[0] > 90 and (color[1], color[2]) < (40, 25))
'''
class Color(tuple, Enum):
RED = (90, 40, 25)
BLUE = (25, 75, 90)
class Sensor:
def __init__(self):
self._sensor = ev3.ColorSensor()
self._sensor.mode = 'COL-REFLECT'
self.lastcolor = None
def getbrightness(self):
if(self._sensor.mode == 'COL-REFLECT'):
return self._sensor.value()
else:
print("ERROR: Wrong Sensor Mode.")
def getcolor(self):
if(self._sensor.mode == 'RGB-RAW'):
RGB = self._sensor.bin_data("hhh")
if(RGB[0] > Color.RED[0] and (RGB[1], RGB[2]) < (Color.RED[1], Color.RED[2])):
self.lastcolor = Color.RED
if(RGB[0] < Color.BLUE[0] and (RGB[1], RGB[2]) > (Color.BLUE[1], Color.BLUE[2])):
self.lastcolor = Color.BLUE
def setmode(self, newmode):
self._sensor.mode = newmode