Skip to content

Commit 82df2d7

Browse files
committed
RemoteControl implementation
This duplicates `Button` interface. Still need to implement event handlers (`process()` method coupled with `on_<button>` events).
1 parent 0dca7b7 commit 82df2d7

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

ev3dev.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2275,3 +2275,65 @@ def update(self):
22752275
self.mmap[:] = self._img_to_rgb565_bytes()
22762276
else:
22772277
raise Exception("Not supported")
2278+
2279+
2280+
class RemoteControl(object):
2281+
"""
2282+
EV3 Remote Control
2283+
"""
2284+
2285+
_BUTTON_VALUES = {
2286+
1: ['red_up'],
2287+
2: ['red_down'],
2288+
3: ['blue_up'],
2289+
4: ['blue_down'],
2290+
5: ['red_up', 'blue_up'],
2291+
6: ['red_up', 'blue_down'],
2292+
7: ['red_down', 'blue_up'],
2293+
8: ['red_down', 'blue_down'],
2294+
9: ['beacon'],
2295+
10: ['red_up', 'red_down'],
2296+
11: ['blue_up', 'blue_down']
2297+
}
2298+
2299+
def __init__(self, sensor=None, channel=1):
2300+
if sensor is None:
2301+
self._sensor = InfraredSensor()
2302+
else:
2303+
self._sensor = sensor
2304+
2305+
self._channel = max(1, min(4, channel)) - 1
2306+
2307+
if self._sensor.connected:
2308+
self._sensor.mode = 'IR-REMOTE'
2309+
2310+
@property
2311+
def buttons_pressed(self):
2312+
return RemoteControl._BUTTON_VALUES.get(self._sensor.value(self._channel), [])
2313+
2314+
@property
2315+
def any(self):
2316+
return bool(self.buttons_pressed)
2317+
2318+
def check_buttons(self, buttons=[]):
2319+
return set(self.buttons_pressed) == set(buttons)
2320+
2321+
@property
2322+
def red_up(self):
2323+
return 'red_up' in self.buttons_pressed
2324+
2325+
@property
2326+
def red_down(self):
2327+
return 'red_down' in self.buttons_pressed
2328+
2329+
@property
2330+
def blue_up(self):
2331+
return 'blue_up' in self.buttons_pressed
2332+
2333+
@property
2334+
def blue_down(self):
2335+
return 'blue_down' in self.buttons_pressed
2336+
2337+
@property
2338+
def beacon(self):
2339+
return 'beacon' in self.buttons_pressed

0 commit comments

Comments
 (0)