示例#1
0
 protected override async Task ExecuteAsync(CancellationToken cancellationToken)
 {
     _hcsr04       = new Hcsr04(_triggerPin, _echoPin, _pinNumberingScheme);
     _prevDistance = Distance;
     while (!cancellationToken.IsCancellationRequested)
     {
         try
         {
             Distance = _hcsr04.Distance.Centimeters;
             _communicationObject.Distance = Distance;
         }
         catch { }
         if (_prevDistance <= _borderDistanceCentimeters && Distance > _borderDistanceCentimeters)
         {
             _communicationObject.ObjectInside?.Reset();
             _communicationObject.ObjectOutside?.Set();
             if (_communicationObject.BorderCrossedEvent != null)
             {
                 _communicationObject.BorderCrossedEvent(this, BorderCrossed.Outside);
             }
         }
         else
         if (_prevDistance > _borderDistanceCentimeters && Distance <= _borderDistanceCentimeters)
         {
             _communicationObject.ObjectOutside?.Reset();
             _communicationObject.ObjectInside?.Set();
             if (_communicationObject.BorderCrossedEvent != null)
             {
                 _communicationObject.BorderCrossedEvent(this, BorderCrossed.Inside);
             }
         }
         _prevDistance = Distance;
         await Task.Delay(100);
     }
 }
 public IActionResult GetDistance()
 {
     using (var sonar = new Hcsr04(TRIG, ECHO))
     {
         return(Ok(new
         {
             distance = sonar.Distance.ToString(),
         }));
     }
 }
示例#3
0
        public MeadowApp()
        {
            hCSR04 = new Hcsr04(Device, Device.Pins.D05, Device.Pins.D06);
            hCSR04.DistanceDetected += HCSR04DistanceDetected;

            while (true)
            {
                // Sends a trigger signal
                hCSR04.MeasureDistance();
                Thread.Sleep(1500);
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Hcsr04 Sample!");

            using (var sonar = new Hcsr04(4, 17))
            {
                while (true)
                {
                    Console.WriteLine($"Distance: {sonar.Distance} cm");
                    System.Threading.Thread.Sleep(1000);
                }
            }
        }
示例#5
0
        public MeadowApp()
        {
            Console.WriteLine($"Hello HC-SR04 sample");

            hCSR04 = new Hcsr04(Device, Device.Pins.D05, Device.Pins.D06);
            hCSR04.DistanceDetected += HCSR04DistanceDetected;

            Console.WriteLine("Starting loop");

            while (true)
            {
                // Sends a trigger signal
                hCSR04.MeasureDistance();
                Thread.Sleep(2000);
            }
        }
示例#6
0
        /// <summary>
        /// Initializes a <see cref="Sonar"/> instance
        /// </summary>
        public Sonar()
        {
            Log.Debug("Initializing sonar hardware and services...");

            Distance = new DistanceTuple(0, 0, 0);

            CenterSonarDevice = new Hcsr04(CENTER_TRIG, CENTER_ECHO);
            LeftSonarDevice   = new Hcsr04(LEFT_TRIG, LEFT_ECHO);
            RightSonarDevice  = new Hcsr04(RIGHT_TRIG, RIGHT_ECHO);

            Log.Debug("Sonar hardware and services initialized");

            MeasurementTimer           = new System.Timers.Timer(250);
            MeasurementTimer.Elapsed  += MeasurementTimer_Elapsed;
            MeasurementTimer.AutoReset = true;
            MeasurementTimer.Enabled   = true;
        }
        private static void Hsc()
        {
            Hcsr04 sonar = new Hcsr04(16, 17);

            while (true)
            {
                try
                {
                    Debug.WriteLine($"Distance: {sonar.Distance.Centimeters} cm");
                }
                catch (Exception)
                {
                    Debug.WriteLine($"Exception");
                }
                Thread.Sleep(1000);
            }
        }
示例#8
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello Hcsr04 Sample!");

            using (var sonar = new Hcsr04(4, 17))
            {
                while (true)
                {
                    var res = sonar.TryGetDistance(out Length distance);
                    if (res)
                    {
                        Console.WriteLine($"Distance: {distance.Centimeters} cm");
                    }
                    else
                    {
                        Console.WriteLine("Error reading sensor");
                    }

                    Thread.Sleep(1000);
                }
            }
        }
 public Hcsr04Sensor(int triggerPin, int echoPin)
 {
     _sensor = new Hcsr04(triggerPin, echoPin);
 }
