Skip to content

Instantly share code, notes, and snippets.

@MartinRGB
Last active November 16, 2023 13:41
Show Gist options
  • Save MartinRGB/87567047c589c295a945036591c68720 to your computer and use it in GitHub Desktop.
Save MartinRGB/87567047c589c295a945036591c68720 to your computer and use it in GitHub Desktop.

Revisions

  1. MartinRGB renamed this gist Nov 16, 2023. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. MartinRGB created this gist Nov 16, 2023.
    71 changes: 71 additions & 0 deletions PAJ7620.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    reference:
    https://www.waveshare.com/wiki/PAJ7620U2_Gesture_Sensor#How_to_use_it


    ```c
    #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


    }

    ```