Module Led
[hide private]
[frames] | no frames]

Source Code for Module Led

  1  # Led.java 
  2   
  3  ''' 
  4  Class that represents a LED pair. 
  5   
  6   This software is part of the raspibrick module. 
  7   It is Open Source Free Software, so you may 
  8   - run the code for any purpose 
  9   - study how the code works and adapt it to your needs 
 10   - integrate all or parts of the code in your own programs 
 11   - redistribute copies of the code 
 12   - improve the code and release your improvements to the public 
 13   However the use of the code is entirely your responsibility. 
 14   ''' 
 15   
 16  from Tools import Tools 
 17  from RobotInstance import RobotInstance 
 18  import time 
 19  from threading import Thread 
 20  ''' 
 21  Dictionary "color":[RGB list] of X11 colors. 
 22  ''' 
 23  x11Colors = {"aqua":[0, 255, 255], 
 24  "cornflower":[100, 149, 237], 
 25  "crimson":[220, 20, 60], 
 26  "fuchsia":[255, 0, 255], 
 27  "indigo":[75, 0, 130], 
 28  "lime":[50, 205, 50], 
 29  "silver":[192, 192, 192], 
 30  "ghost white":[248, 248, 255], 
 31  "snow":[255, 250, 250], 
 32  "ghostwhite":[248, 248, 255], 
 33  "white smoke":[245, 245, 245], 
 34  "whitesmoke":[245, 245, 245], 
 35  "gainsboro":[220, 220, 220], 
 36  "floral white":[255, 250, 240], 
 37  "floralwhite":[255, 250, 240], 
 38  "old lace":[253, 245, 230], 
 39  "oldlace":[253, 245, 230], 
 40  "linen":[250, 240, 230], 
 41  "antique white":[250, 235, 215], 
 42  "antiquewhite":[250, 235, 215], 
 43  "papaya whip":[255, 239, 213], 
 44  "papayawhip":[255, 239, 213], 
 45  "blanched almond":[255, 235, 205], 
 46  "blanchedalmond":[255, 235, 205], 
 47  "bisque":[255, 228, 196], 
 48  "peach puff":[255, 218, 185], 
 49  "peachpuff":[255, 218, 185], 
 50  "navajo white":[255, 222, 173], 
 51  "navajowhite":[255, 222, 173], 
 52  "moccasin":[255, 228, 181], 
 53  "cornsilk":[255, 248, 220], 
 54  "ivory":[255, 255, 240], 
 55  "lemon chiffon":[255, 250, 205], 
 56  "lemonchiffon":[255, 250, 205], 
 57  "seashell":[255, 245, 238], 
 58  "honeydew":[240, 255, 240], 
 59  "mint cream":[245, 255, 250], 
 60  "mintcream":[245, 255, 250], 
 61  "azure":[240, 255, 255], 
 62  "alice blue":[240, 248, 255], 
 63  "aliceblue":[240, 248, 255], 
 64  "lavender":[230, 230, 250], 
 65  "lavender blush":[255, 240, 245], 
 66  "lavenderblush":[255, 240, 245], 
 67  "misty rose":[255, 228, 225], 
 68  "mistyrose":[255, 228, 225], 
 69  "white":[255, 255, 255], 
 70  "black":[0, 0, 0], 
 71  "dark slate gray":[47, 79, 79], 
 72  "darkslategray":[47, 79, 79], 
 73  "dark slate grey":[47, 79, 79], 
 74  "darkslategrey":[47, 79, 79], 
 75  "dim gray":[105, 105, 105], 
 76  "dimgray":[105, 105, 105], 
 77  "dim grey":[105, 105, 105], 
 78  "dimgrey":[105, 105, 105], 
 79  "slate gray":[112, 128, 144], 
 80  "slategray":[112, 128, 144], 
 81  "slate grey":[112, 128, 144], 
 82  "slategrey":[112, 128, 144], 
 83  "light slate gray":[119, 136, 153], 
 84  "lightslategray":[119, 136, 153], 
 85  "light slate grey":[119, 136, 153], 
 86  "lightslategrey":[119, 136, 153], 
 87  "gray":[190, 190, 190], 
 88  "grey":[190, 190, 190], 
 89  "light grey":[211, 211, 211], 
 90  "lightgrey":[211, 211, 211], 
 91  "light gray":[211, 211, 211], 
 92  "lightgray":[211, 211, 211], 
 93  "midnight blue":[25, 25, 112], 
 94  "midnightblue":[25, 25, 112], 
 95  "navy":[0, 0, 128], 
 96  "navy blue":[0, 0, 128], 
 97  "navyblue":[0, 0, 128], 
 98  "cornflower blue":[100, 149, 237], 
 99  "cornflowerblue":[100, 149, 237], 
100  "dark slate blue":[72, 61, 139], 
101  "darkslateblue":[72, 61, 139], 
102  "slate blue":[106, 90, 205], 
103  "slateblue":[106, 90, 205], 
104  "medium slate blue":[123, 104, 238], 
105  "mediumslateblue":[123, 104, 238], 
106  "light slate blue":[132, 112, 255], 
107  "lightslateblue":[132, 112, 255], 
108  "medium blue":[0, 0, 205], 
109  "mediumblue":[0, 0, 205], 
110  "royal blue":[65, 105, 225], 
111  "royalblue":[65, 105, 225], 
112  "blue":[0, 0, 255], 
113  "dodger blue":[30, 144, 255], 
114  "dodgerblue":[30, 144, 255], 
115  "deep sky blue":[0, 191, 255], 
116  "deepskyblue":[0, 191, 255], 
117  "sky blue":[135, 206, 235], 
118  "skyblue":[135, 206, 235], 
119  "light sky blue":[135, 206, 250], 
120  "lightskyblue":[135, 206, 250], 
121  "steel blue":[70, 130, 180], 
122  "steelblue":[70, 130, 180], 
123  "light steel blue":[176, 196, 222], 
124  "lightsteelblue":[176, 196, 222], 
125  "light blue":[173, 216, 230], 
126  "lightblue":[173, 216, 230], 
127  "powder blue":[176, 224, 230], 
128  "powderblue":[176, 224, 230], 
129  "pale turquoise":[175, 238, 238], 
130  "paleturquoise":[175, 238, 238], 
131  "dark turquoise":[0, 206, 209], 
132  "darkturquoise":[0, 206, 209], 
133  "medium turquoise":[72, 209, 204], 
134  "mediumturquoise":[72, 209, 204], 
135  "turquoise":[64, 224, 208], 
136  "cyan":[0, 255, 255], 
137  "light cyan":[224, 255, 255], 
138  "lightcyan":[224, 255, 255], 
139  "cadet blue":[95, 158, 160], 
140  "cadetblue":[95, 158, 160], 
141  "medium aquamarine":[102, 205, 170], 
142  "mediumaquamarine":[102, 205, 170], 
143  "aquamarine":[127, 255, 212], 
144  "dark green":[0, 100, 0], 
145  "darkgreen":[0, 100, 0], 
146  "dark olive green":[85, 107, 47], 
147  "darkolivegreen":[85, 107, 47], 
148  "dark sea green":[143, 188, 143], 
149  "darkseagreen":[143, 188, 143], 
150  "sea green":[46, 139, 87], 
151  "seagreen":[46, 139, 87], 
152  "medium sea green":[60, 179, 113], 
153  "mediumseagreen":[60, 179, 113], 
154  "light sea green":[32, 178, 170], 
155  "lightseagreen":[32, 178, 170], 
156  "pale green":[152, 251, 152], 
157  "palegreen":[152, 251, 152], 
158  "spring green":[0, 255, 127], 
159  "springgreen":[0, 255, 127], 
160  "lawn green":[124, 252, 0], 
161  "lawngreen":[124, 252, 0], 
162  "green":[0, 255, 0], 
163  "chartreuse":[127, 255, 0], 
164  "medium spring green":[0, 250, 154], 
165  "mediumspringgreen":[0, 250, 154], 
166  "green yellow":[173, 255, 47], 
167  "greenyellow":[173, 255, 47], 
168  "lime green":[50, 205, 50], 
169  "limegreen":[50, 205, 50], 
170  "yellow green":[154, 205, 50], 
171  "yellowgreen":[154, 205, 50], 
172  "forest green":[34, 139, 34], 
173  "forestgreen":[34, 139, 34], 
174  "olive drab":[107, 142, 35], 
175  "olivedrab":[107, 142, 35], 
176  "dark khaki":[189, 183, 107], 
177  "darkkhaki":[189, 183, 107], 
178  "khaki":[240, 230, 140], 
179  "pale goldenrod":[238, 232, 170], 
180  "palegoldenrod":[238, 232, 170], 
181  "light goldenrod yellow":[250, 250, 210], 
182  "lightgoldenrodyellow":[250, 250, 210], 
183  "light yellow":[255, 255, 224], 
184  "lightyellow":[255, 255, 224], 
185  "yellow":[255, 255, 0], 
186  "gold":[255, 215, 0], 
187  "light goldenrod":[238, 221, 130], 
188  "lightgoldenrod":[238, 221, 130], 
189  "goldenrod":[218, 165, 32], 
190  "dark goldenrod":[184, 134, 11], 
191  "darkgoldenrod":[184, 134, 11], 
192  "rosy brown":[188, 143, 143], 
193  "rosybrown":[188, 143, 143], 
194  "indian red":[205, 92, 92], 
195  "indianred":[205, 92, 92], 
196  "saddle brown":[139, 69, 19], 
197  "saddlebrown":[139, 69, 19], 
198  "sienna":[160, 82, 45], 
199  "peru":[205, 133, 63], 
200  "burlywood":[222, 184, 135], 
201  "beige":[245, 245, 220], 
202  "wheat":[245, 222, 179], 
203  "sandy brown":[244, 164, 96], 
204  "sandybrown":[244, 164, 96], 
205  "tan":[210, 180, 140], 
206  "chocolate":[210, 105, 30], 
207  "firebrick":[178, 34, 34], 
208  "brown":[165, 42, 42], 
209  "dark salmon":[233, 150, 122], 
210  "darksalmon":[233, 150, 122], 
211  "salmon":[250, 128, 114], 
212  "light salmon":[255, 160, 122], 
213  "lightsalmon":[255, 160, 122], 
214  "orange":[255, 165, 0], 
215  "dark orange":[255, 140, 0], 
216  "darkorange":[255, 140, 0], 
217  "coral":[255, 127, 80], 
218  "light coral":[240, 128, 128], 
219  "lightcoral":[240, 128, 128], 
220  "tomato":[255, 99, 71], 
221  "orange red":[255, 69, 0], 
222  "orangered":[255, 69, 0], 
223  "red":[255, 0, 0], 
224  "hot pink":[255, 105, 180], 
225  "hotpink":[255, 105, 180], 
226  "deep pink":[255, 20, 147], 
227  "deeppink":[255, 20, 147], 
228  "pink":[255, 192, 203], 
229  "light pink":[255, 182, 193], 
230  "lightpink":[255, 182, 193], 
231  "pale violet red":[219, 112, 147], 
232  "palevioletred":[219, 112, 147], 
233  "maroon":[176, 48, 96], 
234  "medium violet red":[199, 21, 133], 
235  "mediumvioletred":[199, 21, 133], 
236  "violet red":[208, 32, 144], 
237  "violetred":[208, 32, 144], 
238  "magenta":[255, 0, 255], 
239  "violet":[238, 130, 238], 
240  "plum":[221, 160, 221], 
241  "orchid":[218, 112, 214], 
242  "medium orchid":[186, 85, 211], 
243  "mediumorchid":[186, 85, 211], 
244  "dark orchid":[153, 50, 204], 
245  "darkorchid":[153, 50, 204], 
246  "dark violet":[148, 0, 211], 
247  "darkviolet":[148, 0, 211], 
248  "blue violet":[138, 43, 226], 
249  "blueviolet":[138, 43, 226], 
250  "purple":[160, 32, 240], 
251  "medium purple":[147, 112, 219], 
252  "mediumpurple":[147, 112, 219], 
253  "thistle":[216, 191, 216], 
254  "snow1":[255, 250, 250], 
255  "snow2":[238, 233, 233], 
256  "snow3":[205, 201, 201], 
257  "snow4":[139, 137, 137], 
258  "seashell1":[255, 245, 238], 
259  "seashell2":[238, 229, 222], 
260  "seashell3":[205, 197, 191], 
261  "seashell4":[139, 134, 130], 
262  "antiquewhite1":[255, 239, 219], 
263  "antiquewhite2":[238, 223, 204], 
264  "antiquewhite3":[205, 192, 176], 
265  "antiquewhite4":[139, 131, 120], 
266  "bisque1":[255, 228, 196], 
267  "bisque2":[238, 213, 183], 
268  "bisque3":[205, 183, 158], 
269  "bisque4":[139, 125, 107], 
270  "peachpuff1":[255, 218, 185], 
271  "peachpuff2":[238, 203, 173], 
272  "peachpuff3":[205, 175, 149], 
273  "peachpuff4":[139, 119, 101], 
274  "navajowhite1":[255, 222, 173], 
275  "navajowhite2":[238, 207, 161], 
276  "navajowhite3":[205, 179, 139], 
277  "navajowhite4":[139, 121, 94], 
278  "lemonchiffon1":[255, 250, 205], 
279  "lemonchiffon2":[238, 233, 191], 
280  "lemonchiffon3":[205, 201, 165], 
281  "lemonchiffon4":[139, 137, 112], 
282  "cornsilk1":[255, 248, 220], 
283  "cornsilk2":[238, 232, 205], 
284  "cornsilk3":[205, 200, 177], 
285  "cornsilk4":[139, 136, 120], 
286  "ivory1":[255, 255, 240], 
287  "ivory2":[238, 238, 224], 
288  "ivory3":[205, 205, 193], 
289  "ivory4":[139, 139, 131], 
290  "honeydew1":[240, 255, 240], 
291  "honeydew2":[224, 238, 224], 
292  "honeydew3":[193, 205, 193], 
293  "honeydew4":[131, 139, 131], 
294  "lavenderblush1":[255, 240, 245], 
295  "lavenderblush2":[238, 224, 229], 
296  "lavenderblush3":[205, 193, 197], 
297  "lavenderblush4":[139, 131, 134], 
298  "mistyrose1":[255, 228, 225], 
299  "mistyrose2":[238, 213, 210], 
300  "mistyrose3":[205, 183, 181], 
301  "mistyrose4":[139, 125, 123], 
302  "azure1":[240, 255, 255], 
303  "azure2":[224, 238, 238], 
304  "azure3":[193, 205, 205], 
305  "azure4":[131, 139, 139], 
306  "slateblue1":[131, 111, 255], 
307  "slateblue2":[122, 103, 238], 
308  "slateblue3":[105, 89, 205], 
309  "slateblue4":[71, 60, 139], 
310  "royalblue1":[72, 118, 255], 
311  "royalblue2":[67, 110, 238], 
312  "royalblue3":[58, 95, 205], 
313  "royalblue4":[39, 64, 139], 
314  "blue1":[0, 0, 255], 
315  "blue2":[0, 0, 238], 
316  "blue3":[0, 0, 205], 
317  "blue4":[0, 0, 139], 
318  "dodgerblue1":[30, 144, 255], 
319  "dodgerblue2":[28, 134, 238], 
320  "dodgerblue3":[24, 116, 205], 
321  "dodgerblue4":[16, 78, 139], 
322  "steelblue1":[99, 184, 255], 
323  "steelblue2":[92, 172, 238], 
324  "steelblue3":[79, 148, 205], 
325  "steelblue4":[54, 100, 139], 
326  "deepskyblue1":[0, 191, 255], 
327  "deepskyblue2":[0, 178, 238], 
328  "deepskyblue3":[0, 154, 205], 
329  "deepskyblue4":[0, 104, 139], 
330  "skyblue1":[135, 206, 255], 
331  "skyblue2":[126, 192, 238], 
332  "skyblue3":[108, 166, 205], 
333  "skyblue4":[74, 112, 139], 
334  "lightskyblue1":[176, 226, 255], 
335  "lightskyblue2":[164, 211, 238], 
336  "lightskyblue3":[141, 182, 205], 
337  "lightskyblue4":[96, 123, 139], 
338  "slategray1":[198, 226, 255], 
339  "slategray2":[185, 211, 238], 
340  "slategray3":[159, 182, 205], 
341  "slategray4":[108, 123, 139], 
342  "lightsteelblue1":[202, 225, 255], 
343  "lightsteelblue2":[188, 210, 238], 
344  "lightsteelblue3":[162, 181, 205], 
345  "lightsteelblue4":[110, 123, 139], 
346  "lightblue1":[191, 239, 255], 
347  "lightblue2":[178, 223, 238], 
348  "lightblue3":[154, 192, 205], 
349  "lightblue4":[104, 131, 139], 
350  "lightcyan1":[224, 255, 255], 
351  "lightcyan2":[209, 238, 238], 
352  "lightcyan3":[180, 205, 205], 
353  "lightcyan4":[122, 139, 139], 
354  "paleturquoise1":[187, 255, 255], 
355  "paleturquoise2":[174, 238, 238], 
356  "paleturquoise3":[150, 205, 205], 
357  "paleturquoise4":[102, 139, 139], 
358  "cadetblue1":[152, 245, 255], 
359  "cadetblue2":[142, 229, 238], 
360  "cadetblue3":[122, 197, 205], 
361  "cadetblue4":[83, 134, 139], 
362  "turquoise1":[0, 245, 255], 
363  "turquoise2":[0, 229, 238], 
364  "turquoise3":[0, 197, 205], 
365  "turquoise4":[0, 134, 139], 
366  "cyan1":[0, 255, 255], 
367  "cyan2":[0, 238, 238], 
368  "cyan3":[0, 205, 205], 
369  "cyan4":[0, 139, 139], 
370  "darkslategray1":[151, 255, 255], 
371  "darkslategray2":[141, 238, 238], 
372  "darkslategray3":[121, 205, 205], 
373  "darkslategray4":[82, 139, 139], 
374  "aquamarine1":[127, 255, 212], 
375  "aquamarine2":[118, 238, 198], 
376  "aquamarine3":[102, 205, 170], 
377  "aquamarine4":[69, 139, 116], 
378  "darkseagreen1":[193, 255, 193], 
379  "darkseagreen2":[180, 238, 180], 
380  "darkseagreen3":[155, 205, 155], 
381  "darkseagreen4":[105, 139, 105], 
382  "seagreen1":[84, 255, 159], 
383  "seagreen2":[78, 238, 148], 
384  "seagreen3":[67, 205, 128], 
385  "seagreen4":[46, 139, 87], 
386  "palegreen1":[154, 255, 154], 
387  "palegreen2":[144, 238, 144], 
388  "palegreen3":[124, 205, 124], 
389  "palegreen4":[84, 139, 84], 
390  "springgreen1":[0, 255, 127], 
391  "springgreen2":[0, 238, 118], 
392  "springgreen3":[0, 205, 102], 
393  "springgreen4":[0, 139, 69], 
394  "green1":[0, 255, 0], 
395  "green2":[0, 238, 0], 
396  "green3":[0, 205, 0], 
397  "green4":[0, 139, 0], 
398  "chartreuse1":[127, 255, 0], 
399  "chartreuse2":[118, 238, 0], 
400  "chartreuse3":[102, 205, 0], 
401  "chartreuse4":[69, 139, 0], 
402  "olivedrab1":[192, 255, 62], 
403  "olivedrab2":[179, 238, 58], 
404  "olivedrab3":[154, 205, 50], 
405  "olivedrab4":[105, 139, 34], 
406  "darkolivegreen1":[202, 255, 112], 
407  "darkolivegreen2":[188, 238, 104], 
408  "darkolivegreen3":[162, 205, 90], 
409  "darkolivegreen4":[110, 139, 61], 
410  "khaki1":[255, 246, 143], 
411  "khaki2":[238, 230, 133], 
412  "khaki3":[205, 198, 115], 
413  "khaki4":[139, 134, 78], 
414  "lightgoldenrod1":[255, 236, 139], 
415  "lightgoldenrod2":[238, 220, 130], 
416  "lightgoldenrod3":[205, 190, 112], 
417  "lightgoldenrod4":[139, 129, 76], 
418  "lightyellow1":[255, 255, 224], 
419  "lightyellow2":[238, 238, 209], 
420  "lightyellow3":[205, 205, 180], 
421  "lightyellow4":[139, 139, 122], 
422  "yellow1":[255, 255, 0], 
423  "yellow2":[238, 238, 0], 
424  "yellow3":[205, 205, 0], 
425  "yellow4":[139, 139, 0], 
426  "gold1":[255, 215, 0], 
427  "gold2":[238, 201, 0], 
428  "gold3":[205, 173, 0], 
429  "gold4":[139, 117, 0], 
430  "goldenrod1":[255, 193, 37], 
431  "goldenrod2":[238, 180, 34], 
432  "goldenrod3":[205, 155, 29], 
433  "goldenrod4":[139, 105, 20], 
434  "darkgoldenrod1":[255, 185, 15], 
435  "darkgoldenrod2":[238, 173, 14], 
436  "darkgoldenrod3":[205, 149, 12], 
437  "darkgoldenrod4":[139, 101, 8], 
438  "rosybrown1":[255, 193, 193], 
439  "rosybrown2":[238, 180, 180], 
440  "rosybrown3":[205, 155, 155], 
441  "rosybrown4":[139, 105, 105], 
442  "indianred1":[255, 106, 106], 
443  "indianred2":[238, 99, 99], 
444  "indianred3":[205, 85, 85], 
445  "indianred4":[139, 58, 58], 
446  "sienna1":[255, 130, 71], 
447  "sienna2":[238, 121, 66], 
448  "sienna3":[205, 104, 57], 
449  "sienna4":[139, 71, 38], 
450  "burlywood1":[255, 211, 155], 
451  "burlywood2":[238, 197, 145], 
452  "burlywood3":[205, 170, 125], 
453  "burlywood4":[139, 115, 85], 
454  "wheat1":[255, 231, 186], 
455  "wheat2":[238, 216, 174], 
456  "wheat3":[205, 186, 150], 
457  "wheat4":[139, 126, 102], 
458  "tan1":[255, 165, 79], 
459  "tan2":[238, 154, 73], 
460  "tan3":[205, 133, 63], 
461  "tan4":[139, 90, 43], 
462  "chocolate1":[255, 127, 36], 
463  "chocolate2":[238, 118, 33], 
464  "chocolate3":[205, 102, 29], 
465  "chocolate4":[139, 69, 19], 
466  "firebrick1":[255, 48, 48], 
467  "firebrick2":[238, 44, 44], 
468  "firebrick3":[205, 38, 38], 
469  "firebrick4":[139, 26, 26], 
470  "brown1":[255, 64, 64], 
471  "brown2":[238, 59, 59], 
472  "brown3":[205, 51, 51], 
473  "brown4":[139, 35, 35], 
474  "salmon1":[255, 140, 105], 
475  "salmon2":[238, 130, 98], 
476  "salmon3":[205, 112, 84], 
477  "salmon4":[139, 76, 57], 
478  "lightsalmon1":[255, 160, 122], 
479  "lightsalmon2":[238, 149, 114], 
480  "lightsalmon3":[205, 129, 98], 
481  "lightsalmon4":[139, 87, 66], 
482  "orange1":[255, 165, 0], 
483  "orange2":[238, 154, 0], 
484  "orange3":[205, 133, 0], 
485  "orange4":[139, 90, 0], 
486  "darkorange1":[255, 127, 0], 
487  "darkorange2":[238, 118, 0], 
488  "darkorange3":[205, 102, 0], 
489  "darkorange4":[139, 69, 0], 
490  "coral1":[255, 114, 86], 
491  "coral2":[238, 106, 80], 
492  "coral3":[205, 91, 69], 
493  "coral4":[139, 62, 47], 
494  "tomato1":[255, 99, 71], 
495  "tomato2":[238, 92, 66], 
496  "tomato3":[205, 79, 57], 
497  "tomato4":[139, 54, 38], 
498  "orangered1":[255, 69, 0], 
499  "orangered2":[238, 64, 0], 
500  "orangered3":[205, 55, 0], 
501  "orangered4":[139, 37, 0], 
502  "red1":[255, 0, 0], 
503  "red2":[238, 0, 0], 
504  "red3":[205, 0, 0], 
505  "red4":[139, 0, 0], 
506  "deeppink1":[255, 20, 147], 
507  "deeppink2":[238, 18, 137], 
508  "deeppink3":[205, 16, 118], 
509  "deeppink4":[139, 10, 80], 
510  "hotpink1":[255, 110, 180], 
511  "hotpink2":[238, 106, 167], 
512  "hotpink3":[205, 96, 144], 
513  "hotpink4":[139, 58, 98], 
514  "pink1":[255, 181, 197], 
515  "pink2":[238, 169, 184], 
516  "pink3":[205, 145, 158], 
517  "pink4":[139, 99, 108], 
518  "lightpink1":[255, 174, 185], 
519  "lightpink2":[238, 162, 173], 
520  "lightpink3":[205, 140, 149], 
521  "lightpink4":[139, 95, 101], 
522  "palevioletred1":[255, 130, 171], 
523  "palevioletred2":[238, 121, 159], 
524  "palevioletred3":[205, 104, 137], 
525  "palevioletred4":[139, 71, 93], 
526  "maroon1":[255, 52, 179], 
527  "maroon2":[238, 48, 167], 
528  "maroon3":[205, 41, 144], 
529  "maroon4":[139, 28, 98], 
530  "violetred1":[255, 62, 150], 
531  "violetred2":[238, 58, 140], 
532  "violetred3":[205, 50, 120], 
533  "violetred4":[139, 34, 82], 
534  "magenta1":[255, 0, 255], 
535  "magenta2":[238, 0, 238], 
536  "magenta3":[205, 0, 205], 
537  "magenta4":[139, 0, 139], 
538  "orchid1":[255, 131, 250], 
539  "orchid2":[238, 122, 233], 
540  "orchid3":[205, 105, 201], 
541  "orchid4":[139, 71, 137], 
542  "plum1":[255, 187, 255], 
543  "plum2":[238, 174, 238], 
544  "plum3":[205, 150, 205], 
545  "plum4":[139, 102, 139], 
546  "mediumorchid1":[224, 102, 255], 
547  "mediumorchid2":[209, 95, 238], 
548  "mediumorchid3":[180, 82, 205], 
549  "mediumorchid4":[122, 55, 139], 
550  "darkorchid1":[191, 62, 255], 
551  "darkorchid2":[178, 58, 238], 
552  "darkorchid3":[154, 50, 205], 
553  "darkorchid4":[104, 34, 139], 
554  "purple1":[155, 48, 255], 
555  "purple2":[145, 44, 238], 
556  "purple3":[125, 38, 205], 
557  "purple4":[85, 26, 139], 
558  "mediumpurple1":[171, 130, 255], 
559  "mediumpurple2":[159, 121, 238], 
560  "mediumpurple3":[137, 104, 205], 
561  "mediumpurple4":[93, 71, 139], 
562  "thistle1":[255, 225, 255], 
563  "thistle2":[238, 210, 238], 
564  "thistle3":[205, 181, 205], 
565  "thistle4":[139, 123, 139], 
566  "gray0":[0, 0, 0], 
567  "grey0":[0, 0, 0], 
568  "gray1":[3, 3, 3], 
569  "grey1":[3, 3, 3], 
570  "gray2":[5, 5, 5], 
571  "grey2":[5, 5, 5], 
572  "gray3":[8, 8, 8], 
573  "grey3":[8, 8, 8], 
574  "gray4":[10, 10, 10], 
575  "grey4":[10, 10, 10], 
576  "gray5":[13, 13, 13], 
577  "grey5":[13, 13, 13], 
578  "gray6":[15, 15, 15], 
579  "grey6":[15, 15, 15], 
580  "gray7":[18, 18, 18], 
581  "grey7":[18, 18, 18], 
582  "gray8":[20, 20, 20], 
583  "grey8":[20, 20, 20], 
584  "gray9":[23, 23, 23], 
585  "grey9":[23, 23, 23], 
586  "gray10":[26, 26, 26], 
587  "grey10":[26, 26, 26], 
588  "gray11":[28, 28, 28], 
589  "grey11":[28, 28, 28], 
590  "gray12":[31, 31, 31], 
591  "grey12":[31, 31, 31], 
592  "gray13":[33, 33, 33], 
593  "grey13":[33, 33, 33], 
594  "gray14":[36, 36, 36], 
595  "grey14":[36, 36, 36], 
596  "gray15":[38, 38, 38], 
597  "grey15":[38, 38, 38], 
598  "gray16":[41, 41, 41], 
599  "grey16":[41, 41, 41], 
600  "gray17":[43, 43, 43], 
601  "grey17":[43, 43, 43], 
602  "gray18":[46, 46, 46], 
603  "grey18":[46, 46, 46], 
604  "gray19":[48, 48, 48], 
605  "grey19":[48, 48, 48], 
606  "gray20":[51, 51, 51], 
607  "grey20":[51, 51, 51], 
608  "gray21":[54, 54, 54], 
609  "grey21":[54, 54, 54], 
610  "gray22":[56, 56, 56], 
611  "grey22":[56, 56, 56], 
612  "gray23":[59, 59, 59], 
613  "grey23":[59, 59, 59], 
614  "gray24":[61, 61, 61], 
615  "grey24":[61, 61, 61], 
616  "gray25":[64, 64, 64], 
617  "grey25":[64, 64, 64], 
618  "gray26":[66, 66, 66], 
619  "grey26":[66, 66, 66], 
620  "gray27":[69, 69, 69], 
621  "grey27":[69, 69, 69], 
622  "gray28":[71, 71, 71], 
623  "grey28":[71, 71, 71], 
624  "gray29":[74, 74, 74], 
625  "grey29":[74, 74, 74], 
626  "gray30":[77, 77, 77], 
627  "grey30":[77, 77, 77], 
628  "gray31":[79, 79, 79], 
629  "grey31":[79, 79, 79], 
630  "gray32":[82, 82, 82], 
631  "grey32":[82, 82, 82], 
632  "gray33":[84, 84, 84], 
633  "grey33":[84, 84, 84], 
634  "gray34":[87, 87, 87], 
635  "grey34":[87, 87, 87], 
636  "gray35":[89, 89, 89], 
637  "grey35":[89, 89, 89], 
638  "gray36":[92, 92, 92], 
639  "grey36":[92, 92, 92], 
640  "gray37":[94, 94, 94], 
641  "grey37":[94, 94, 94], 
642  "gray38":[97, 97, 97], 
643  "grey38":[97, 97, 97], 
644  "gray39":[99, 99, 99], 
645  "grey39":[99, 99, 99], 
646  "gray40":[102, 102, 102], 
647  "grey40":[102, 102, 102], 
648  "gray41":[105, 105, 105], 
649  "grey41":[105, 105, 105], 
650  "gray42":[107, 107, 107], 
651  "grey42":[107, 107, 107], 
652  "gray43":[110, 110, 110], 
653  "grey43":[110, 110, 110], 
654  "gray44":[112, 112, 112], 
655  "grey44":[112, 112, 112], 
656  "gray45":[115, 115, 115], 
657  "grey45":[115, 115, 115], 
658  "gray46":[117, 117, 117], 
659  "grey46":[117, 117, 117], 
660  "gray47":[120, 120, 120], 
661  "grey47":[120, 120, 120], 
662  "gray48":[122, 122, 122], 
663  "grey48":[122, 122, 122], 
664  "gray49":[125, 125, 125], 
665  "grey49":[125, 125, 125], 
666  "gray50":[127, 127, 127], 
667  "grey50":[127, 127, 127], 
668  "gray51":[130, 130, 130], 
669  "grey51":[130, 130, 130], 
670  "gray52":[133, 133, 133], 
671  "grey52":[133, 133, 133], 
672  "gray53":[135, 135, 135], 
673  "grey53":[135, 135, 135], 
674  "gray54":[138, 138, 138], 
675  "grey54":[138, 138, 138], 
676  "gray55":[140, 140, 140], 
677  "grey55":[140, 140, 140], 
678  "gray56":[143, 143, 143], 
679  "grey56":[143, 143, 143], 
680  "gray57":[145, 145, 145], 
681  "grey57":[145, 145, 145], 
682  "gray58":[148, 148, 148], 
683  "grey58":[148, 148, 148], 
684  "gray59":[150, 150, 150], 
685  "grey59":[150, 150, 150], 
686  "gray60":[153, 153, 153], 
687  "grey60":[153, 153, 153], 
688  "gray61":[156, 156, 156], 
689  "grey61":[156, 156, 156], 
690  "gray62":[158, 158, 158], 
691  "grey62":[158, 158, 158], 
692  "gray63":[161, 161, 161], 
693  "grey63":[161, 161, 161], 
694  "gray64":[163, 163, 163], 
695  "grey64":[163, 163, 163], 
696  "gray65":[166, 166, 166], 
697  "grey65":[166, 166, 166], 
698  "gray66":[168, 168, 168], 
699  "grey66":[168, 168, 168], 
700  "gray67":[171, 171, 171], 
701  "grey67":[171, 171, 171], 
702  "gray68":[173, 173, 173], 
703  "grey68":[173, 173, 173], 
704  "gray69":[176, 176, 176], 
705  "grey69":[176, 176, 176], 
706  "gray70":[179, 179, 179], 
707  "grey70":[179, 179, 179], 
708  "gray71":[181, 181, 181], 
709  "grey71":[181, 181, 181], 
710  "gray72":[184, 184, 184], 
711  "grey72":[184, 184, 184], 
712  "gray73":[186, 186, 186], 
713  "grey73":[186, 186, 186], 
714  "gray74":[189, 189, 189], 
715  "grey74":[189, 189, 189], 
716  "gray75":[191, 191, 191], 
717  "grey75":[191, 191, 191], 
718  "gray76":[194, 194, 194], 
719  "grey76":[194, 194, 194], 
720  "gray77":[196, 196, 196], 
721  "grey77":[196, 196, 196], 
722  "gray78":[199, 199, 199], 
723  "grey78":[199, 199, 199], 
724  "gray79":[201, 201, 201], 
725  "grey79":[201, 201, 201], 
726  "gray80":[204, 204, 204], 
727  "grey80":[204, 204, 204], 
728  "gray81":[207, 207, 207], 
729  "grey81":[207, 207, 207], 
730  "gray82":[209, 209, 209], 
731  "grey82":[209, 209, 209], 
732  "gray83":[212, 212, 212], 
733  "grey83":[212, 212, 212], 
734  "gray84":[214, 214, 214], 
735  "grey84":[214, 214, 214], 
736  "gray85":[217, 217, 217], 
737  "grey85":[217, 217, 217], 
738  "gray86":[219, 219, 219], 
739  "grey86":[219, 219, 219], 
740  "gray87":[222, 222, 222], 
741  "grey87":[222, 222, 222], 
742  "gray88":[224, 224, 224], 
743  "grey88":[224, 224, 224], 
744  "gray89":[227, 227, 227], 
745  "grey89":[227, 227, 227], 
746  "gray90":[229, 229, 229], 
747  "grey90":[229, 229, 229], 
748  "gray91":[232, 232, 232], 
749  "grey91":[232, 232, 232], 
750  "gray92":[235, 235, 235], 
751  "grey92":[235, 235, 235], 
752  "gray93":[237, 237, 237], 
753  "grey93":[237, 237, 237], 
754  "gray94":[240, 240, 240], 
755  "grey94":[240, 240, 240], 
756  "gray95":[242, 242, 242], 
757  "grey95":[242, 242, 242], 
758  "gray96":[245, 245, 245], 
759  "grey96":[245, 245, 245], 
760  "gray97":[247, 247, 247], 
761  "grey97":[247, 247, 247], 
762  "gray98":[250, 250, 250], 
763  "grey98":[250, 250, 250], 
764  "gray99":[252, 252, 252], 
765  "grey99":[252, 252, 252], 
766  "gray100":[255, 255, 255], 
767  "grey100":[255, 255, 255], 
768  "dark grey":[169, 169, 169], 
769  "darkgrey":[169, 169, 169], 
770  "dark gray":[169, 169, 169], 
771  "darkgray":[169, 169, 169], 
772  "dark blue":[0, 0, 139], 
773  "darkblue":[0, 0, 139], 
774  "dark cyan":[0, 139, 139], 
775  "darkcyan":[0, 139, 139], 
776  "dark magenta":[139, 0, 139], 
777  "darkmagenta":[139, 0, 139], 
778  "dark red":[139, 0, 0], 
779  "darkred":[139, 0, 0], 
780  "light green":[144, 238, 144], 
781  "lightgreen":[144, 238, 144], 
782  "olive":[128, 128, 0], 
783  "teal":[0, 128, 128]} 
784 785 786 -class Led():
787 blinkerThreads = [] 788 789 ''' 790 Class that represents a LED pair. 791 '''
792 - def __init__(self, id):
793 ''' 794 Creates a Led instance with given ID. 795 IDs of the double LEDs: 0: front, 1: left side , 2: rear, 3: right side. 796 The following global constants are defined: 797 LED_FRONT = 0, LED_LEFT = 1, LED_REAR = 2, RED_RIGHT = 3. 798 @param id: the LED identifier 799 ''' 800 self.id = id 801 self.robot = RobotInstance.getRobot() 802 self._blinkerThread = None 803 Tools.debug("Led instance with ID " + str(id) + " created")
804
805 - def setColor(self, *args):
806 ''' 807 Sets the RGB color value of the two LEDs with current ID. 808 @param args list of [red, green, blue] RGB color components 0..255 809 or three color integers 0..255 or X11-color string 810 ''' 811 self._checkRobot() 812 if len(args) == 1 and type(args[0]) == list: 813 red = int(args[0][0] / 255.0 * 4095) 814 green = int(args[0][1] / 255.0 * 4095) 815 blue = int(args[0][2] / 255.0 * 4095) 816 elif len(args) == 1 and type(args[0]) == str: 817 colorStr = args[0] 818 colorList = x11Colors[colorStr] 819 red = colorList[0] 820 green = colorList[1] 821 blue = colorList[2] 822 elif len(args) == 3: 823 red = int(args[0] / 255.0 * 4095) 824 green = int(args[1] / 255.0 * 4095) 825 blue = int(args[2] / 255.0 * 4095) 826 else: 827 raise ValueError("Illegal param in setColor()") 828 id = (self.id + 3) % 4 829 self.robot.pwm.setDuty(3 * id, blue) 830 self.robot.pwm.setDuty(3 * id + 1, green) 831 self.robot.pwm.setDuty(3 * id + 2, red)
832 833
834 - def startBlinker(self, onColor, offColor, onTime, offTime, count = 0, blocking = False):
835 ''' 836 Starts blinking with given onColor and offColor. The blinking period 837 is offTime + onTime. May be stopped by calling stopBlinker(). If blocking is False, the 838 function returns immediately while the blinking goes on. The blinking is stopped by setColor(). 839 @param onColor: color in on state. Must be X11 color string 840 @param offColor: color in off state. Must be X11 color string 841 @param onTime: the time in ms in on state 842 @param offTime: the time in ms in off state 843 @param count: total number of on states; 0 for endlessly (default) 844 @param blocking: if True, the method blocks until the blinker has finished; otherwise 845 it returns immediately (default: False) 846 ''' 847 self._checkRobot() 848 if self._blinkerThread != None: 849 self.stopBlinker() 850 self._blinkerThread = BlinkerThread(self, onColor, offColor, onTime, offTime, count) 851 Led.blinkerThreads.append(self._blinkerThread) 852 if blocking: 853 while self.isBlinkerAlive(): 854 continue
855
856 - def stopBlinker(self):
857 ''' 858 Stops blinking and turns the led off. 859 ''' 860 self._checkRobot() 861 if self._blinkerThread != None: 862 self._blinkerThread.stop()
863
864 - def isBlinkerAlive(self):
865 ''' 866 @return: True, if the blinker is displaying; otherwise False 867 ''' 868 self._checkRobot() 869 time.sleep(0.001) 870 return self._blinkerThread != None
871 872 @staticmethod
873 - def setColorAll(*args):
874 ''' 875 Sets the RGB color of all 4 LED pairs. 876 @param color list of [red, green, blue] RGB color components 0..255 877 or three color integers 0..255 or X11-color string 878 ''' 879 for blinkerThread in Led.blinkerThreads: 880 blinkerThread.stop() 881 leds = [Led(0), Led(1), Led(2), Led(3)] 882 for led in leds: 883 led.setColor(*args)
884 885 @staticmethod
886 - def clearAll():
887 ''' 888 Turns off all 4 LED pairs. 889 ''' 890 Led.setColorAll(0, 0, 0)
891
892 - def _checkRobot(self):
893 if RobotInstance.getRobot() == None: 894 raise Exception("Create Robot instance first")
895
896 897 898 # ------------------- class BlinkerThread ---------------------- 899 -class BlinkerThread(Thread):
900 - def __init__(self, led, onColor, offColor, onTime, offTime, count):
901 Thread.__init__(self) 902 self.led = led 903 self._onColor = onColor 904 self._offColor = offColor 905 self._onTime = onTime 906 self._offTime = offTime 907 self._count = count 908 self._isAlive = True 909 self.start()
910
911 - def run(self):
912 Tools.debug("Led blinker thread starting") 913 nb = 0 914 self._isRunning = True 915 while self._isRunning: 916 self.led.setColor(self._onColor) 917 startTime = time.time() 918 while time.time() - startTime < self._onTime / 1000.0 and self._isRunning: 919 time.sleep(0.001) 920 if not self._isRunning: 921 break 922 923 self.led.setColor(self._offColor) 924 startTime = time.time() 925 while time.time() - startTime < self._offTime / 1000.0 and self._isRunning: 926 time.sleep(0.001) 927 if not self._isRunning: 928 break 929 930 nb += 1 931 if nb == self._count: 932 self._isRunning = False 933 self.led.setColor(0, 0, 0) 934 self.led._blinkerThread = None 935 self._isAlive = False 936 Tools.debug("Led blinker thread finished")
937
938 - def stop(self):
939 self._isRunning = False 940 while self._isAlive: # Wait until thread is finished 941 continue
942