示例#10
0
        public void Enable(Accessories accessory)
        {
            try
            {
                switch (accessory)
                {
                case Accessories.Camera:
                    if (camera is null)
                    {
                        this.camera = new Camera();
                    }
                    else
                    {
                        Disable(Accessories.Camera); this.camera = new Camera();
                    }
                    break;

                case Accessories.IMU:
                    if (imu is null)
                    {
                        this.imu = new Mpu6050(I2cDevice.Create(
                                                   new I2cConnectionSettings(1, Mpu6050.DefaultI2cAddress)));
                    }
                    else
                    {
                        Disable(Accessories.IMU);
                        this.imu = new Mpu6050(I2cDevice.Create(
                                                   new I2cConnectionSettings(1, Mpu6050.DefaultI2cAddress)));
                    }
                    break;

                case Accessories.MotorL:
                    if (motorL is null)
                    {
                        this.motorL = DCMotor.Create(6, 12, 13);
                    }
                    else
                    {
                        Disable(Accessories.MotorL); this.motorL = DCMotor.Create(6, 12, 13);
                    }
                    break;

                case Accessories.MotorR:
                    if (motorR is null)
                    {
                        this.motorR = DCMotor.Create(26, 20, 21);
                    }
                    else
                    {
                        Disable(Accessories.MotorR); this.motorR = DCMotor.Create(26, 20, 21);
                    }
                    break;

                case Accessories.Motors:
                    Enable(Accessories.MotorL);
                    Enable(Accessories.MotorR);
                    break;

                case Accessories.ADC:
                    if (adc is null)
                    {
                        this.adc = new Tlc1543(24, 5, 23, 25);
                    }
                    else
                    {
                        Disable(Accessories.ADC); this.adc = new Tlc1543(24, 5, 23, 25);
                    }
                    break;

                case Accessories.IR:
                    if (ir is null)
                    {
                        this.ir = new IrReceiver(17);
                    }
                    else
                    {
                        Disable(Accessories.IR); this.ir = new IrReceiver(17);
                    }
                    break;

                case Accessories.Sonar:
                    if (sonar is null)
                    {
                        this.sonar = new Hcsr04(22, 27);
                    }
                    else
                    {
                        Disable(Accessories.Sonar); this.sonar = new Hcsr04(22, 27);
                    }
                    break;

                case Accessories.LED:
                    if (led is null)
                    {
                        this.led = new Ws2812b(18, 4);
                    }
                    else
                    {
                        Disable(Accessories.LED); this.led = new Ws2812b(18, 4);
                    }
                    break;

                case Accessories.CPUTemp:
                    if (cpuTemperature is null)
                    {
                        this.cpuTemperature = new CpuTemperature();
                    }
                    //else { Disable(led); this.led = new Ws2812b(18, 4); }
                    break;

                case Accessories.All:
                    foreach (var item in Enum.GetValues(typeof(Accessories)))
                    {
                        Enable((Accessories)item);
                    }
                    break;

                default:
                    Console.WriteLine("Something went wrong (Enabling accessories)");
                    break;
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine($"Enabling accessory: {Enum.GetName(typeof(Accessories), accessory)} failed.");
                System.Diagnostics.Debug.WriteLine($"Exception message: {ex.Message}");

                Console.WriteLine($"Enabling accessory: {Enum.GetName(typeof(Accessories), accessory)} failed.");
                Console.WriteLine($"Exception message: {ex.Message}");
            }
        }