2017-12-08 3 views
-1

Ich entwickle IoT-basierte Anwendungen mit Raspberry PI 3. Ich einige Zweifel habe, während einfache Anwendung IoT basierte Prototypen zu entwickeln:Wenn ich zwei PIR-Sensoren habe, wie kann ich die GPIOvaluecChangedEvents registrieren?

  1. ich zum Erfassen der Bewegung des Objekts Einzel PIR-Sensor verwendet wird, für die ich die GPIOValueChagendEvent schrieb , aber dieses Ereignis wird nur ausgelöst, wenn sich der Wert des PIR-Bewegungssensors ändert.
  2. Aber wenn ich zwei PIR-Sensoren habe, ist es möglich, das eine mehr GPIOValueChangedEvent zu schreiben. Wenn ja, können Sie näher erläutern, wie der Beispielcode mit C#
  3. geschrieben wird. Angenommen, zwei PIR-Sensoren würden gleichzeitig die Bewegung des Objekts erkennen, was dann passiert.

Antwort

0
  1. I für die einzelnen PIR-Sensor verwendet, um die Bewegung des Objekts zum Erfassen ich das GPIOValueChagendEvent geschrieben, aber dieses Ereignis wird nur ausgelöst, wenn der PIR-Bewegungsmelder Wert geändert.

Das ValueChanged Ereignis der Allzweck-I/O (GPIO) tritt auf, wenn der Wert des Stiftes ändert, entweder wegen eines äußeren Reizes, wenn der Stift als ein Eingang konfiguriert ist, oder wenn ein Wert ist auf den Pin geschrieben, wenn der Pin als Ausgang konfiguriert ist.

  1. Aber wenn ich zwei PIR-Sensoren ist es möglich, die ein mehr GPIOValueChangedEvent zu schreiben. Wenn ja, können Sie das näher erläutern, wie der Beispielcode mit C#

Ja zu schreiben, ist es möglich, das zu tun. Bitte beachten Sie den folgenden Code mit PirSensor Class.

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     var pirS1 = new PirSensor(17, PirSensor.SensorType.ActiveHigh); 
     pirS1.motionDetected += new EventHandler<Windows.Devices.Gpio.GpioPinValueChangedEventArgs>(OnPirSensor1MotionDetected); 

     var pirS2 = new PirSensor(27, PirSensor.SensorType.ActiveHigh); 
     pirS2.motionDetected += new EventHandler<Windows.Devices.Gpio.GpioPinValueChangedEventArgs>(OnPirSensor2MotionDetected); 
    } 

    private async void OnPirSensor1MotionDetected(object sender, Windows.Devices.Gpio.GpioPinValueChangedEventArgs earg) 
    { 
     await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, 
      () => 
      { 
       // Your UI update code goes here! 
       pirSensorVal1.Text = earg.Edge.ToString(); 
      }); 
    } 

    private async void OnPirSensor2MotionDetected(object sender, Windows.Devices.Gpio.GpioPinValueChangedEventArgs earg) 
    { 
     await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, 
      () => 
      { 
       // Your UI update code goes here! 
       pirSensorVal2.Text = earg.Edge.ToString(); 
      });    
    } 
  1. Angenommen, wenn zwei PIR-Sensoren die Bewegung des Objekts zur gleichen Zeit erkannt werden dann, was passiert.

Wenn die beiden PIR-Sensoren die Bewegung zu erkennen, motionDetected das Ereignis von werden für einander aufgerufen werden.

Verwandte Themen