手关节黑是什么原因| 发乎情止乎礼什么意思| 渗透率是什么意思| 70属什么生肖| 啪啪啪什么感觉| 瘖什么意思| 大力出奇迹什么意思| 拜土地公时要念什么好| 附件是什么部位| 碱什么意思| 日本旅游买什么东西最划算| 抗核抗体是什么意思| pp1是什么意思| 八百里加急是什么意思| 腺肌症是什么原因引起的| 男性尿道炎是什么原因引起的| 佛光普照是什么生肖| 与会是什么意思| 三峡大坝什么时候建成的| 工伤是什么意思| 哆啦a梦大结局是什么| 泪点低是什么意思| 滥竽充数的充是什么意思| 山楂干泡水喝有什么功效| 水痘长什么样子的图片| p和t分别是什么意思| 脑萎缩是什么意思| 白萝卜煮水喝有什么功效| 教师的职责是什么| 尿结石有什么症状| 喝鲜牛奶有什么好处和坏处| 俄罗斯信奉的是什么教| 干细胞是什么| 农历六月十七是什么日子| 积食是什么症状| 什么春什么什么| 尿酸高早餐吃什么| 儿童手指头脱皮什么原因引起的| 牛油果核有什么用| pussy 什么意思| 睡觉经常流口水是什么原因| 大便拉不出来吃什么药| 吊唁是什么意思| 冬天怕冷夏天怕热是什么原因| 诱发电位是检查什么病的| 天王表属于什么档次| 柠檬酸是什么| 下腹疼是什么原因| 猪心炖什么好吃又营养| 故宫什么时候建的| 拔完智齿吃什么食物好| 白骨精是什么动物| 1月27号是什么星座| 育婴员是做什么的| 请佛容易送佛难什么意思| 1月17日是什么星座| 口嫌体正直是什么意思| 骨龄是什么意思| 等闲变却故人心却道故人心易变什么意思| 肝内多发低密度灶是什么意思| 西瓜不可以和什么同食| 汗多尿少是什么原因| 双相是什么| uniqlo是什么牌子| 男人阳气不足有什么症状| 耳鸣吃什么药| 梦见病人好了什么预兆| 小儿积食吃什么药最好| 高锰酸钾加什么会爆炸| 开心的动物是什么生肖| 弥漫是什么意思| 桑叶茶有什么好处| 什么是白癜风| 拉青色大便是什么原因| 脾虚湿气重喝什么茶| 扩张是什么意思| 1950年属虎的是什么命| 什么样的人容易得甲减| 9月11号是什么星座| 若干是什么意思| hcg高代表什么| 右佐匹克隆是什么药| 2024年属什么生肖| 蜜袋鼯吃什么| 隔空是什么意思| 燕窝什么人不适合吃| 退而求其次是什么意思| 居住证签注是什么意思| 姓袁女孩叫什么名字好听| 酸菜鱼用什么鱼| 总是打嗝是什么原因引起的| 血糖高看什么科| 肺部有结节要注意什么| 怀孕梦见蛇是什么意思| 北顶娘娘庙求什么灵验| 肠癌便血和痔疮便血有什么区别| 32岁属什么生肖| 德国人是什么人种| 灰指甲什么样| 急性扁桃体化脓是什么原因引起的| 中文是什么意思| 盐酸盐是什么| 主家是什么意思| 阴间到底是什么| 下午七点是什么时辰| 九月23日是什么星座| 女人缺铁性贫血吃什么好| 起付线是什么意思| 血脂高有什么表现| 投资公司是做什么的| 心动是什么意思| 蓝灰色配什么颜色好看| 蒂芙尼蓝是什么颜色| 心脏五行属什么| 八月13号是什么星座| av是什么| 容祖儿老公叫什么名字| 摇头是什么病| 小儿风寒感冒吃什么药| 为什么不建议治疗幽门螺杆菌| 韩语阿西吧是什么意思| 梅核气是什么症状| 风是什么| 男人气虚吃什么补得快| 女人下面水多是什么原因| 天秤座什么性格| 尿酸高吃什么| 同字五行属什么| 甲状腺是什么引起的原因| 鳖孙是什么意思| 12305是什么电话| 尿常规能查出什么病| 尿为什么是黄色的| 早孕期间吃什么最营养| 顺钟向转位是什么意思| 肝早期硬化身体有什么症状| 饿了么什么时候成立的| 肛瘘是什么症状表现| 肛裂涂什么药膏能愈合| 问加一笔是什么字| 吃灵芝有什么好处| 什么东西在倒立之后会增加一半| 施华蔻属于什么档次| 什么含胶原蛋白最多| 什么时候受孕率最高| 蜂蜜水什么时候喝最好| 心什么气什么| 睡觉睁眼睛是什么原因| 前胸后背长痘痘用什么药| 10.21是什么星座| 方兴未什么| 什么叫职业年金| 遇难呈祥是什么生肖| bruce是什么意思| b12是什么| 手指关节疼痛看什么科| 腹泻能吃什么| 20点是什么时辰| 感冒喉咙痛挂什么科| 什么是玄关在哪个位置| 肺气肿用什么药| 太后是皇上的什么人| 阿西是什么意思| 眼睛为什么会痛| 53年属什么生肖| 节度使是什么意思| 冷艳是什么意思| 2003年什么年| 支气管炎吃什么药效果最好| 喉镜能检查出什么病| 手指头发麻是什么原因| 梦见吵架是什么意思| 坐飞机需要什么证件| 夜宵吃什么不会胖| 唐氏筛查和无创有什么区别| 2月20是什么星座| 什么是封闭针| 梅花表属于什么档次| 消谷善饥是什么意思| 九华山在什么地方| 1955属什么生肖| 奔是什么生肖| jackie是什么意思| 为什么要努力读书| 干咳吃什么药| 还愿有什么讲究| 肝炎挂什么科| 什么什么为什么| 仙代表什么生肖| 12月5号是什么星座| 男同性恋叫什么| 圆形脸适合什么样的发型| 为什么会心悸| 西洋参和花旗参有什么区别| 总胆红素是什么| 714什么星座| 梦泪什么意思| 蜡烛燃烧会产生什么| 中气下陷是什么意思| 省军区司令员是什么级别| 2是什么数| 强悍是什么意思| 属猪和什么属相相冲| 总是想吐是什么原因| 排便方式改变指什么| 耐人寻味是什么意思| 七宗罪分别是什么| 卵巢早衰吃什么药| 西梅不能和什么一起吃| 备孕要吃什么| 大同有什么好玩的地方| 志趣相投是什么意思| 雨打棺材是什么征兆| 绿豆不能跟什么一起吃| 810是什么意思| 深圳有什么好吃的| 骁字五行属什么| 1129什么星座| 电解水是什么水| 什么头蛇尾| 脂肪肝用什么药物治疗| 心跳加快吃什么药| 鸡蛋吃多了有什么坏处| 低压高什么症状| 师长相当于地方什么级别| 左眼皮上有痣代表什么| 耳朵上长痘痘什么原因| 塬字五行属什么| 山茶花什么时候开| 12月18号是什么星座| 被隐翅虫咬了涂什么药| 不议价什么意思| 华人是什么意思| 甲不开仓财物耗散是什么意思| 15一16岁青少年腰疼是什么病| 叶酸起什么作用| 花朵像什么| 什么花不能浇硫酸亚铁| 宫寒应该吃什么怎样调理| 减脂晚餐吃什么| 粘膜充血水肿什么意思| 尿道刺痛什么原因| 社交恐惧是什么| 不是一路人是什么意思| 美业是做什么的| 2022年属什么生肖| 嫩黄的什么| 什么是处男| 感谢是什么意思| 候和侯有什么区别| 中耳炎用什么药最好| 端午节应该吃什么| 2021年五行属什么| bp在医学上是什么意思| 什么是五谷| 四大才子是什么生肖| 小孩黄疸高有什么危害| 芥末油是什么提炼出来的| 努尔哈赤是什么意思| 哺乳期感冒吃什么药| 提前吃什么喝酒不醉| 地痞是什么意思| 15号来月经排卵期是什么时候| 思维什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 活动中心 ? 板卡试用 ? 【换取手持数字示波器】STM32U083实现手势识别功能

