@@ -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