找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 19187|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

STM32 IIC通信之PAJ7620U2手勢(shì)識(shí)別模塊驅(qū)動(dòng)程序源碼詳解

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:407977 發(fā)表于 2019-1-26 18:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
大家好。本人小白一個(gè),最近在自學(xué)stm32,想用手勢(shì)識(shí)別模塊做一點(diǎn)好玩的,正好借此鞏固IIC 通信的內(nèi)容。
很多人剛剛接觸IIC、SPI、CAN等通信方式時(shí)都會(huì)有一堆的問(wèn)題:為什么要學(xué)它?學(xué)它可以做什么?我該怎么去學(xué)習(xí)它呢?我就在這里和大家分享一下自己學(xué)習(xí)時(shí)的所思所感吧,若有表述不對(duì)之處,還請(qǐng)各位大佬指出,我好立刻改正。
話不多說(shuō),先上硬貨。
一、回答上面的問(wèn)題:
1、什么是IIC通信呢?簡(jiǎn)單,兩條線通信同步串行總線。(在此不做更多說(shuō)明)
2、為什么要學(xué)習(xí)這些看起來(lái)“根本沒(méi)多大用處”的通信協(xié)議呢?大哥,你總不能永遠(yuǎn)靠串口吃飯吧,況且真正到了實(shí)際項(xiàng)目中,通信的方式要根據(jù)環(huán)境選擇,你總不能想當(dāng)然的自己決定吧,學(xué)好這些通信方式,你才敢有底氣去接手一些大項(xiàng)目吧。
3、該怎么學(xué)呢?個(gè)人覺(jué)得,剛剛學(xué)習(xí)階段,只要理解大概原理,然后會(huì)熟練調(diào)用函數(shù)就可以了。
二、初識(shí)IIC通信:
1、認(rèn)識(shí)IIC的兩根線:SCL時(shí)鐘線和SDA數(shù)據(jù)線。顧名思義,時(shí)鐘線,是為整個(gè)通信過(guò)程提供了時(shí)鐘信號(hào),也可以說(shuō),是作為通信時(shí)的“參照物”(后面會(huì)說(shuō)明).SDA即是數(shù)據(jù)線,在每一個(gè)周期里發(fā)送0或者1,用這些0和1傳輸數(shù)據(jù)。
2、如何傳輸數(shù)據(jù)呢?
首先,要傳輸數(shù)據(jù),你總的告訴“另一半”傳輸開(kāi)始了吧,所以,開(kāi)始信號(hào)是必不可少的,對(duì)應(yīng)也要有結(jié)束信號(hào)咯,你的“另一半"接收到了數(shù)據(jù),總得告訴你一聲吧,所以,應(yīng)答信號(hào)也是少不了的。記住啦,它一點(diǎn)也不難,還有,我會(huì)按照我的理解方式來(lái)描述它,不會(huì)枯燥的。
3.這些信號(hào)如何通過(guò)兩根線就實(shí)現(xiàn)呢????
剛才提到了,時(shí)鐘線SCL作為參照,對(duì)、沒(méi)錯(cuò),就是這個(gè)參照物起了作用。
開(kāi)始信號(hào):SCL為高電平時(shí),SDA由高電平向低轉(zhuǎn)變。傳輸開(kāi)始。
結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高轉(zhuǎn)變。傳輸結(jié)束。
應(yīng)答信號(hào):接收數(shù)據(jù)的IC 在接收完8個(gè)bit的數(shù)據(jù)之后,向發(fā)送數(shù)據(jù)的IC返回特定脈沖的低電平,表示數(shù)據(jù)已被簽收。
放到實(shí)際實(shí)驗(yàn)中怎么理解呢?CPU向受控單元發(fā)送一段數(shù)據(jù)之后,等待受控單元發(fā)送一個(gè)應(yīng)答信號(hào),若未接受到應(yīng)答信號(hào),表示受控單元發(fā)生故障。這些信號(hào)中,只有開(kāi)始信號(hào)時(shí)必須的。而且,只有當(dāng)SCL上為低電平時(shí),SDA上的電平才允許發(fā)生變化。(這些資源網(wǎng)上太多了)
這些東西通俗易懂,是必須要了解的。
三、在實(shí)戰(zhàn)中解讀IIC通信。
其實(shí),在工程中用到的絕大部分是調(diào)用IIC相關(guān)函數(shù)。
下面就用手勢(shì)識(shí)別模塊舉例,我用的是正點(diǎn)原子配套的PAJ7620U2.
首先是初始化IIC對(duì)應(yīng)的引腳 (我認(rèn)為硬件IIC和軟件IIC所實(shí)現(xiàn)的功能都一樣,不過(guò)模擬IIC使用的更廣泛,因?yàn)榉奖惆,而且,stm32硬件IIC引腳很雞肋,還不如不用)。
PAJ2670U2 I2C初始化,(SDA\SCL都被拉高,表示為空閑狀態(tài))
void GS_i2c_init(void)//
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOC, ENABLE );  
     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_SetBits(GPIOC,GPIO_Pin_11|GPIO_Pin_12);//PB11,PB12 被拉高
   
}
開(kāi)始信號(hào):
static void GS_IIC_Start(void)
{
    GS_SDA_OUT();//
    GS_IIC_SDA=1;            
    GS_IIC_SCL=1;
    delay_us(4);
     GS_IIC_SDA=0;//START:when CLK is high,DATA change form high to low
    delay_us(4);
    GS_IIC_SCL=0;//
}
說(shuō)實(shí)話,感覺(jué)這樣照著程序COPY代碼太土了,而且浪費(fèi)大家時(shí)間。下面,重要的干貨來(lái)了。
1、要明確一點(diǎn),IIC是一種通信方式,不要習(xí)慣性想著IIC又該怎么配置?是否要開(kāi)啟對(duì)應(yīng)的時(shí)鐘?是否可以產(chǎn)生中斷?等等,這些東西都是用給外設(shè)配置的,通信方式的底層函數(shù)基本是不會(huì)變的,你要做的就是基于已有的幾種命令,與你的IC進(jìn)行通信。
2、IIC根本不難,然而,就代表不用敲代碼了嗎?錯(cuò),大錯(cuò)特錯(cuò),好記性不如爛筆頭,找一個(gè)IIC通信例程,敲幾遍.C文件里的代碼,對(duì)于以后做項(xiàng)目還是很有幫助的。
3.不要懶惰,學(xué)習(xí)這幾種通信方式,最好是對(duì)比著學(xué)習(xí),在接下來(lái)的幾天里,我將會(huì)以這幾種方式,分別呈上我對(duì)幾種通信方式的理解。大牛不喜勿噴,謝謝。
我曾許下十年,只為最美的遇見(jiàn)。