共3条 1/1 1 跳转至

【换取手持数字示波器】STM32U083实现手势识别功能

工程师
2025-08-04 13:57:14   被打赏 40 分(兑奖)     打赏
百度 他说,运满满利用大数据和人工智能等网络信息技术,通过对运力的共享和优化,进行实时、智能和高效匹配调度,使配货时间由天缩短到天,月行驶里程由9000公里增加到万公里。

【目的】

驱动PAJ7620U2,实现对手势的识别

【手势传感器介绍】

PAJ7620U2将手势识别功能与通用识别9个手势,包括向上移动,向~下移动,向左移动,向右移动,向前移动,向后移动,顺时针旋转,逆时针旋转和波动。可以通过12C总线简单地访问这些手势信息。PAJ7620U2还提供内置接近检测功能

用于检测接近或离开的物体。PAJ76202在节电机制方面具有极大的灵活性。

【实现步骤】

1、使用stm32cubeMAX新建工程,开启i2c1与串口2

2、生成mdk工程,并打开工程。

3、移植PAJ7620U2驱动,编写驱动如下:

PAJ7620U2.h

/*
	
  ******************************************************************************
  * @file 			( фаил ):   PAJ7620U2.h
  * @brief 		( описание ):  	
  ******************************************************************************
  * @attention 	( внимание ):	author: Golinskiy Konstantin	e-mail: golinskiy.konstantin@gmail.com
  ******************************************************************************
  
*/

