예제 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Button"/> class.
 /// </summary>
 /// <param name="gpioPin">The gpio pin.</param>
 /// <param name="pullMode">The input pull mode.</param>
 public Button(IGpioPin gpioPin, GpioPinResistorPullMode pullMode = GpioPinResistorPullMode.PullDown)
 {
     _gpioPin = gpioPin;
     _gpioPin.InputPullMode = pullMode;
     _gpioPin.PinMode       = GpioPinDriveMode.Input;
     _gpioPin.RegisterInterruptCallback(EdgeDetection.FallingAndRisingEdge, HandleInterrupt);
 }
예제 #2
0
        public static void Init()
        {
            _device75 = new I2C(0x75);
            if (I2C.I2CGlobalError)
            {
                return;
            }

            _device75.Write(6, 0xFBF8); //0x0100
            _device75.Read(0);

            _interputPin         = Pi.Gpio[30];
            _interputPin.PinMode = GpioPinDriveMode.Input;
            _interputPin.RegisterInterruptCallback(EdgeDetection.FallingEdge, ButtonPressCallback);
        }
예제 #3
0
        public Task StartAsync(CancellationToken stoppingToken)
        {
            logger.Log(LogLevel.Information, "Started monitor");
            var libraryItem = new LibraryItem(-1, Path.Combine(AppDirectory, StartupFileName), bassActor);

            if (playerActor.PlaybackState == PlaybackState.Stopped)
            {
                playerActor.Play(libraryItem);
            }

            Pi.Init <BootstrapWiringPi>();
            pin         = Pi.Gpio[BcmPin.Gpio03];
            pin.PinMode = GpioPinDriveMode.Input;
            pin.RegisterInterruptCallback(EdgeDetection.FallingEdge, ISRCallback);
            return(Task.CompletedTask);
        }
예제 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LogicProbe"/> class.
        /// </summary>
        /// <param name="inputPin">The input pin.</param>
        public LogicProbe(IGpioPin inputPin)
        {
            _inputPin               = inputPin;
            _inputPin.PinMode       = GpioPinDriveMode.Input;
            _inputPin.InputPullMode = GpioPinResistorPullMode.PullUp;

            _inputPin.RegisterInterruptCallback(EdgeDetection.FallingAndRisingEdge, () =>
            {
                if (_timer.IsRunning == false)
                {
                    return;
                }

                var value   = _inputPin.Read();
                var elapsed = _timer.ElapsedMicroseconds;
                var data    = new ProbeDataEventArgs(elapsed, value);
                ProbeDataAvailable?.Invoke(this, data);
            });
        }