Датчик жестов GY-PAJ7620U2 позволяет распознавать до 9 жестов, подключается через интерфейс I2C, совместим с уровнями напряжения 3.3V/5V. Имеет встроенный инфракрасный светодиод и оптический объектив, способные работать в условиях низкой освещенности. Пригодится в проектах с низким энергопотреблением, таких как умный дом, роботостроение и прочее.
Особенности:
- Поддерживаемые жесты: вверх, вниз, влево, вправо, вперед, назад, по часовой стрелке, против часовой стрелки, встряхивание
- Скорость распознавания жеста обычно 60 ° F / сек — 600 ° / с
- Скорость режима gamingowym распознавания жеста 60 ° F / сек — 1200 ° / с
- Невосприимчивость к окружающему свету: <100k Lux
- Встроенная функция обнаружения близости
- Интерфейс I2C до 400 кбит/с
- Типичное напряжение питания составляет от 2,8 до 3,3 В, а напряжение I/O составляет 1,8 В ~ 3,3 В
- Имеет встроенный стабилизатор питания и конвертер уровней
- Гибкая схема энергосбережения
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#include <Wire.h> #include "paj7620.h" /* Notice: When you want to recognize the Forward/Backward gesture or other continuous gestures, your gestures' reaction time must less than GES_REACTION_TIME(0.8s). You also can adjust the reaction time according to the actual circumstance. */ #define GES_REACTION_TIME 800 #define GES_QUIT_TIME 1000 void setup() { uint8_t error = 0; Serial.begin(9600); Serial.println("nPAJ7620U2 TEST DEMO: Recognize 15 gestures."); error = paj7620Init(); // initialize Paj7620 registers if (error) { Serial.print("INIT ERROR,CODE:"); Serial.println(error); } else { Serial.println("INIT OK"); } Serial.println("Please input your gestures:"); } void loop() { uint8_t data = 0, data1 = 0, error; error = paj7620ReadReg(0x43, 1, &data); // Read Bank_0_Reg_0x43/0x44 for gesture result. if (!error) { switch (data) { // When different gestures be detected, the variable 'data' will be set to different values by paj7620ReadReg(0x43, 1, &data). case GES_RIGHT_FLAG: delay(GES_REACTION_TIME); paj7620ReadReg(0x43, 1, &data); if (data == GES_LEFT_FLAG) { Serial.println("Right-Left"); } else if (data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if (data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Right"); } break; case GES_LEFT_FLAG: delay(GES_REACTION_TIME); paj7620ReadReg(0x43, 1, &data); if (data == GES_RIGHT_FLAG) { Serial.println("Left-Right"); } else if (data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if (data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Left"); } break; break; case GES_UP_FLAG: delay(GES_REACTION_TIME); paj7620ReadReg(0x43, 1, &data); if (data == GES_DOWN_FLAG) { Serial.println("Up-Down"); } else if (data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if (data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Up"); } break; case GES_DOWN_FLAG: delay(GES_REACTION_TIME); paj7620ReadReg(0x43, 1, &data); if (data == GES_UP_FLAG) { Serial.println("Down-Up"); } else if (data == GES_FORWARD_FLAG) { Serial.println("Forward"); delay(GES_QUIT_TIME); } else if (data == GES_BACKWARD_FLAG) { Serial.println("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Down"); } break; case GES_FORWARD_FLAG: delay(GES_REACTION_TIME); paj7620ReadReg(0x43, 1, &data); if (data == GES_BACKWARD_FLAG) { Serial.println("Forward-Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Forward"); delay(GES_QUIT_TIME); } break; case GES_BACKWARD_FLAG: delay(GES_REACTION_TIME); paj7620ReadReg(0x43, 1, &data); if (data == GES_FORWARD_FLAG) { Serial.println("Backward-Forward"); delay(GES_QUIT_TIME); } else { Serial.println("Backward"); delay(GES_QUIT_TIME); } break; case GES_CLOCKWISE_FLAG: Serial.println("Clockwise"); break; case GES_COUNT_CLOCKWISE_FLAG: Serial.println("anti-clockwise"); break; default: paj7620ReadReg(0x44, 1, &data1); if (data1 == GES_WAVE_FLAG) { Serial.println("wave"); } break; } } delay(100); } |