#ifndef _PAJ7620U2_H
#define _PAJ7620U2_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ----------------------------------------------------------*/

#include "main.h"


// num i2c ---------------------------------------------
#define PAJ7620U2_I2C										hi2c1

//------------------------------------------------------




extern I2C_HandleTypeDef PAJ7620U2_I2C;

#define DEV_Delay_ms(__xms)							HAL_Delay(__xms)

/*-----------------------------------------------------------------------------*/

//i2c address
#define PAJ7620U2_I2C_ADDRESS				(0x73<<1)


//Register Bank select
#define PAJ_BANK_SELECT							0xEF		//Bank0=0x00,Bank1=0x01

//Register ID ( read only )
#define PAJ_PART_ID_L								0x00		// result 0x20
#define PAJ_PART_ID_H								0x01		// result 0x76
#define PAJ_VERSION_ID							0x02		// result 0x01


//Register Bank 0
#define PAJ_SUSPEND			 						0x03		//I2C suspend command (Write 0x01 to enter suspend state). I2C wake-up command is slave ID wake-up. Refer to topic I2C Bus Timing Characteristics and Protocol
#define PAJ_INT_FLAG1_MASK					0x41		//Gesture detection interrupt flag mask
#define PAJ_INT_FLAG2_MASK					0x42		//Gesture/PS detection interrupt flag mask
#define PAJ_INT_FLAG1		    				0x43		//Gesture detection interrupt flag
#define PAJ_INT_FLAG2								0x44		//Gesture/PS detection interrupt flag
#define PAJ_STATE										0x45		//State indicator for gesture detection (Only functional at gesture detection mode)
#define PAJ_PS_HIGH_THRESHOLD				0x69		//PS hysteresis high threshold (Only functional at proximity detection mode)	
#define PAJ_PS_LOW_THRESHOLD				0x6A		//PS hysteresis low threshold (Only functional at proximity detection mode)
#define PAJ_PS_APPROACH_STATE				0x6B		//PS approach state,  Approach = 1 , (8 bits PS data >= PS high threshold),  Not Approach = 0 , (8 bits PS data <= PS low threshold)(Only functional at proximity detection mode)
#define PAJ_PS_DATA									0x6C		//PS 8 bit data(Only functional at gesture detection mode)
#define PAJ_OBJ_BRIGHTNESS					0xB0		//Object Brightness (Max. 255)
#define PAJ_OBJ_SIZE_L							0xB1		//Object Size(Low 8 bit)		
#define PAJ_OBJ_SIZE_H							0xB2		//Object Size(High 8 bit)

