/** * <summary> * Retrieves a RGB LED cluster for a given identifier. * <para> * The identifier can be specified using several formats: * </para> * <para> * </para> * <para> * - FunctionLogicalName * </para> * <para> * - ModuleSerialNumber.FunctionIdentifier * </para> * <para> * - ModuleSerialNumber.FunctionLogicalName * </para> * <para> * - ModuleLogicalName.FunctionIdentifier * </para> * <para> * - ModuleLogicalName.FunctionLogicalName * </para> * <para> * </para> * <para> * This function does not require that the RGB LED cluster is online at the time * it is invoked. The returned object is nevertheless valid. * Use the method <c>YColorLedCluster.isOnline()</c> to test if the RGB LED cluster is * indeed online at a given time. In case of ambiguity when looking for * a RGB LED cluster by logical name, no error is notified: the first instance * found is returned. The search is performed first by hardware name, * then by logical name. * </para> * </summary> * <param name="func"> * a string that uniquely characterizes the RGB LED cluster * </param> * <returns> * a <c>YColorLedCluster</c> object allowing you to drive the RGB LED cluster. * </returns> */ public static YColorLedCluster FindColorLedCluster(string func) { YColorLedCluster obj; obj = (YColorLedCluster)YFunction._FindFromCache("ColorLedCluster", func); if (obj == null) { obj = new YColorLedCluster(func); YFunction._AddToCache("ColorLedCluster", func, obj); } return(obj); }
public override async Task <int> Run() { try { await YAPI.RegisterHub(HubURL); YBuzzer buz; YColorLedCluster leds; YQuadratureDecoder qd; YAnButton button; if (Target.ToLower() == "any") { buz = YBuzzer.FirstBuzzer(); if (buz == null) { WriteLine("No module connected (check USB cable) "); return(-1); } } else { buz = YBuzzer.FindBuzzer(Target + ".buzzer"); } if (!await buz.isOnline()) { WriteLine("Module not connected (check identification and USB cable)"); return(-1); } string serial = await(await buz.get_module()).get_serialNumber(); leds = YColorLedCluster.FindColorLedCluster(serial + ".colorLedCluster"); button = YAnButton.FindAnButton(serial + ".anButton1"); qd = YQuadratureDecoder.FindQuadratureDecoder(serial + ".quadratureDecoder1"); if ((!await button.isOnline()) || (!await qd.isOnline())) { WriteLine("Make sure the Yocto-MaxiBuzzer is configured with at least one anButton and one quadrature Decoder"); return(-1); } WriteLine("press a test button, or turn the encoder or hit Ctrl-C"); int lastPos = (int)await qd.get_currentValue(); await buz.set_volume(75); while (await button.isOnline()) { if ((await button.get_isPressed() == YAnButton.ISPRESSED_TRUE) && (lastPos != 0)) { lastPos = 0; await qd.set_currentValue(0); await buz.playNotes("'E32 C8"); await leds.set_rgbColor(0, 1, 0x000000); } else { int p = (int)await qd.get_currentValue(); if (lastPos != p) { lastPos = p; await buz.pulse(notefreq(p), 500); await leds.set_hslColor(0, 1, 0x00FF7f | (p % 255) << 16); } } } } catch (YAPI_Exception ex) { WriteLine("error: " + ex.Message); } YAPI.FreeAPI(); return(0); }
public override async Task <int> Run() { try { await YAPI.RegisterHub(HubURL); YColorLedCluster ledCluster; int color; ColorStr = ColorStr.ToUpper(); if (ColorStr == "RED") { color = 0xFF0000; } else if (ColorStr == "GREEN") { color = 0x00FF00; } else if (ColorStr == "BLUE") { color = 0x0000FF; } else { color = Convert.ToInt32("0x" + ColorStr, 16); } if (Target.ToLower() == "any") { ledCluster = YColorLedCluster.FirstColorLedCluster(); if (ledCluster == null) { WriteLine("No module connected (check USB cable) "); return(-1); } } else { ledCluster = YColorLedCluster.FindColorLedCluster(Target + ".colorLedCluster"); } if (await ledCluster.isOnline()) { //configure led cluster int nb_leds = 62; await ledCluster.set_activeLedCount(nb_leds); await ledCluster.set_ledType(YColorLedCluster.LEDTYPE_RGB); // immediate transition for fist half of leds WriteLine("immediate switch to " + color.ToString("x")); await ledCluster.set_rgbColor(0, nb_leds / 2, color); // immediate transition for second half of leds WriteLine("smooth transition to " + color.ToString("x")); await ledCluster.rgb_move(nb_leds / 2, nb_leds / 2, color, 2000); } else { WriteLine("Module not connected (check identification and USB cable)"); } } catch (YAPI_Exception ex) { WriteLine("error: " + ex.Message); } YAPI.FreeAPI(); return(0); }
static void Main(string[] args) { string errmsg = ""; string target; YColorLedCluster ledCluster; string color_str; int color; if (args.Length < 2) { usage(); } target = args[0].ToUpper(); color_str = args[1].ToUpper(); if (color_str == "RED") { color = 0xFF0000; } else if (color_str == "GREEN") { color = 0x00FF00; } else if (color_str == "BLUE") { color = 0x0000FF; } else { color = Convert.ToInt32("0x" + color_str, 16); } if (YAPI.RegisterHub("usb", ref errmsg) != YAPI.SUCCESS) { Console.WriteLine("RegisterHub error: " + errmsg); Environment.Exit(0); } if (target == "ANY") { ledCluster = YColorLedCluster.FirstColorLedCluster(); if (ledCluster == null) { Console.WriteLine("No module connected (check USB cable) "); Environment.Exit(0); } } else { string hwid = target + ".colorLedCluster"; ledCluster = YColorLedCluster.FindColorLedCluster(hwid); } if (!ledCluster.isOnline()) { Console.WriteLine("Module not connected"); Console.WriteLine("check identification and USB cable"); Environment.Exit(0); } //configure led cluster int nb_leds = 2; ledCluster.set_activeLedCount(nb_leds); ledCluster.set_ledType(YColorLedCluster.LEDTYPE_RGB); // immediate transition for fist half of leds ledCluster.set_rgbColor(0, nb_leds / 2, color); // immediate transition for second half of leds ledCluster.rgb_move(nb_leds / 2, nb_leds / 2, color, 2000); YAPI.FreeAPI(); }