實(shí)驗(yàn)?zāi)康?
    學(xué)習(xí)ATK-PAJ7620U2手勢(shì)識(shí)別模塊的使用,實(shí)現(xiàn)9個(gè)手勢(shì)識(shí)別(GS)和接近距離(PS)的檢測(cè)功能,輸出結(jié)果顯示在LCD液晶中。
   
硬件資源:
    1,DS0、DS1(連接在PA8\PD2)
    2,串口1(波特率:115200,PA9/PA10連接在板載USB轉(zhuǎn)串口芯片CH340上面)
    3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模塊(通過(guò)GPIO驅(qū)動(dòng),連接關(guān)系見(jiàn)lcd.h)  
    4,按鍵KEY0(PC5)/KEY1(PA15)/WK_UP(PA0)
    5,ATK-PAJ7620U2手勢(shì)識(shí)別模塊一個(gè)(連接在PC11(SDA),PC12(SCL),INT未用到),可直接插在板上ATK-MODULE的接口。
   
實(shí)驗(yàn)現(xiàn)象:
        本實(shí)驗(yàn)功能簡(jiǎn)介:本實(shí)驗(yàn)用于測(cè)試ATK-PAJ7620U2手勢(shì)識(shí)別模塊,包含兩個(gè)測(cè)試:
   
    1,手勢(shì)識(shí)別(GS)測(cè)試-通過(guò)KEY1按鍵進(jìn)入此項(xiàng)測(cè)試。實(shí)現(xiàn)PAJ7620U2自帶9個(gè)手勢(shì)識(shí)別的檢測(cè),向上(Up)、向下(Dowm)、
          向左(Left)、向右(Right)、向前(Forward)、向后(Backward)、順時(shí)針(Clockwise)、逆時(shí)針(Counterclockwise)、
          和揮動(dòng)(Wave)。當(dāng)識(shí)別到正確的手勢(shì),DS1燈會(huì)閃爍,同時(shí)手勢(shì)結(jié)果顯示在LCD屏幕上,并且串口輸出。DS0燈閃爍提示程序正在
          運(yùn)行,按下KEY_UP按鍵,可返回主菜單頁(yè)面。
        2,接近檢測(cè)(PS)測(cè)試-通過(guò)KEY0按鍵進(jìn)入此項(xiàng)測(cè)試。實(shí)現(xiàn)讀取PAJ7620U2接近物體的體積大小和亮度的傳感器數(shù)據(jù),顯示在LCD屏幕上,并串口輸出。
           同時(shí)DS0燈閃爍,提示程序正在運(yùn)行,當(dāng)按下KEY_UP按鍵,可返回主菜單頁(yè)面。
        
       另外,本例程將PAJ7620U2的讀寫(xiě)操作函數(shù)加入U(xiǎn)SMART控制,我們可以通過(guò)USMART對(duì)PAJ7620U2進(jìn)行控制。
   