//Register Bank 1
#define PAJ_PS_GAIN									0x44		//PS gain setting (Only functional at proximity detection mode)
#define PAJ_IDLE_S1_STEP_L					0x67		//IDLE S1 Step, for setting the S1, Response Factor(Low 8 bit)
#define PAJ_IDLE_S1_STEP_H					0x68		//IDLE S1 Step, for setting the S1, Response Factor(High 8 bit)	
#define PAJ_IDLE_S2_STEP_L					0x69		//IDLE S2 Step, for setting the S2, Response Factor(Low 8 bit)
#define PAJ_IDLE_S2_STEP_H					0x6A		//IDLE S2 Step, for setting the S2, Response Factor(High 8 bit)
#define PAJ_OPTOS1_TIME_L						0x6B		//OPtoS1 Step, for setting the OPtoS1 time of operation state to standby 1 state(Low 8 bit)
#define PAJ_OPTOS2_TIME_H						0x6C		//OPtoS1 Step, for setting the OPtoS1 time of operation state to standby 1 stateHigh 8 bit)
#define PAJ_S1TOS2_TIME_L						0x6D		//S1toS2 Step, for setting the S1toS2 time of standby 1 state to standby 2 state(Low 8 bit)
#define PAJ_S1TOS2_TIME_H						0x6E		//S1toS2 Step, for setting the S1toS2 time of standby 1 state to standby 2 stateHigh 8 bit)
#define PAJ_EN											0x72		//Enable/Disable PAJ7620U2


//Gesture detection interrupt flag
#define PAJ_NONE										0x0000	// отсутствует
#define PAJ_UP				    					0x0001 	// вверх
#define PAJ_DOWN			    					0x0002	// вниз
#define PAJ_LEFT			    					0x0004 	// влево
#define PAJ_RIGHT			    					0x0008	// вправо
#define PAJ_FORWARD			    				0x0010 	// вперед
#define PAJ_BACKWARD		    				0x0020	// назад
#define PAJ_CLOCKWISE								0x0040	// по часовой стрелке
#define PAJ_ANTI_CLOCKWISE					0x0080	// против часовой стрелки
#define PAJ_WAVE										0x0100	// волна


#define PAJ_PARTID  								0x7620


//Power up initialize array
extern const uint8_t Init_Register_Array[][2];


//Initialize array size
#define Init_Array 									sizeof(Init_Register_Array)/2


//Bank 0 or 1 
typedef enum:uint8_t{
	PAJ_BANK_0,			//Bank0 = 0x00
	PAJ_BANK_1			//Bank1 = 0x01
}Paj_Bank_Num;



/* Functions prototypes ----------------------------------------------*/


uint16_t PAJ7620U2_init(void);

uint16_t PAJ7620U2_Gesture_ReadData(void);
uint8_t PAJ7620U2_PS_ReadObjBrightness(void);
uint16_t PAJ7620U2_PS_ReadObjSize(void);

//------------------------------------------------------------------------------------


#ifdef __cplusplus
}
#endif

#endif	/*	_PAJ7620U2_H */

/************************ (C) COPYRIGHT GKP *****END OF FILE****/

PAJ7620U2.c代码如下:

