public static void GpioAnimatioOneAtTheTime(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 sr.SetGpioMask(ShiftRegister74HC595.ExGpio.None); for (int i = 0; i < sr.MaxGpio; i++) { var g = sr.GetGpioFromIndex(i + sr.MinGpioIndex); Console.WriteLine(g); sr.SetGpioMask(g); Thread.Sleep(waitTime); if (Console.KeyAvailable) { return; } } for (int i = sr.MaxGpio - 1; i >= 0; i--) { var g = sr.GetGpioFromIndex(i + sr.MinGpioIndex); Console.WriteLine(g); sr.SetGpioMask(g); Thread.Sleep(waitTime); if (Console.KeyAvailable) { return; } } sr.SetGpioMask(0); Thread.Sleep(waitTime * 10); }
public static void TestSetting16bitAtOnce(Nusbio nusbio, ShiftRegister74HC595 sr, int waitTime) { Console.Clear(); ConsoleEx.TitleBar(0, GetAssemblyProduct() + " 16 bit value demo", ConsoleColor.Yellow, ConsoleColor.DarkBlue); ConsoleEx.Gotoxy(0, 3); //sr.TestPins(); sr.Reset(); var p1 = 1; var p2 = 256; for (var i = 0; i < 8; i++) { sr.SetGpioMask(p1 + p2); //sr.SetDataLinesAndAddrLines((byte)p1, (byte)(p2 >> 8)); //sr.SetGpioMask((byte)p1, (byte)(p2 >> 8)); Console.WriteLine("16 bite value:{0:000000} - {1} {2}", p1 + p2, MadeInTheUSB.WinUtil.BitUtil.BitRpr(p1), MadeInTheUSB.WinUtil.BitUtil.BitRpr(p2 >> 8) ); Thread.Sleep(waitTime); p1 *= 2; p2 *= 2; } Console.WriteLine("---"); Thread.Sleep(waitTime); sr.SetGpioMask(0); p1 = 1; p2 = 256; var pp1 = p1; var pp2 = p2; for (var i = 0; i < 8; i++) { //sr.SetGpioMask(pp1 + pp2); sr.SetGpioMask((byte)pp1, (byte)(pp2 >> 8)); Console.WriteLine("16 bite value:{0:000000} - {1} {2}", pp1 + pp2, MadeInTheUSB.WinUtil.BitUtil.BitRpr(pp1), MadeInTheUSB.WinUtil.BitUtil.BitRpr(pp2 >> 8) ); Thread.Sleep(waitTime); p1 *= 2; p2 *= 2; pp1 += p1; pp2 += p2; } Console.WriteLine("Hit any key to continue"); Console.ReadKey(); sr.SetGpioMask(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); }