注意事項(xiàng):
    1,4.3寸和7寸屏需要比較大電流,USB供電可能不足,請(qǐng)用外部電源適配器(推薦外接12V 1A電源).
    2,本例程在LCD_Init函數(shù)里面(在lcd.c),用到了printf,如果不初始化串口1,將導(dǎo)致液晶無(wú)法顯示!!  
        3,模塊是屬于光學(xué)器件,傳感器表層的不潔凈,會(huì)容易導(dǎo)致測(cè)量不佳。所以模塊在使用前,保持傳感器表層的清潔度,工作時(shí)請(qǐng)勿用手去觸摸,以免導(dǎo)致模塊工作不正常。

單片機(jī)源程序如下:
  1. #include "paj7620u2.h"
  2. #include "paj7620u2_cfg.h"
  3. #include "delay.h"
  4. #include "usart.h"
  5. #include "led.h"
  6. #include "lcd.h"
  7. #include "key.h"


  8. //選擇PAJ7620U2 BANK區(qū)域
  9. void paj7620u2_selectBank(bank_e bank)
  10. {
  11.         switch(bank)
  12.         {
  13.                 case BANK0: GS_Write_Byte(PAJ_REGITER_BANK_SEL,PAJ_BANK0);break;//BANK0寄存器區(qū)域
  14.                 case BANK1: GS_Write_Byte(PAJ_REGITER_BANK_SEL,PAJ_BANK1);break;//BANK1寄存器區(qū)域
  15.         }
  16.                         
  17. }

  18. //PAJ7620U2喚醒
  19. u8 paj7620u2_wakeup(void)
  20. {
  21.         u8 data=0x0a;
  22.         GS_WakeUp();//喚醒PAJ7620U2
  23.         delay_ms(5);//喚醒時(shí)間>400us
  24.         GS_WakeUp();//喚醒PAJ7620U2
  25.         delay_ms(5);//喚醒時(shí)間>400us
  26.         paj7620u2_selectBank(BANK0);//進(jìn)入BANK0寄存器區(qū)域
  27.         data = GS_Read_Byte(0x00);//讀取狀態(tài)
  28.         if(data!=0x20) return 0; //喚醒失敗
  29.         
  30.         return 1;
  31. }

  32. //PAJ7620U2初始化
  33. //返回值:0:失敗 1:成功
  34. u8 paj7620u2_init(void)
  35. {
  36.         u8 i;
  37.         u8 status;
  38.         
  39.         GS_i2c_init();//IIC初始化
  40.     status = paj7620u2_wakeup();//喚醒PAJ7620U2
  41.         if(!status) return 0;
  42.         paj7620u2_selectBank(BANK0);//進(jìn)入BANK0寄存器區(qū)域
  43.         for(i=0;i<INIT_SIZE;i++)
  44.         {
  45.                 GS_Write_Byte(init_Array[i][0],init_Array[i][1]);//初始化PAJ7620U2
  46.         }
  47.     paj7620u2_selectBank(BANK0);//切換回BANK0寄存器區(qū)域
  48.         
  49.         return 1;
  50. }

  51. //主菜單
  52. void paj7620u2_test_ui(void)
  53. {
  54.         POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
  55.         LCD_Fill(30,170,300,300,WHITE);
  56.         LCD_ShowString(30,170,200,16,16,"KEY1:   Gesture test");//手勢(shì)識(shí)別測(cè)試
  57.         LCD_ShowString(30,190,200,16,16,"KEY0:   Ps test     ");//接近距離測(cè)試
  58.         
  59. }

  60. //手勢(shì)識(shí)別測(cè)試
  61. void Gesture_test(void)
  62. {
  63.         u8 i;
  64.     u8 status;
  65.         u8 key;
  66.         u8 data[2]={0x00};
  67.         u16 gesture_data;
  68.         u8 ledflash=0;
  69.         paj7620u2_selectBank(BANK0);//進(jìn)入BANK0寄存器區(qū)域
  70.         for(i=0;i<GESTURE_SIZE;i++)
  71.         {
  72.                 GS_Write_Byte(gesture_arry[i][0],gesture_arry[i][1]);//手勢(shì)識(shí)別模式初始化
  73.         }
  74.         paj7620u2_selectBank(BANK0);//切換回BANK0寄存器區(qū)域
  75.         i=0;
  76.         POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
  77.         LCD_Fill(30,170,300,300,WHITE);
  78.         LCD_ShowString(30,180,200,16,16,"KEY_UP: Exit the test");
  79.         LCD_ShowString(30,210,200,16,16,"Gesture test");
  80.         POINT_COLOR=RED;//設(shè)置字體為藍(lán)色
  81.         while(1)
  82.         {
  83.         key = KEY_Scan(0);
  84.                 if(key==WKUP_PRES)
  85.                 {
  86.                         GS_Write_Byte(PAJ_SET_INT_FLAG1,0X00);//關(guān)閉手勢(shì)識(shí)別中斷輸出
  87.                         GS_Write_Byte(PAJ_SET_INT_FLAG2,0X00);
  88.                         break;
  89.                 }               
  90.         status = GS_Read_nByte(PAJ_GET_INT_FLAG1,2,&data[0]);//讀取手勢(shì)狀態(tài)                        
  91.                 if(!status)
  92.                 {   
  93.                         gesture_data =(u16)data[1]<<8 | data[0];
  94.                         if(gesture_data)
  95.                         {
  96.                                 switch(gesture_data)
  97.                                 {
  98.                                         case GES_UP:               LCD_ShowString(110,250,200,16,24,"UP          ");
  99.                                                                    printf("Up\r\n");            ledflash=1;      break; //向上
  100.                                         case GES_DOWM:             LCD_ShowString(100,250,200,16,24,"Dowm        ");      
  101.                                                                           printf("Dowm\r\n");          ledflash=1;      break; //向下
  102.                                         case GES_LEFT:             LCD_ShowString(100,250,200,16,24,"Left        ");           
  103.                                                                          printf("Left\r\n");          ledflash=1;      break; //向左
  104.                                         case GES_RIGHT:            LCD_ShowString(100,250,200,16,24,"Right       ");      
  105.                                                                        printf("Right\r\n");         ledflash=1;      break; //向右
  106.                                         case GES_FORWARD:          LCD_ShowString(80,250,200,16,24,"Forward     ");        
  107.                                                                        printf("Forward\r\n");       ledflash=1;      break; //向前
  108.                                         case GES_BACKWARD:         LCD_ShowString(80,250,200,16,24,"Backward    ");   
  109.                                                                        printf("Backward\r\n");      ledflash=1;      break; //向后
  110.                                         case GES_CLOCKWISE:        LCD_ShowString(70,250,200,16,24,"Clockwise   ");     
  111.                                                                        printf("Clockwise\r\n");     ledflash=1;      break; //順時(shí)針
  112.                                         case GES_COUNT_CLOCKWISE:  LCD_ShowString(50,250,200,16,24,"AntiClockwise");  
  113.                                                                           printf("AntiClockwise\r\n"); ledflash=1;      break; //逆時(shí)針
  114.                                         case GES_WAVE:             LCD_ShowString(100,250,200,16,24,"Wave         ");   
  115.                                                                        printf("Wave\r\n");          ledflash=1;      break; //揮動(dòng)
  116.                                         default:  ledflash=0; break;
  117.                                        
  118.                                 }        
  119.                 if(ledflash)//DS1閃爍
  120.                                 {   
  121.                                         LED1=0;delay_ms(80);LED1=1;delay_ms(80);
  122.                                         LED1=0;delay_ms(80);LED1=1;delay_ms(80);
  123.                                         LCD_ShowString(40,250,200,16,24,"                        ");
  124.                                         ledflash=0;
  125.                                 }                                                
  126.                         }
  127.                         
  128.                 }
  129.                 delay_ms(50);
  130.                 i++;
  131.                 if(i==5)
  132.                 {
  133.                         LED0=!LED0;//提示系統(tǒng)正在運(yùn)行        
  134.                         i=0;
  135.                 }                  
  136.         }
  137. }

  138. //接近檢測(cè)測(cè)試
  139. void Ps_test(void)
  140. {
  141.     u8 i;
  142.         u8 key;
  143.         u8 data[2]={0x00};
  144.         u8 obj_brightness=0;
  145.         u16 obj_size=0;
  146.         
  147.         paj7620u2_selectBank(BANK0);//進(jìn)入BANK0寄存器區(qū)域
  148.         for(i=0;i<PROXIM_SIZE;i++)
  149.         {
  150.                 GS_Write_Byte(proximity_arry[i][0],proximity_arry[i][1]);//接近檢測(cè)模式初始化
  151.         }
  152.         paj7620u2_selectBank(BANK0);//返回BANK0寄存器區(qū)域
  153.         i=0;
  154.         POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
  155.         LCD_Fill(30,170,300,300,WHITE);
  156.         LCD_ShowString(30,180,200,16,16,"KEY_UP: Exit the test");
  157.         LCD_ShowString(30,210,200,16,16,"Ps test");
  158.         LCD_ShowString(30,240,200,16,16,"Brightness");
  159.         LCD_ShowString(160,240,200,16,16,"Size");
  160.         POINT_COLOR=RED;//設(shè)置字體為藍(lán)色        
  161.         
  162.         while(1)
  163.         {        
  164.                 key = KEY_Scan(0);
  165.                 if(key==WKUP_PRES) break;
  166.                
  167.                 obj_brightness = GS_Read_Byte(PAJ_GET_OBJECT_BRIGHTNESS);//讀取物體亮度
  168.                 data[0] = GS_Read_Byte(PAJ_GET_OBJECT_SIZE_1);//讀取物體大小
  169.                 data[1] = GS_Read_Byte(PAJ_GET_OBJECT_SIZE_2);
  170.                 obj_size = ((u16)data[1] & 0x0f)<<8 | data[0];
  171.                 LCD_ShowxNum(50,270,obj_brightness,3,24,0);
  172.                 LCD_ShowxNum(152,270,obj_size,3,24,0);
  173.                 printf("obj_brightness: %d\r\n",obj_brightness);
  174.         printf("obj_size: %d\r\n",obj_size);
  175.                
  176.                 delay_ms(100);
  177.                 i++;
  178.                 if(i==5)
  179.                 {
  180.                     LED0=!LED0;//提示系統(tǒng)正在運(yùn)行        
  181.                         i=0;
  182.                 }
  183.         }
  184.         
  185. }
  186. //PAJ7620U2傳感器測(cè)試
  187. void paj7620u2_sensor_test(void)
  188. {   
  189.          u8 i=0;
  190.          u8 key;
  191.         
  192.      paj7620u2_test_ui();//主菜單顯示
  193.          while(1)
  194.          {
  195.                  key = KEY_Scan(0);//按鍵掃描
  196.                  if(key)
  197.                  {
  198.                          switch(key)
  199.                          {
  200.                                  case KEY1_PRES:  Gesture_test();   break;//手勢(shì)檢測(cè)模式
  201.                                  case KEY0_PRES:  Ps_test();        break;//接近檢測(cè)模式  
  202.                          }
  203.                          paj7620u2_test_ui();
  204.                  }
  205.                 delay_ms(50);
  206.                 i++;
  207.                 if(i==5)
  208.                 {
  209.                     LED0=!LED0;//提示系統(tǒng)正在運(yùn)行        
  210.                         i=0;
  211.                 }
  212.                  
  213.          }
  214. }
