示例#1
0
 private void SetAddressWithShiftRegister(int addr)
 {
     for (var i = 0; i < this._addressLines.Count; i++)
     {
         var bit            = 1 << i;
         var turnBitOnOrOff = (addr & bit) == bit;
         _sr.DigitalWrite(ShiftRegisterAddressGpioStart + i, turnBitOnOrOff ? GPIO.PinState.High : GPIO.PinState.Low);
     }
 }
示例#2
0
        public static void GpioAnimation(Nusbio nusbio, ShiftRegister74HC595 sr, int waitTime, bool demoGpio3to7Too = false)
        {
            // Gpio 0,1,2 are used to control the 2 shift register 74HC595, but we can use the other 5
            var nusbioGpioLeft = new List <NusbioGpio>()
            {
                NusbioGpio.Gpio3, NusbioGpio.Gpio4, NusbioGpio.Gpio5, NusbioGpio.Gpio6, NusbioGpio.Gpio7,
            };

            sr.SetGpioMask(ShiftRegister74HC595.ExGpio.None);

            if (!demoGpio3to7Too)
            {
                GpioAnimatioOneAtTheTime(nusbio, sr, waitTime, demoGpio3to7Too);
            }
            if (demoGpio3to7Too) // Demo internal nusbio gpio 3..7 also
            {
                for (int i = 0; i < nusbioGpioLeft.Count; i++)
                {
                    nusbio[nusbioGpioLeft[i]].DigitalWrite(PinState.High);
                    Console.WriteLine(nusbioGpioLeft[i]);
                    Thread.Sleep(waitTime);
                    if (Console.KeyAvailable)
                    {
                        return;
                    }
                }
            }
            for (int i = 0; i < sr.GetGpioEnums().Count; i++)
            {
                sr.DigitalWrite(i + sr.MinGpioIndex, PinState.High);
                Console.WriteLine(sr.GpioStates);
                Thread.Sleep(waitTime);
                if (Console.KeyAvailable)
                {
                    return;
                }
            }
            for (int i = sr.GetGpioEnums().Count - 1; i >= 0; i--)
            {
                sr.DigitalWrite(i + sr.MinGpioIndex, PinState.Low);
                Console.WriteLine(sr.GpioStates);
                Thread.Sleep(waitTime);
                if (Console.KeyAvailable)
                {
                    return;
                }
            }

            if (demoGpio3to7Too)
            {
                for (int i = nusbioGpioLeft.Count - 1; i >= 0; i--)
                {
                    nusbio[nusbioGpioLeft[i]].DigitalWrite(PinState.Low);
                    Console.WriteLine(nusbioGpioLeft[i]);
                    Thread.Sleep(waitTime);
                    if (Console.KeyAvailable)
                    {
                        return;
                    }
                }
            }
            sr.SetGpioMask(0);
        }