久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于STM32+FDC2214的手勢識別程序,OLED顯示,音樂播放

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:319697 發(fā)表于 2019-1-16 19:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本設(shè)計以STM32F103ZET6為主控芯片,TI公司的FDC2214芯片傳感模塊為手勢識別傳感器模塊,0.96寸OLED為識別結(jié)果顯示模塊,XY-V17B為語音播報模塊,設(shè)計了一種手勢識別裝置。利用覆銅板感應(yīng)手勢,感應(yīng)信號送入FDC2214芯片,單片機讀取FDC2214采集的信息數(shù)據(jù),對讀取的數(shù)據(jù)進行軟件濾波,濾波算法包含算數(shù)平均濾波、中位值濾波法等。測試結(jié)果表明:該作品實現(xiàn)了學(xué)習(xí)、猜拳、劃拳手勢的準確判別,并擴展了語音播報結(jié)果和特定手勢播放特定音樂等相關(guān)功能。

STM32單片機源程序如下:
  1. #include "bsp.h"
  2. #include "stmflash.h"
  3. #include "delay.h"
  4. #include "key.h"
  5. #include "sys.h"
  6. #include "oled.h"
  7. #include "usart.h"         
  8. #include "XYV17B.h"
  9. int ChValue[4] = {0};
  10. const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};
  11.        
  12. int xuexi_value[8];//學(xué)習(xí)值保存
  13. int xuexi_read_value[8];//學(xué)習(xí)值讀取
  14.        
  15. #define FLASH_SAVE_ADDR  0X08070000                                 //設(shè)置FLASH 保存地址(必須為偶數(shù))
  16. #define SIZE1 sizeof(xuexi_value)       

  17. /*******************************************************************************
  18. * 函數(shù)名        : main
  19. * 描述            : 主函數(shù)
  20. * 輸入?yún)?shù)  : 無
  21. * 返回參數(shù)  : 無
  22. *******************************************************************************/       
  23. int main()
  24. {
  25.         int x1=100,x2=100,y1=30,y2=30,y3=30,y4=30;
  26.         delay_init();
  27.         uart_init(9600);
  28.         IIC_Init();
  29.        
  30.         OLED_Init();                 //初始化oled
  31.         delay_ms(100);
  32.         KEY_Init();                          //初始化KEY
  33.         //InitSingleFDC2214();//初始化單通道
  34.         InitMultiFDC2214();
  35.                
  36.         OLED_Clear();
  37.        
  38.         XYV17B_init();
  39.         //////////////////////////////學(xué)習(xí)
  40.         if(xuexi==0)
  41.         {
  42.         delay_ms(100);
  43.         if(xuexi==0)
  44.         {
  45.         STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)xuexi_value,SIZE1);
  46.         SC_black_Init();
  47.         STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)xuexi_value,SIZE1);
  48.         while(1)
  49.         {
  50.         OLED_Clear();//清屏
  51.         OLED_ShowString(0,0,"OK!");       
  52.                 while(1)
  53.                 {
  54.                         printf("石頭=%d\n",xuexi_value[0]);
  55.                         printf("剪刀=%d\n",xuexi_value[1]);
  56.                         printf("布=%d\n",xuexi_value[2]);
  57.                         printf("1=%d\n",xuexi_value[3]);
  58.                         printf("2=%d\n",xuexi_value[4]);
  59.                         printf("3=%d\n",xuexi_value[5]);
  60.                         printf("4=%d\n",xuexi_value[6]);
  61.                         printf("5=%d\n",xuexi_value[7]);
  62.                         delay_ms(5000);
  63.                 }
  64.         }
  65.         }       
  66. }
  67.         STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)xuexi_read_value,SIZE1);//讀取flash的值

  68. ////////////////////////定義范圍////////////////////////////////
  69.   x1=(xuexi_read_value[1]-xuexi_read_value[0])/2;
  70.   x2=(xuexi_read_value[0]-xuexi_read_value[2])/2;

  71.   y1=(xuexi_read_value[3]-xuexi_read_value[4])/2;
  72.   y2=(xuexi_read_value[4]-xuexi_read_value[5])/2;
  73.   y3=(xuexi_read_value[5]-xuexi_read_value[6])/2;
  74.   y4=(xuexi_read_value[6]-xuexi_read_value[7])/2;



  75. ////////////////////////讀取flash的值////////////////////////////////////////
  76.                         while(0)
  77.                 {
  78.                         printf("石頭=%d\n",xuexi_value[0]);
  79.                         printf("剪刀=%d\n",xuexi_value[1]);
  80.                         printf("布=%d\n",xuexi_value[2]);
  81.                         printf("1=%d\n",xuexi_value[3]);
  82.                         printf("2=%d\n",xuexi_value[4]);
  83.                         printf("3=%d\n",xuexi_value[5]);
  84.                         printf("4=%d\n",xuexi_value[6]);
  85.                         printf("5=%d\n",xuexi_value[7]);
  86.                         delay_ms(5000);
  87.                 }
  88.                 qumu(1);//曲目   1-20
  89. //void STOP_music();
  90. /////////////////////主程序//////////////////////////////////////////////////               
  91.         while(1)
  92.         {
  93.         OLED_Clear();       
  94.         //        KEY_value();
  95. //                ChValue[0] = FDC2X14ReadCH(1);
  96. //                ChValue[1] = FDC2X14ReadCH(2);
  97. //                ChValue[2] = FDC2X14ReadCH(3);
  98. //                ChValue[3] = Filter4();
  99.                 OLED_ShowNum(0,6,ChValue[3],10,16);
  100.                   ChValue[3] = FDC2X14ReadCH(4)/1000;
  101.         //        OLED_ShowNum(30,3,ChValue[3],7,16);
  102.                 if(moshiqiehuan==0)//猜拳
  103.                 {
  104.                         //清屏
  105.        
  106.         //if(ChValue[3]>=8700000&&ChValue[3]<=8900000)
  107.                         if(ChValue[3]>=(xuexi_read_value[0]-x2)&&ChValue[3]<=(xuexi_read_value[0]+x1))
  108.                 {
  109.        
  110.      OLED_ShowCHinese(30,3,1);
  111.            OLED_ShowCHinese(50,3,2);//石頭
  112.                  printf("石頭=%d\n",ChValue[3]);
  113.                 }
  114.                 else
  115.                 if(ChValue[3]>=(xuexi_read_value[1]-x1)&&ChValue[3]<=(xuexi_read_value[1]+500))
  116.                 {
  117.        
  118.                  OLED_ShowCHinese(45,3,3);
  119.                  OLED_ShowCHinese(65,3,4);//剪刀
  120.            printf("剪刀=%d\n",ChValue[3]);
  121.                 }
  122.                 else
  123.                 if(ChValue[3]>=(xuexi_read_value[2]-500)&&ChValue[3]<=(xuexi_read_value[2]+x2))
  124.                 {
  125.                  OLED_ShowCHinese(60,3,5);//布
  126.                  printf("布=%d\n",ChValue[3]);
  127.                 }
  128.                 else
  129.                 {
  130.                          OLED_ShowString(0,0,"Error!");       
  131.                   printf("Error=%d\n",ChValue[3]);       
  132.                 }
  133.         }
  134.                
  135.        
  136.         if(moshiqiehuan==1)//劃拳
  137.         {
  138.                 if(ChValue[3]>=(xuexi_read_value[3]-y1)&&ChValue[3]<=(xuexi_read_value[3]+200))
  139.                 {
  140.                 OLED_ShowNum(0,3,1,1,16);
  141.                 printf("1=%d\n",ChValue[3]);
  142.                 }
  143.                 else
  144.                 if(ChValue[3]>=(xuexi_read_value[4]-y2)&&ChValue[3]<(xuexi_read_value[4]+y1))
  145.                 {
  146.                 OLED_ShowNum(15,3,2,1,16);
  147.                 printf("2=%d\n",ChValue[3]);
  148.                 }
  149.                 else
  150.                 if(ChValue[3]>=(xuexi_read_value[5]-y3)&&ChValue[3]<=(xuexi_read_value[5]+y2))
  151.                 {
  152.                 OLED_ShowNum(30,3,3,1,16);
  153.                 printf("3=%d\n",ChValue[3]);
  154.                 }
  155.                 else
  156.                 if(ChValue[3]>=(xuexi_read_value[6]-y4)&&ChValue[3]<=(xuexi_read_value[6]+y3))
  157.                 {
  158.                 OLED_ShowNum(45,3,4,1,16);
  159.                 printf("4=%d\n",ChValue[3]);
  160.                 }
  161.                 else
  162.                 if(ChValue[3]>=(xuexi_read_value[7]-500)&&ChValue[3]<=(xuexi_read_value[7]+y4))
  163.                 {
  164.                 OLED_ShowNum(60,3,5,1,16);
  165.                 printf("5=%d\n",ChValue[3]);
  166.                 }
  167.                 else
  168.                 {
  169.                          OLED_ShowString(0,0,"Error!");       
  170.                 printf("Error=%d\n",ChValue[3]);                       
  171.                 }
  172.         }
  173.                 //delay_ms(10);
  174.         }       
  175.                
  176. }
