private void Start(LedChannelCount channelCount) { channels = (int)channelCount; currentValue = new BitArray(channels); for (var i = 0; i < channels; i++) { Leds.Add(new Led(this, i)); } if (oe != null) { oe.MakeDigitalPushPullOutAsync(); oe.DigitalValue = false; HasGlobalBrightnessControl = false; } else if (oePwm != null) { oePwm.EnablePwmAsync(); oePwm.PulseWidth = 0; HasGlobalBrightnessControl = true; } else { HasGlobalBrightnessControl = false; } HasIndividualBrightnessControl = false; Brightness = 1.0; // turn on the display }
/// <summary> /// Construct an LED shift register attached to the output of another shift register /// </summary> /// <param name="upstreamDevice">The upstream device this shift register is attached to</param> /// <param name="OutputEnablePin">The digital pin to use, if any, to control the display state</param> /// <param name="ChannelCount">The number of channels this LED shift register has</param> public LedShiftRegister(ChainableShiftRegisterOutput upstreamDevice, LedChannelCount ChannelCount = LedChannelCount.SixteenChannel, DigitalOut OutputEnablePin = null) : base( upstreamDevice, (int)ChannelCount / 8) { oe = OutputEnablePin; Start(ChannelCount); }
/// <summary> /// Construct an LED shift register attached to the output of another shift register /// </summary> /// <param name="upstreamDevice">The upstream device this shift register is attached to</param> /// <param name="OutputEnablePin">The PWM pin to use, if any, to control the display brightness</param> /// <param name="ChannelCount">The number of channels this LED shift register has</param> public LedShiftRegister(ChainableShiftRegisterOutput upstreamDevice, Pwm OutputEnablePin, LedChannelCount ChannelCount = LedChannelCount.SixteenChannel) : base(upstreamDevice, (int)ChannelCount / 8) { oePwm = OutputEnablePin; Start(ChannelCount); }
/// <summary> /// Construct an LED shift register attached directly to a board SPI module /// </summary> /// <param name="SpiModule">The board's SPI module</param> /// <param name="LatchPin">The pin to use for latches</param> /// <param name="OutputEnablePin">The PWM pin to use, allowing controllable global brightness.</param> /// <param name="ChannelCount">The number of channels this LED shift register has</param> /// <param name="speedMhz">The speed, in MHz, to use when communicating</param> public LedShiftRegister(Spi SpiModule, SpiChipSelectPin LatchPin, Pwm OutputEnablePin, LedChannelCount ChannelCount = LedChannelCount.SixteenChannel, double speedMhz = 6) : base(SpiModule, LatchPin, (int)ChannelCount / 8, speedMhz) { oePwm = OutputEnablePin; Start(ChannelCount); }