Разработать модуль сенсора
59

подсчёт времени суммирования углов осциллограммы, которые принадлежат данной сумме. Время подсчёта измеряется в количестве опросов модуля ИС. Суммы считаются отдельно для каждого из 6 сенсоров. Как только осциллограмма ещё раз пересекает нулевую точку, то все текущие показания площадей и времён подсчёта сверяются с эталонными. Сравнение производится отдельно для показаний акселерометров и показаний магнитных сенсоров. Если обнаруживается совпадение с определёнными допусками, то генерируется событие, и обнуляются все показатели площади и времени. Иначе обнуляется только показатель той площади, где было пересечение нуля. Построенный на такой методике алгоритм действует следующим образом:

  1. Снимаются показания с модуля.
  2. Если timeout не равен нулю, то уменьшаем его на единицу и переходим к пункту 9. Иначе переходим к пункту 3
  3. Вычисляются углы отклонения ax, ay, az , mx, my, и mz
  4. Прибавляются значения углов к площадям Sax, Say, Saz, Smx, Smy и Smz соответственно.
  5. Проверяется наличие пересечений по каждому из углов, и если пересечения есть, переходим к пункту 6 иначе к пункту 9.
  6. Проверяем текущие показания площадей и времени их замера с эталонными, отдельно для акселерометров и отдельно для магнитных сенсоров и если есть совпадения переходим к пункту 7, иначе к пункту 9.
  7. Генерируем событие совершения базового движения.
  8. Обнуляем площадь и время всех показателей и переходим к пункту 10.
  9. Обнуляем площадь и время показателя, который перешел через ноль. И выставляем timeout выделения базовых движений.
  10. Передаём управление вызвавшей алгоритм программе.