/// <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();
        }
예제 #2
0
        private int _fase;                        // Numero di fase
        /// <summary>
        /// inizializzazione dispositivo
        /// </summary>
        /// <param name="portaEndStopOrario">Porta collegata all fine corsa sulla rotazione oraria false quando premuto</param>
        /// <param name="portaEndStopAntiOrario">Porta collegata all fine corsa sulla rotazione anti-oraria false quando premuto</param>
        public StepMotorEndStopShift(
            OutShiftRegister shift,
            int bitA1,
            int bitA2,
            int bitB1,
            int bitB2,
            int portaEndStopOrario,
            int portaEndStopAntiOrario)
        {
            _shift = shift;
            _bitA1 = bitA1;
            _bitA2 = bitA2;
            _bitB1 = bitB1;
            _bitB2 = bitB2;

            //var gpio = GpioController.GetDefault();
            //if (gpio == null) throw new Exception("GPIO Initialization Failed");

            _endStopOr = new DigitalIO(portaEndStopOrario, GpioPinDriveMode.InputPullUp);
            _endStopAn = new DigitalIO(portaEndStopAntiOrario, GpioPinDriveMode.InputPullUp);

            _fase = 0;
            Folle();
        }