/*

  ******************************************************************************
  * @file 			( фаил ):   PAJ7620U2.c
  * @brief 		( описание ):  	
  ******************************************************************************
  * @attention 	( внимание ):	author: Golinskiy Konstantin	e-mail: golinskiy.konstantin@gmail.com
  ******************************************************************************
  
*/

/* Includes ----------------------------------------------------------*/
#include "PAJ7620U2.h"


//Power up initialize array
const uint8_t Init_Register_Array[][2] = {
		{0xEF,0x00},
    {0x32,0x29},
    {0x33,0x01},
    {0x34,0x00},
    {0x35,0x01},
    {0x36,0x00},
    {0x37,0x07},
    {0x38,0x17},
    {0x39,0x06},
    {0x3A,0x12},
    {0x3F,0x00},
    {0x40,0x02},
    {0x41,0xFF},
    {0x42,0x01},
    {0x46,0x2D},
    {0x47,0x0F},
    {0x48,0x3C},
    {0x49,0x00},
    {0x4A,0x1E},
    {0x4B,0x00},
    {0x4C,0x20},
    {0x4D,0x00},
    {0x4E,0x1A},
    {0x4F,0x14},
    {0x50,0x00},
    {0x51,0x10},
    {0x52,0x00},
    {0x5C,0x02},
    {0x5D,0x00},
    {0x5E,0x10},
    {0x5F,0x3F},
    {0x60,0x27},
    {0x61,0x28},
    {0x62,0x00},
    {0x63,0x03},
    {0x64,0xF7},
    {0x65,0x03},
    {0x66,0xD9},
    {0x67,0x03},
    {0x68,0x01},
    {0x69,0xC8},
    {0x6A,0x40},
    {0x6D,0x04},
    {0x6E,0x00},
    {0x6F,0x00},
    {0x70,0x80},
    {0x71,0x00},
    {0x72,0x00},
    {0x73,0x00},
    {0x74,0xF0},
    {0x75,0x00},
    {0x80,0x42},
    {0x81,0x44},
    {0x82,0x04},
    {0x83,0x20},
    {0x84,0x20},
    {0x85,0x00},
    {0x86,0x10},
    {0x87,0x00},
    {0x88,0x05},
    {0x89,0x18},
    {0x8A,0x10},
    {0x8B,0x01},
    {0x8C,0x37},
    {0x8D,0x00},
    {0x8E,0xF0},
    {0x8F,0x81},
    {0x90,0x06},
    {0x91,0x06},
    {0x92,0x1E},
    {0x93,0x0D},
    {0x94,0x0A},
    {0x95,0x0A},
    {0x96,0x0C},
    {0x97,0x05},
    {0x98,0x0A},
    {0x99,0x41},
    {0x9A,0x14},
    {0x9B,0x0A},
    {0x9C,0x3F},
    {0x9D,0x33},
    {0x9E,0xAE},
    {0x9F,0xF9},
    {0xA0,0x48},
    {0xA1,0x13},
    {0xA2,0x10},
    {0xA3,0x08},
    {0xA4,0x30},
    {0xA5,0x19},
    {0xA6,0x10},
    {0xA7,0x08},
    {0xA8,0x24},
    {0xA9,0x04},
    {0xAA,0x1E},
    {0xAB,0x1E},
    {0xCC,0x19},
    {0xCD,0x0B},
    {0xCE,0x13},
    {0xCF,0x64},
    {0xD0,0x21},
    {0xD1,0x0F},
    {0xD2,0x88},
    {0xE0,0x01},
    {0xE1,0x04},
    {0xE2,0x41},
    {0xE3,0xD6},
    {0xE4,0x00},
    {0xE5,0x0C},
    {0xE6,0x0A},
    {0xE7,0x00},
    {0xE8,0x00},
    {0xE9,0x00},
    {0xEE,0x07},
    {0xEF,0x01},
    {0x00,0x1E},
    {0x01,0x1E},
    {0x02,0x0F},
    {0x03,0x10},
    {0x04,0x02},
    {0x05,0x00},
    {0x06,0xB0},
    {0x07,0x04},
    {0x08,0x0D},
    {0x09,0x0E},
    {0x0A,0x9C},
    {0x0B,0x04},
    {0x0C,0x05},
    {0x0D,0x0F},
    {0x0E,0x02},
    {0x0F,0x12},
    {0x10,0x02},
    {0x11,0x02},
    {0x12,0x00},
    {0x13,0x01},
    {0x14,0x05},
    {0x15,0x07},
    {0x16,0x05},
    {0x17,0x07},
    {0x18,0x01},
    {0x19,0x04},
    {0x1A,0x05},
    {0x1B,0x0C},
    {0x1C,0x2A},
    {0x1D,0x01},
    {0x1E,0x00},
    {0x21,0x00},
    {0x22,0x00},
    {0x23,0x00},
    {0x25,0x01},
    {0x26,0x00},
    {0x27,0x39},
    {0x28,0x7F},
    {0x29,0x08},
    {0x30,0x03},
    {0x31,0x00},
    {0x32,0x1A},
    {0x33,0x1A},
    {0x34,0x07},
    {0x35,0x07},
    {0x36,0x01},
    {0x37,0xFF},
    {0x38,0x36},
    {0x39,0x07},
    {0x3A,0x00},
    {0x3E,0xFF},
    {0x3F,0x00},
    {0x40,0x77},
    {0x41,0x40},
    {0x42,0x00},
    {0x43,0x30},
    {0x44,0xA0},
    {0x45,0x5C},
    {0x46,0x00},
    {0x47,0x00},
    {0x48,0x58},
    {0x4A,0x1E},
    {0x4B,0x1E},
    {0x4C,0x00},
    {0x4D,0x00},
    {0x4E,0xA0},
    {0x4F,0x80},
    {0x50,0x00},
    {0x51,0x00},
    {0x52,0x00},
    {0x53,0x00},
    {0x54,0x00},
    {0x57,0x80},
    {0x59,0x10},
    {0x5A,0x08},
    {0x5B,0x94},
    {0x5C,0xE8},
    {0x5D,0x08},
    {0x5E,0x3D},
    {0x5F,0x99},
    {0x60,0x45},
    {0x61,0x40},
    {0x63,0x2D},
    {0x64,0x02},
    {0x65,0x96},
    {0x66,0x00},
    {0x67,0x97},
    {0x68,0x01},
    {0x69,0xCD},
    {0x6A,0x01},
    {0x6B,0xB0},
    {0x6C,0x04},
    {0x6D,0x2C},
    {0x6E,0x01},
    {0x6F,0x32},
    {0x71,0x00},
    {0x72,0x01},
    {0x73,0x35},
    {0x74,0x00},
    {0x75,0x33},
    {0x76,0x31},
    {0x77,0x01},
    {0x7C,0x84},
    {0x7D,0x03},
    {0x7E,0x01}
  };


