Skip to content

Commit d20450a

Browse files
authored
Add check_color() API
* Modified check_color() API * Changed type of error
1 parent 3b19ed5 commit d20450a

File tree

2 files changed

+56
-3
lines changed

2 files changed

+56
-3
lines changed

neopia/neosoco.py

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,49 @@ def convert_scale(self, port='in1', omin=0, omax=255, tmin=0, tmax=100):
450450
else:
451451
raise TypeError
452452

453+
def check_color(self, port='in1', color='white'):
454+
if isinstance(port and color, str):
455+
if port.lower() =='in1':
456+
c_value = self.read(Neosoco.INPUT_1)
457+
elif port.lower() =='in2':
458+
c_value = self.read(Neosoco.INPUT_2)
459+
elif port.lower() =='in3':
460+
c_value = self.read(Neosoco.INPUT_3)
461+
else:
462+
raise ValueError("Wrong value of port")
463+
464+
if not color.lower() in Neosoco._COLORS.keys():
465+
raise ValueError('Wrong value of color')
466+
if (c_value >= 10 and c_value <= 50):
467+
if (color.lower() == self.COLOR_NAME_WHITE):
468+
return True
469+
else:
470+
return False
471+
elif (c_value >= 51 and c_value <= 90):
472+
if (color.lower() == self.COLOR_NAME_RED):
473+
return True
474+
else:
475+
return False
476+
elif (c_value >= 91 and c_value <= 130):
477+
if (color.lower() == self.COLOR_NAME_YELLOW):
478+
return True
479+
else:
480+
return False
481+
elif (c_value >= 131 and c_value <= 170):
482+
if (color.lower() == self.COLOR_NAME_GREEN):
483+
return True
484+
else:
485+
return False
486+
elif (c_value >= 171 and c_value <= 210):
487+
if (color.lower() == self.COLOR_NAME_BLUE):
488+
return True
489+
else:
490+
return False
491+
else:
492+
return False
493+
else:
494+
raise TypeError
495+
453496
def led_on(self, port='out1', brightness='100'):
454497
percent_cvt = {
455498
'100': 255,
@@ -746,8 +789,9 @@ def buzzer_by_port(self, port='in1'):
746789
value = self._convert_scale_from_input_port(port, 65)
747790
self.write(Neosoco.NOTE, value)
748791
else:
792+
749793
raise TypeError
750-
794+
751795
def buzzer_stop(self):
752796
self.write(Neosoco.NOTE, 0)
753797

@@ -761,4 +805,4 @@ def remote_button(self, button='1'):
761805
else:
762806
raise ValueError('Wrong value of button')
763807
else:
764-
raise TypeError
808+
raise TypeError

test.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,13 @@
119119
# n.servo_rotate('out2', 'forward', '50')
120120
# wait(2000)
121121
# n.servo_rotate('out2', 'backward', '50')
122-
# wait(2000)
122+
# wait(2000)
123+
124+
# case 17) Turn on LED when sensor detects green color
125+
# while True:
126+
# print(n.get_value('in1'))
127+
# wait(500)
128+
# if n.check_color('in1', 'Green'):
129+
# n.led_on('out1', '100')
130+
# else:
131+
# n.led_off('out1')

0 commit comments

Comments
 (0)