復(fù)制代碼

主程序:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "key.h"
  7. #include "usmart.h"
  8. #include "paj7620u2.h"

  9.            
  10. int main(void)
  11. {

  12.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
  13.         delay_init();                     //延時(shí)函數(shù)初始化         
  14.         uart_init(115200);                  //串口初始化為115200
  15.         LED_Init();                                   //初始化與LED連接的硬件接口
  16.          LCD_Init();                     //初始化LCD
  17.         KEY_Init();                                 //按鍵初始化
  18.     usmart_dev.init(72);          //初始化USMART                        
  19.     POINT_COLOR=RED;         //設(shè)置字體為紅色
  20.     LCD_ShowString(30,50,200,16,16,"Mini STM32");        
  21.         LCD_ShowString(30,70,200,16,16,"Sensor PAJ7620U2 TEST");        
  22.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  23.         LCD_ShowString(30,110,200,16,16,"2017/8/23");            
  24.         POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色                  
  25.          while(!paj7620u2_init())//PAJ7620U2傳感器初始化
  26.         {
  27.             printf("PAJ7620U2 Error!!!\r\n");
  28.                 LCD_ShowString(30,140,200,16,16,"PAJ7620U2 Error!!!");
  29.             delay_ms(500);
  30.                 LCD_ShowString(30,140,200,16,16,"                  ");
  31.                 delay_ms(500);
  32.                 LED0=!LED0;//DS0閃爍
  33.                
  34.         }
  35.     printf("PAJ7620U2 OK\r\n");
  36.         LCD_ShowString(30,140,200,16,16,"PAJ7620U2 OK");
  37.         while(1)
  38.         {
  39.                 paj7620u2_sensor_test();//PAJ7620U2傳感器測(cè)試
  40.         }
  41. }
