Skip to content

Instantly share code, notes, and snippets.

@MartinRGB
Last active November 16, 2023 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MartinRGB/87567047c589c295a945036591c68720 to your computer and use it in GitHub Desktop.
Save MartinRGB/87567047c589c295a945036591c68720 to your computer and use it in GitHub Desktop.

reference: https://www.waveshare.com/wiki/PAJ7620U2_Gesture_Sensor#How_to_use_it

#include <Wire.h>
#include "PAJ7620U2.h"
#include "U8glib.h" // u8g library, note there is a newer version u8g2, please use the older one

// uncomment the correct connection - fast I2C, slow I2C, SPI
U8GLIB_SSD1309_128X64 u8g( 13, 11, 10, 9, 8 );
unsigned short  Gesture_Data;
String  myString;
void setup() {
    uint8_t i;
    Serial.begin(115200);
    Serial.print("\nGesture Sensor Test Program ...\n");
    delayMicroseconds(800);
    Wire.begin();
    delayMicroseconds(10);
    while(!PAJ7620U2_init())
    { Serial.print("\nGesture Sensor Error\n");
      delay(500);
    }
    Serial.print("\nGesture Sensor OK\n");
    I2C_writeByte(PAJ_BANK_SELECT, 0);//Select Bank 0
    for (i = 0; i < Gesture_Array_SIZE; i++)
    {
      I2C_writeByte(Init_Gesture_Array[i][0], Init_Gesture_Array[i][1]);//Gesture register initializes
    }
    u8g.setColorIndex(1); // set color to white
    u8g.setHiColorByRGB(255,255,255);
    u8g.setFont(u8g_font_7x14);
}

void loop() {
    Gesture_Data = I2C_readU16(PAJ_INT_FLAG1);


    if (Gesture_Data)
    {
      switch (Gesture_Data)
      {
        case PAJ_UP:                   Serial.print("Up\r\n");     myString="Up";       break;
        case PAJ_DOWN:                 Serial.print("Down\r\n");   myString="Down";       break;
        case PAJ_LEFT:                 Serial.print("Left\r\n");   myString="Left";       break;
        case PAJ_RIGHT:                Serial.print("Right\r\n");  myString="Right";       break;
        case PAJ_FORWARD:              Serial.print("Forward\r\n");myString="Forward";       break;
        case PAJ_BACKWARD:             Serial.print("Backward\r\n");myString="Backward";      break;
        case PAJ_CLOCKWISE:            Serial.print("Clockwise\r\n");myString="Clockwise";     break;
        case PAJ_COUNT_CLOCKWISE:      Serial.print("AntiClockwise\r\n");myString="AntiClockwise"; break;
        case PAJ_WAVE:                 Serial.print("Wave\r\n");  myString="Wave";        break;
        default: break;
      }
      Gesture_Data=0;
    }

    u8g.firstPage();
    do {

      u8g.setFont(u8g_font_7x14);
      u8g.drawStr(8,18,"Gesture:");
      u8g.setPrintPos(8, 48);
      u8g.print(myString);
    
    } while ( u8g.nextPage() );   // u8g library specific, has to be there


}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment