private static void ShiftRegisterCounter() { var shiftRegisters = new ShiftRegister( Pi3Pins.Gpio17.Prepare(), // signal (SER - chip pin 14) Pi3Pins.Gpio27.Prepare(), // signal clock (SRCLK - chip pin 11) Pi3Pins.Gpio22.Prepare(), // register clock (RCLK - chip pin 12) Pi3Pins.Gpio18.Prepare(), // clear (SRCLR - chip pin 10 - Important: tie this high if not connected to Pi!) Pi3Pins.Gpio23.Prepare(), // enabled (OE - chip pin 13) 3); // 3 chips to demo chaining, see readme.md for (var i = 0; i < 8; i++) // demo looping through first chips outputs { shiftRegisters.Clear(); shiftRegisters[i] = true; Thread.Sleep(1000); } shiftRegisters.Clear(); shiftRegisters[0] = true; // turns on Pin 15 on the first chip immediately Thread.Sleep(100); shiftRegisters[1] = true; // turns on Pin 1 on the first chip immediately Thread.Sleep(100); shiftRegisters[2] = true; // turns on Pin 2 on the first chip immediately Thread.Sleep(100); shiftRegisters[3] = true; // turns on Pin 3 on the first chip immediately shiftRegisters.AutoCommit = false; // disabled AutoCommit to set multiple values at once shiftRegisters.Clear(); shiftRegisters[4] = true; // turns on Pin 4 on the first chip immediately Thread.Sleep(100); shiftRegisters[5] = true; // turns on Pin 5 on the first chip immediately Thread.Sleep(100); shiftRegisters[6] = true; // turns on Pin 6 on the first chip immediately Thread.Sleep(100); shiftRegisters[7] = true; // turns on Pin 7 on the first chip immediately Thread.Sleep(100); shiftRegisters[8] = true; // Pin 15 on the second chip Thread.Sleep(100); shiftRegisters[16] = true; // Pin 15 on the third chip shiftRegisters.Commit(); // turns on the above pins simultaneously }
public void ClearSpikesOutputWhileClearIsOn() { //arrange var enabled = new PinStub(1); var data = new PinStub(2); var shift = new PinStub(3); var output = Substitute.For <IPinInterface>(); var clear = Substitute.For <IPinInterface>(); var register = new ShiftRegister(enabled, data, shift, output, clear); //act register.Clear(); //assert clear.Received().TurnOn(); output.Received().Spike(); clear.Received().TurnOff(); }