復(fù)制代碼

所有資料51hei提供下載:
7.22 - 副本.7z (206.42 KB, 下載次數(shù): 108)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:374694 發(fā)表于 2019-3-4 00:00 | 只看該作者
厲害了,來學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

板凳
ID:475858 發(fā)表于 2019-3-5 14:37 | 只看該作者
下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報

地板
ID:475858 發(fā)表于 2019-3-6 13:16 | 只看該作者
這個手勢傳感模塊應(yīng)該不便宜吧
回復(fù)

使用道具 舉報

5#
ID:248814 發(fā)表于 2019-6-3 14:57 | 只看該作者
下載了,先學(xué)一波
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人免费视频网站在线观看 | 亚洲欧美综合 | 日韩色视频 | 国产精品美女久久久久久免费 | 91网站在线观看视频 | www.激情.com| 狠狠色香婷婷久久亚洲精品 | 国产精品一区二区福利视频 | 一级在线毛片 | 91视频网址 | 女同久久另类99精品国产 | 国产人成精品一区二区三 | 久久精品视频12 | 婷婷久久精品一区二区 | 日韩aⅴ在线观看 | 美美女高清毛片视频免费观看 | 999久久久 | 99久久日韩精品免费热麻豆美女 | 国产日韩欧美二区 | 国产精品揄拍一区二区 | 一区二区福利视频 | 草草精品 | 欧美日韩综合 | 神马久久春色视频 | 91aiai| 欧美一区二区三区在线播放 | 国产精品久久久久久久三级 | 亚洲国产精品网站 | 亚洲视频一区在线观看 | 欧美日韩国产欧美 | 国产成人av免费看 | 国产91综合一区在线观看 | 欧美aⅴ | 91网站在线看 | 日韩午夜激情 | av在线电影网站 | 国产ts人妖另类 | 亚洲国产成人精品女人 | 国产一区二区精品在线 | 美国十次成人欧美色导视频 | 逼逼网|