@@ -2275,3 +2275,65 @@ def update(self):
2275
2275
self .mmap [:] = self ._img_to_rgb565_bytes ()
2276
2276
else :
2277
2277
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