/******************************************************************************
function:	
	I2C Write and Read
******************************************************************************/
static void DEV_I2C_WriteByte(uint8_t add_, uint8_t data_)
{
	uint8_t Buf[1] = {0};
	Buf[0] = data_;
	HAL_I2C_Mem_Write(&PAJ7620U2_I2C, PAJ7620U2_I2C_ADDRESS, add_, I2C_MEMADD_SIZE_8BIT, Buf, 1, 500);
}

static void DEV_I2C_WriteWord(uint8_t add_, uint16_t data_)
{
	uint8_t Buf[2] = {0};
	Buf[0] = data_ >> 8; 
	Buf[1] = data_;
	HAL_I2C_Mem_Write(&PAJ7620U2_I2C, PAJ7620U2_I2C_ADDRESS, add_, I2C_MEMADD_SIZE_8BIT, Buf, 2, 500);
}

static uint8_t DEV_I2C_ReadByte(uint8_t add_)
{
	uint8_t Buf[1]={add_};
	HAL_I2C_Mem_Read(&PAJ7620U2_I2C, PAJ7620U2_I2C_ADDRESS, add_, I2C_MEMADD_SIZE_8BIT, Buf, 1, 500);
	return Buf[0];
}

static uint16_t DEV_I2C_ReadWord(uint8_t add_)
{
    uint8_t Buf[2]={0, 0};
		HAL_I2C_Mem_Read(&PAJ7620U2_I2C, PAJ7620U2_I2C_ADDRESS, add_, I2C_MEMADD_SIZE_8BIT, Buf, 2, 500);
    return ((Buf[1] << 8) | (Buf[0] & 0xff));
}

