SensorDebounce.cs 1.0 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    public class SensorDebounce
    {
        static int[] valuepool = new int[8];
        static bool valuepoolfull = false;
        static int valuepoolindex = 0;
        public static bool Debounce(int value,out int v)
        {
            valuepool[valuepoolindex] = value;
            valuepoolindex++;
            v = 0;
            if (valuepoolindex >= valuepool.Length)
            {
                valuepoolindex = 0;
                valuepoolfull = true;
            }
            if (valuepoolfull)
            {
                if (valuepool.Max() - valuepool.Min() < 3)
                {
                    v = (int)valuepool.Average();
                    return true;
                }
            }
            return false;
        }

        public static void Reset() {
            valuepool = new int[valuepool.Length];
            valuepoolfull = false;
        }
    }
}