/// <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); }
/// <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); }
/// <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 {} }
/// <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); }
/// <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); } }
/// <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 { } }
/// <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); }
/// <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); }
/// <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); }
/// <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; }
public UltrasonicDistanceSensor(int[] pin) { triggerPin = driver.Out(Utilities.getPin(pin[0])); echoPin = driver.In(Utilities.getPin(pin[1])); }