// Serial-In-Parallel-Out private void WriteSIPO(byte b) { for (int i = 8; i >= 1; i--) { PinDIO.Write((b & 0x80) > 0 ? GpioPinValue.High : GpioPinValue.Low); b <<= 1; PulseSCLK(); } }
/// <summary> /// Create a new instance of LED74HC595Driver /// </summary> /// <param name="dioPin">DIO Pin Number</param> /// <param name="rclkPin">RCLK Pin Number</param> /// <param name="sclkPin">SCLK Pin Number</param> public LED74HC595Driver(int dioPin, int rclkPin, int sclkPin) { var gpio = GpioController.GetDefault(); // setup the pins PinDIO = gpio.OpenPin(dioPin); PinDIO.SetDriveMode(GpioPinDriveMode.Output); PinRCLK = gpio.OpenPin(rclkPin); PinRCLK.SetDriveMode(GpioPinDriveMode.Output); PinSCLK = gpio.OpenPin(sclkPin); PinSCLK.SetDriveMode(GpioPinDriveMode.Output); // initialize the pins to low PinDIO.Write(GpioPinValue.Low); PinRCLK.Write(GpioPinValue.Low); PinSCLK.Write(GpioPinValue.Low); }