コード例 #1
0
        /// <summary>
        /// Waits for a pin to reach the specified state, then measures the time it remains in this state.
        /// </summary>
        /// <param name="pin">The measure pin.</param>
        /// <param name="waitForUp">if set to <c>true</c>, wait for the pin to be up.</param>
        /// <param name="phase1Timeout">The first phase timeout.</param>
        /// <param name="phase2Timeout">The second phase timeout.</param>
        /// <returns>
        /// The time the pin remains up, in milliseconds.
        /// </returns>
        public static decimal Time(this IInputBinaryPin pin, bool waitForUp = true, decimal phase1Timeout = 0, decimal phase2Timeout = 0)
        {
            pin.Wait(waitForUp, phase1Timeout);

            var waitDown = DateTime.Now.Ticks;

            pin.Wait(!waitForUp, phase2Timeout);

            return((DateTime.Now.Ticks - waitDown) / 10000m);
        }
コード例 #2
0
        /// <summary>
        /// Waits for a pin to reach the specified state, then measures the time it remains in this state.
        /// </summary>
        /// <param name="pin">The measure pin.</param>
        /// <param name="waitForUp">if set to <c>true</c>, wait for the pin to be up.</param>
        /// <param name="phase1Timeout">The first phase timeout.</param>
        /// <param name="phase2Timeout">The second phase timeout.</param>
        /// <returns>
        /// The time the pin remains up, in milliseconds.
        /// </returns>
        public static TimeSpan Time(this IInputBinaryPin pin, bool waitForUp = true, TimeSpan phase1Timeout = default(TimeSpan), TimeSpan phase2Timeout = default(TimeSpan))
        {
            pin.Wait(waitForUp, phase1Timeout);

            var waitDown = DateTime.UtcNow;

            pin.Wait(!waitForUp, phase2Timeout);

            return(DateTime.UtcNow - waitDown);
        }
コード例 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="HcSr04Connection"/> class.
        /// </summary>
        /// <param name="triggerPin">The trigger pin.</param>
        /// <param name="echoPin">The echo pin.</param>
        public HcSr04Connection(IOutputBinaryPin triggerPin, IInputBinaryPin echoPin)
        {
            this.triggerPin = triggerPin;
            this.echoPin = echoPin;

            Timeout = DefaultTimeout;

            try
            {
                GetDistance();
            } catch {}
        }
コード例 #4
0
ファイル: HcSr04Connection.cs プロジェクト: pi-dotnet/Pi
        /// <summary>
        /// Initializes a new instance of the <see cref="HcSr04Connection"/> class.
        /// </summary>
        /// <param name="triggerPin">The trigger pin.</param>
        /// <param name="echoPin">The echo pin.</param>
        public HcSr04Connection(IOutputBinaryPin triggerPin, IInputBinaryPin echoPin)
        {
            this.triggerPin = triggerPin;
            this.echoPin    = echoPin;

            Timeout = DefaultTimeout;

            try
            {
                GetDistance();
            } catch {}
        }
コード例 #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SpiConnection"/> class.
        /// </summary>
        /// <param name="clockPin">The clock pin.</param>
        /// <param name="selectSlavePin">The select slave pin.</param>
        /// <param name="misoPin">The miso pin.</param>
        /// <param name="mosiPin">The mosi pin.</param>
        /// <param name="endianness">The endianness.</param>
        public SpiConnection(IOutputBinaryPin clockPin, IOutputBinaryPin selectSlavePin, IInputBinaryPin misoPin, IOutputBinaryPin mosiPin, Endianness endianness)
        {
            this.clockPin = clockPin;
            this.selectSlavePin = selectSlavePin;
            this.misoPin = misoPin;
            this.mosiPin = mosiPin;
            this.endianness = endianness;

            clockPin.Write(false);
            selectSlavePin.Write(true);

            if (mosiPin != null)
                mosiPin.Write(false);
            }
コード例 #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SpiConnection"/> class.
        /// </summary>
        /// <param name="clockPin">The clock pin.</param>
        /// <param name="selectSlavePin">The select slave pin.</param>
        /// <param name="misoPin">The miso pin.</param>
        /// <param name="mosiPin">The mosi pin.</param>
        /// <param name="endianness">The endianness.</param>
        public SpiConnection(IOutputBinaryPin clockPin, IOutputBinaryPin selectSlavePin, IInputBinaryPin misoPin, IOutputBinaryPin mosiPin, Endianness endianness)
        {
            this.clockPin       = clockPin;
            this.selectSlavePin = selectSlavePin;
            this.misoPin        = misoPin;
            this.mosiPin        = mosiPin;
            this.endianness     = endianness;

            clockPin.Write(false);
            selectSlavePin.Write(true);

            if (mosiPin != null)
            {
                mosiPin.Write(false);
            }
        }
