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

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

QQ登錄

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

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

基于STM32+FDC2214的手勢(shì)識(shí)別程序,OLED顯示,音樂(lè)播放

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

STM32單片機(jī)源程序如下:
  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ù)  : 無(wú)
  21. * 返回參數(shù)  : 無(wú)
  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)


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | www.日日干| 天堂一区| 国产精品99久久久久久久vr | 欧美精品一区在线观看 | 精品欧美乱码久久久久久 | 日韩欧美一区二区三区 | 538在线精品 | 黄视频在线网站 | 午夜tv免费观看 | 九九精品影院 | av天天看| av在线播放网站 | 国产精品国产a级 | 天堂av影院 | 亚洲一区精品在线 | 亚洲成年人免费网站 | 不卡一区二区三区四区 | 日韩一区二区黄色片 | 日韩欧美不卡 | 九九久久久 | 91av在线影院 | 青青艹在线视频 | 一区二区中文 | 精品国偷自产在线 | 老牛嫩草一区二区三区av | 中文字幕在线播放不卡 | 久久精点视频 | 91青青草视频 | 国产精品日本一区二区在线播放 | 成人一区二区三区 | 亚洲国产精品视频 | 久久久入口 | 国产91久久久久久久免费 | 国产精品一区二区在线 | 久久亚洲高清 | 色综合美女 | 中文字幕成人在线 | 亚洲精品黄色 | 成人欧美日韩一区二区三区 | 91.com在线观看 |