復(fù)制代碼


所有資料51hei提供下載:
(標(biāo)準(zhǔn)庫(kù)版本,適合MiniV3 STM32開(kāi)發(fā)板)擴(kuò)展實(shí)驗(yàn)22 ATK-PAJ7620模塊實(shí)驗(yàn).7z (245.78 KB, 下載次數(shù): 377)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂3 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:473878 發(fā)表于 2019-1-29 14:38 | 只看該作者
#include "paj7620u2_cfg.h"
#include "key.h"
怎麼沒(méi)有這兩個(gè)副程序,上面的程序有呼叫到這兩個(gè)副程序的,煩有空補(bǔ)上好嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:589142 發(fā)表于 2019-7-25 09:11 | 只看該作者
curster 發(fā)表于 2019-1-29 14:38
#include "paj7620u2_cfg.h"
#include "key.h"
怎麼沒(méi)有這兩個(gè)副程序,上面的程序有呼叫到這兩個(gè)副程序的, ...

他的那個(gè)文檔里有的
回復(fù)

使用道具 舉報(bào)

地板
ID:276663 發(fā)表于 2019-9-23 20:33 | 只看該作者
識(shí)別距離有多遠(yuǎn)啊
回復(fù)

使用道具 舉報(bào)

5#
ID:620555 發(fā)表于 2019-10-8 15:48 | 只看該作者
IdeaMing 發(fā)表于 2019-9-23 20:33
識(shí)別距離有多遠(yuǎn)啊

