title: ultrasonic sensor raspberry pi 2 c# .net
body: <p>I'm trying to read the distance from an ultrasonic sensor (HC-SR04) but the only values I get is 0 and 265.xx. </p>
  
  <p>I am using an Raspberry Pi 2 with Windows 10 IoT Core installed. </p>
  
  <p>I've written the code in C#.</p>
  
  <p>This is the ultrasonic sensor class:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading;
  using System.Threading.Tasks;
  using System.Diagnostics;
  using Windows.Devices.Gpio;
  
  namespace RaspberryPi
  {
      class UcSensor
      {
          GpioController gpio = GpioController.GetDefault();
  
          GpioPin TriggerPin;
          GpioPin EchoPin;
  
          //Contructor
          public UcSensor(int TriggerPin, int EchoPin)
          {
              //Setting up gpio pin's
              this.TriggerPin = gpio.OpenPin(TriggerPin);
              this.EchoPin = gpio.OpenPin(EchoPin);
  
              this.TriggerPin.SetDriveMode(GpioPinDriveMode.Output);
              this.EchoPin.SetDriveMode(GpioPinDriveMode.Input);
  
              this.TriggerPin.Write(GpioPinValue.Low);
          }
  
          public double GetDistance()
          {
              ManualResetEvent mre = new ManualResetEvent(false);
              mre.WaitOne(500);
  
              //Send pulse
              this.TriggerPin.Write(GpioPinValue.High);
              mre.WaitOne(TimeSpan.FromMilliseconds(0.01));
              this.TriggerPin.Write(GpioPinValue.Low);
  
              //Recieve pusle
              while (this.EchoPin.Read() == GpioPinValue.Low)
              {
              }
              DateTime start = DateTime.Now;
  
              while (this.EchoPin.Read() == GpioPinValue.High)
              {
              }
              DateTime stop = DateTime.Now;
  
              //Calculating distance
              double timeBetween = (stop - start).TotalSeconds;
              double distance = timeBetween * 17000;
  
              return distance;
          }
  
      }
  }
  </code></pre>
  
  <p>I've also written a script in python to read the values from the ultrasonic sensor and then it works but in c# I can't get it working.</p>
  
  <p>At the bottom you can find the debug log:</p>
  
  <blockquote>
    <p>'BACKGROUNDTASKHOST.EXE' (CoreCLR: DefaultDomain): Loaded 'C:\Program Files\WindowsApps\Microsoft.NET.CoreRuntime.1.0_1.0.22816.1_arm__8wekyb3d8bbwe\mscorlib.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\RaspiCar.winmd'. Symbols loaded.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\System.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\WinMetadata\Windows.winmd'. Module was built without symbols.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\System.Runtime.InteropServices.WindowsRuntime.dll'. Module was built without symbols.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\System.Threading.dll'. Module was built without symbols.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\System.Diagnostics.Debug.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
        'BACKGROUNDTASKHOST.EXE' (CoreCLR: CoreCLR_UAP_Domain): Loaded 'C:\Users\DefaultAccount\AppData\Local\DevelopmentFiles\RaspiCarVS.Debug_ARM.chris\System.Runtime.WindowsRuntime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
        Distance: 265.7457
        Distance: 0
        Distance: 0
        Distance: 0
        The program '[2508] BACKGROUNDTASKHOST.EXE' has exited with code 0 (0x0).</p>
  </blockquote>