Beispiel #1
0
        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
        }
Beispiel #2
0
    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();
    }