/// <summary> /// Invia i bit in uscita /// </summary> public void OutBits() { for (int i = (bit.Length - 1); i >= 0; i--) { if (bit[i]) { _pinData.Write(GpioPinValue.High); } else { _pinData.Write(GpioPinValue.Low); } //Wait(); _pinClock.Write(GpioPinValue.High); //Wait(); _pinClock.Write(GpioPinValue.Low); //Wait(); } _pinLatch.Write(GpioPinValue.High); //Wait(); _pinLatch.Write(GpioPinValue.Low); }
/// <summary> /// Inizializzazione /// </summary> /// <param name="bits">Numero di bit: 8 X Numero di integrati 74HC595</param> /// <param name="dataPin">Porta linea dati DS Pin 14 del 74HC595</param> /// <param name="clockPin">Porta linea clock SH_CP Pin 11 del 74HC595</param> /// <param name="latchPin">Porta linea latch ST_CP Pin 12 del 74HC595</param> public OutShiftRegister(int numBits, int dataPin, int clockPin, int latchPin) { if (numBits <= 0) { throw new IndexOutOfRangeException("ShiftRegister: numero di bit < 0"); } _pinData = new DigitalIO(dataPin, GpioPinDriveMode.Output); _pinClock = new DigitalIO(clockPin, GpioPinDriveMode.Output); _pinLatch = new DigitalIO(latchPin, GpioPinDriveMode.Output); _pinData.Write(GpioPinValue.Low); _pinClock.Write(GpioPinValue.Low); _pinLatch.Write(GpioPinValue.Low); bit = new bool[numBits]; OutResetBits(); }