5到15厘米
回復(fù)

使用道具 舉報(bào)

6#
ID:620555 發(fā)表于 2019-10-8 16:05 | 只看該作者
看了他這個(gè)文檔,受益菲淺,真是感謝
回復(fù)

使用道具 舉報(bào)

7#
ID:605170 發(fā)表于 2019-10-15 14:41 | 只看該作者
可以編譯,謝謝分享~
回復(fù)

使用道具 舉報(bào)

8#
ID:699035 發(fā)表于 2020-3-17 09:08 | 只看該作者
可以在51單片機(jī)上實(shí)現(xiàn)嗎
回復(fù)

使用道具 舉報(bào)

9#
ID:555537 發(fā)表于 2020-4-26 18:34 | 只看該作者
我測(cè)手勢(shì)的靈敏度不高什么情況?有時(shí)間能測(cè)出來(lái),有時(shí)間測(cè)不出來(lái)?并且不能連續(xù)測(cè)
回復(fù)

使用道具 舉報(bào)

10#
ID:240028 發(fā)表于 2020-5-15 19:54 | 只看該作者
挺不錯(cuò)的  謝謝分享
回復(fù)

使用道具 舉報(bào)

11#
ID:776997 發(fā)表于 2020-6-12 10:28 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

12#
ID:779799 發(fā)表于 2020-6-15 14:19 | 只看該作者
學(xué)習(xí)下。謝謝分享
回復(fù)

使用道具 舉報(bào)

13#
ID:807643 發(fā)表于 2020-7-24 16:00 | 只看該作者
正想用這個(gè)做一個(gè)感應(yīng)控制器,不知道PAJ7620U2的庫(kù)文件怎么寫(xiě)
回復(fù)

使用道具 舉報(bào)

14#
ID:139190 發(fā)表于 2020-10-12 23:11 | 只看該作者
PAJ7620U2的IIC地址是多少?可以修改嗎?謝謝!
回復(fù)

使用道具 舉報(bào)

15#
ID:762171 發(fā)表于 2021-3-22 14:50 | 只看該作者
感謝樓主分享,受益匪淺
回復(fù)

使用道具 舉報(bào)

16#
ID:913392 發(fā)表于 2021-4-28 09:22 | 只看該作者
感謝樓主分享,受益匪淺
回復(fù)

使用道具 舉報(bào)

17#
ID:1005996 發(fā)表于 2022-2-21 10:36 | 只看該作者

感謝樓主分享,受益匪淺
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表