コード例 #7
0
ファイル: HcSr04Device.cs プロジェクト: hugener/Pi
        /// <summary>
        /// Initializes a new instance of the <see cref="HcSr04Device" /> class.
        /// </summary>
        /// <param name="triggerPin">The trigger pin.</param>
        /// <param name="echoPin">The echo pin.</param>
        /// <param name="threadFactory">The thread factory.</param>
        public HcSr04Device(IOutputBinaryPin triggerPin, IInputBinaryPin echoPin, IThreadFactory threadFactory = null)
        {
            this.triggerPin = triggerPin;
            this.echoPin    = echoPin;
            this.thread     = ThreadFactory.EnsureThreadFactory(threadFactory).Create();

            this.SetTimeout(DefaultTimeout);

            try
            {
                this.GetDistance();
            }
            catch
            {
            }
        }
コード例 #8
0
ファイル: SpiConnection.cs プロジェクト: hugener/Pi
        /// <summary>
        /// Initializes a new instance of the <see cref="SpiConnection" /> class.
        /// </summary>
        /// <param name="clockPin">The clock pin.</param>
        /// <param name="selectSlavePin">The select slave pin.</param>
        /// <param name="misoPin">The miso pin.</param>
        /// <param name="mosiPin">The mosi pin.</param>
        /// <param name="endianness">The endianness.</param>
        /// <param name="threadFactory">The thread factory.</param>
        public SpiConnection(
            IOutputBinaryPin clockPin,
            IOutputBinaryPin selectSlavePin,
            IInputBinaryPin misoPin,
            IOutputBinaryPin mosiPin,
            Endianness endianness        = Endianness.LittleEndian,
            IThreadFactory threadFactory = null)
        {
            this.clockPin       = clockPin;
            this.selectSlavePin = selectSlavePin;
            this.misoPin        = misoPin;
            this.mosiPin        = mosiPin;
            this.endianness     = endianness;
            this.thread         = ThreadFactory.EnsureThreadFactory(threadFactory).Create();

            clockPin.Write(false);
            selectSlavePin.Write(true);

            mosiPin?.Write(false);
        }
コード例 #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Mcp3208SpiConnection"/> class.
 /// </summary>
 /// <param name="clockPin">The clock pin.</param>
 /// <param name="slaveSelectPin">The slave select pin.</param>
 /// <param name="misoPin">The miso pin.</param>
 /// <param name="mosiPin">The mosi pin.</param>
 public Mcp3208SpiConnection(IOutputBinaryPin clockPin, IOutputBinaryPin slaveSelectPin, IInputBinaryPin misoPin, IOutputBinaryPin mosiPin)
 {
     spiConnection = new SpiConnection(clockPin, slaveSelectPin, misoPin, mosiPin, Endianness.LittleEndian);
 }
コード例 #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Mcp3208Device"/> class.
 /// </summary>
 /// <param name="clockPin">The clock pin.</param>
 /// <param name="slaveSelectPin">The slave select pin.</param>
 /// <param name="misoPin">The miso pin.</param>
 /// <param name="mosiPin">The mosi pin.</param>
 public Mcp3208Device(IOutputBinaryPin clockPin, IOutputBinaryPin slaveSelectPin, IInputBinaryPin misoPin, IOutputBinaryPin mosiPin)
 {
     this.spiConnection = new SpiConnection(clockPin, slaveSelectPin, misoPin, mosiPin, Endianness.LittleEndian);
 }
コード例 #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Mcp3202SpiConnection"/> class.
 /// </summary>
 /// <param name="clockPin">The clock pin.</param>
 /// <param name="slaveSelectPin">The slave select pin.</param>
 /// <param name="misoPin">The miso pin.</param>
 /// <param name="mosiPin">The mosi pin.</param>
 public Mcp3202SpiConnection(IOutputBinaryPin clockPin, IOutputBinaryPin slaveSelectPin, IInputBinaryPin misoPin, IOutputBinaryPin mosiPin, decimal maxValue = 1m)
 {
     _spiConnection = new SpiConnection(clockPin, slaveSelectPin, misoPin, mosiPin, Endianness.LittleEndian);
     _maxValue = maxValue;
 }
コード例 #12
0
 public UltrasonicDistanceSensor(int[] pin)
 {
     triggerPin = driver.Out(Utilities.getPin(pin[0]));
     echoPin    = driver.In(Utilities.getPin(pin[1]));
 }