static uint16_t PAJ7620U2_GetPartID(void)
{
	uint8_t data[2] = {0, };
	data[0] = DEV_I2C_ReadByte(PAJ_PART_ID_L);	
	data[1] = DEV_I2C_ReadByte(PAJ_PART_ID_H);	
	
	return ((uint16_t)data[1]<<8) | data[0];
}
//----------------------------------------------------------------------------------

// при инициализации возвращает ( если соединение с датчиком удачное ) значение 0x7620 либо 0 если датчик не увидел
uint16_t PAJ7620U2_init(void)
{
	uint16_t ID = PAJ7620U2_GetPartID();
	
	if( ID == PAJ_PARTID ){
		DEV_I2C_WriteByte(PAJ_BANK_SELECT, PAJ_BANK_0);
		for (uint8_t i = 0; i < Init_Array; i++ )
		{
			 DEV_I2C_WriteByte(Init_Register_Array[i][0], Init_Register_Array[i][1]);//Power up initialize
		}
		DEV_I2C_WriteByte(PAJ_BANK_SELECT, PAJ_BANK_0);
		
		return ID;
	}
	
	return 0;
}
//----------------------------------------------------------------------------------

// запрашиваем номер движения ( если движения небыло вернет 0 ) если было то его номер
uint16_t PAJ7620U2_Gesture_ReadData(void)
{
	return DEV_I2C_ReadWord(PAJ_INT_FLAG1);
}
//----------------------------------------------------------------------------------

// Object Brightness (Max. 255)
uint8_t PAJ7620U2_PS_ReadObjBrightness(void)
{
	return DEV_I2C_ReadByte(PAJ_OBJ_BRIGHTNESS);			
}
//----------------------------------------------------------------------------------

// Object Size (Max. 900)
uint16_t PAJ7620U2_PS_ReadObjSize(void)
{
	return DEV_I2C_ReadWord(PAJ_OBJ_SIZE_L);			
}
//----------------------------------------------------------------------------------



//----------------------------------------------------------------------------------

/************************ (C) COPYRIGHT GKP *****END OF FILE****/

3、在main.c中先定义初始化变量:

/* USER CODE BEGIN PTD */
int Gesture_Data = 0;


uint8_t OBJ_BRIGHTNESS = 0;		// Object Brightness (Max. 255)
uint16_t OBJ_SIZE = 0;				// Object Size (Max. 900)

/* USER CODE END PTD */

4、添加PAJ7620U2的init函数。并在while循环中检测是否有手势,如果有,通过case分别给予打印到串口中。

