Датчик жестов APDS 9960.

Нет ответов
Cesium137
Cesium137 аватар
Offline
Зарегистрирован: 13.12.2016

Всем привет дорогие профессионалы. Такой вопрос. Делаю светильник, который меняет цвета от жестов с помощью датчика APDS9960. Проект создаю в FLPROG. Датчик жестов работает корректно. 

Когда происходит жест, например слева на права ( жест RIGHT) то включается первый светодиод. Когда делаю еще один жест такойже (RIGHT). то нет смены на новый цвет. Смена цвета происходит когда делаю любой другой жест и затем  сноваделаю жест RIGHT.

Принцып работы датчика мне ясен - при обработке жеста (напр. RIGHT)  - сигнал лог. единицы ны выходе держится всегда. Сигнал на ноль переводится любым другим жестом. Тоесть чтобы переключить на смену цвета надо махать туда сюда. 

Мне бы хотелось чтобы делать жест в одну сторону и поочередно была смена цветов. 

Помогите с проблемой.

Думаю если при обработке жеста единица менялась бы на ноль допустим через задержку то был бы желаемый результат. Но как сделать это незнаю. В программировании языка С не силен. 

Здесь фрагмент кода как обрабатываются жесты. Может здесь можно установить ту самую задержку с единицы на ноль.

if (Gesture_70103259_3 ==  ("UP"   ))       { UP__70103259_3 = 1;}        else {UP__70103259_3 = 0;}
   if (Gesture_70103259_3 ==  ("DOWN"))    { DOWN__70103259_3 = 1;}  else {DOWN__70103259_3 = 0;}
   if (Gesture_70103259_3 ==  ("LEFT"))      { LEFT__70103259_3 = 1;}    else {LEFT__70103259_3 = 0;}
   if (Gesture_70103259_3 == ("RIGHT"))      {RIGHT__70103259_3 = 1;}   else {RIGHT__70103259_3 = 0;}
   if (Gesture_70103259_3 == ("NEAR"))       {NEAR__70103259_3 = 1;}   else {NEAR__70103259_3 = 0;}
   if (Gesture_70103259_3 == ("FAR"))         {FAR__70103259_3 = 1;}      else {FAR__70103259_3 = 0;}
   if (Gesture_70103259_3 == ("NONE"))      {NONE__70103259_3 = 1;}    else {NONE__70103259_3 = 0;}

Схема в FL  PROG. Счетчик CTU  работает на увилечение. 

Заранее большое спасибо за помошь.