uint16_t ID = PAJ7620U2_init();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
				Gesture_Data = PAJ7620U2_Gesture_ReadData();	

		// если движение было то
		if( Gesture_Data != PAJ_NONE )
		{
			switch (Gesture_Data)
			{
				case PAJ_UP:	
					HAL_UART_Transmit(&huart2,"Up -> Data\n",sizeof("Up -> Data\n"),100);
	
					break;	
				case PAJ_DOWN:	
					HAL_UART_Transmit(&huart2,"Down -> Data\n",sizeof("Down -> Data\n"),100);

				break;	// вниз
				case PAJ_LEFT:
					HAL_UART_Transmit(&huart2,"Left -> Data\n",sizeof("Left -> Data\n"),100);
	
				break;	// влево
				case PAJ_RIGHT:
					HAL_UART_Transmit(&huart2,"Right -> Data\n",sizeof("Right -> Data\n"),100);

				break;	// вправо
				case PAJ_FORWARD:
					HAL_UART_Transmit(&huart2,"Forward -> Data\n",sizeof("Forward -> Data\n"),100);
	
				break;	// вперед	
				case PAJ_BACKWARD:	
					HAL_UART_Transmit(&huart2,"Backward -> Data\n",sizeof("Backward -> Data\n"),100);

				break;	// назад
				case PAJ_CLOCKWISE:	
					HAL_UART_Transmit(&huart2,"Clockwise -> Data\n",sizeof("Clockwise -> Data\n"),100);
	
				break;	// по часовой стрелке
				case PAJ_ANTI_CLOCKWISE:	
					HAL_UART_Transmit(&huart2,"AntiClockwise -> Data\n",sizeof("AntiClockwise -> Data\n"),100);

				break;	// против часовой стрелки
				case PAJ_WAVE:	
					HAL_UART_Transmit(&huart2,"Wave -> Data\n",sizeof("Wave -> Data\n"),100);
					
				break;	// волна
				
				default: break;
			}
		}
		Gesture_Data = 0;
		
		// запрашиваем размер и освященность обьекта перед датчиком
		OBJ_BRIGHTNESS = PAJ7620U2_PS_ReadObjBrightness();	// Object Brightness (Max. 255)
		OBJ_SIZE = PAJ7620U2_PS_ReadObjSize();							// Object Size (Max. 900)
		
		HAL_Delay(50);
    /* USER CODE END WHILE */

【实验效果】

上传代码到开发板后,打开串口助手,可以看到可以正确的识别了手势,并打印出来。

image.png




关键词: STM32U0     PAJ7620U2    

专家
2025-08-04 14:12:41     打赏
2楼

不错啊


专家
2025-08-04 08:36:32     打赏
3楼

不错不错


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
次心念什么 保险费率是什么 lena是什么意思 肾阴虚的症状是什么 头痛去医院挂什么科
处女座是什么 pos是什么意思 17号来月经什么时候是排卵期 低骨量是什么意思 什么办法退烧快
如什么如什么成语 一个三点水一个有读什么字 什么是偏爱 姓毛的男孩取什么名字好 感冒发烧挂什么科
维生素d是什么东西 常吃南瓜有什么好处和坏处 尿路感染有什么症状 红细胞压积偏高是什么原因 总胆固醇高吃什么药
上皮细胞一个加号什么意思hcv8jop6ns8r.cn 9.20号是什么星座hcv9jop0ns8r.cn 蛋白高是什么病hcv7jop7ns0r.cn 宫颈粘液栓是什么样的hcv9jop1ns5r.cn gin是什么意思hcv8jop4ns2r.cn
处女膜破了有什么影响fenrenren.com 王字旁的字与什么有关hcv8jop7ns2r.cn 绝经什么意思gangsutong.com a21和以纯什么关系hcv8jop9ns6r.cn 舌头口腔溃疡是什么原因引起的hcv8jop1ns4r.cn
什么水适合婴儿冲奶粉hcv8jop7ns7r.cn 美尼尔眩晕症吃什么药hcv9jop6ns6r.cn 常染色体是什么hcv8jop7ns1r.cn 大姨妈很多血块是什么原因0297y7.com 香港脚是什么hcv8jop6ns3r.cn
头疼看什么科hlguo.com 沸去掉三点水念什么bfb118.com 宜家宜室什么意思hcv7jop9ns4r.cn 什么是公历年份hcv7jop9ns1r.cn 尿酸高吃什么中药能降下来hcv9jop6ns5r.cn
百度