找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3834|回復: 2
打印 上一主題 下一主題
收起左側

基于單片機+PAJ7620+舵機的手勢識別小風扇源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:873089 發(fā)表于 2021-5-21 19:46 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
利用加濕器配合風扇,特別涼快!
制作出來的實物圖如下:


單片機源程序如下:
  1. //AT89C52
  2. #include <reg52.h>
  3. #include "PAJ7620.h"
  4. #include "i2c.h"

  5. sbit shui = P1^3;//空氣加濕器
  6. sbit key1 = P1^4;//通訊接口1
  7. sbit key2 = P1^5;//通訊接口2
  8. sbit feng = P1^6;   //風扇正轉
  9. sbit fanfeng = P1^7;//風扇反轉

  10. unsigned char PAJ7620_Value=0;  //從PAJ7620獲取的數據
  11. unsigned char result_Code; //返回結果
  12. void Get_7620_Value(void);
  13. void work(void);
  14. void delay_ms(unsigned int n_ms);


  15. void main (void)
  16. {
  17. shui=1;//加濕關
  18. feng=0;//風扇開
  19. key1=0;key2=0;//舵機關
  20. PAJ7620_init();//7620初始化
  21. while(1)
  22. {
  23.   Get_7620_Value(); //獲取7620數據
  24. }
  25. }

  26.        
  27. //獲取7620數據
  28. void Get_7620_Value(void)
  29. {
  30.    PAJ7620_Value=Read_One_Reg(PAJ7620_wAdd,PAJ7620_ADDR_GES_PS_DET_FLAG_0);
  31. if(PAJ7620_Value!=0xFF)
  32. {
  33. switch (PAJ7620_Value)
  34. {
  35.         case RIGHT://左
  36.                         result_Code=0x01;
  37.                         delay_ms(PAJ7620_QUIT_TIME);
  38.                         break;
  39.         case LEFT://右
  40.                  result_Code=0x02;
  41.                  delay_ms(PAJ7620_QUIT_TIME);
  42.                         break;
  43. case UP://上
  44.                  result_Code=0x04;
  45.           
  46.                  delay_ms(PAJ7620_QUIT_TIME);
  47.                  break;
  48.   case DOWN://下
  49.                  result_Code=0x08;               
  50.                
  51.                  delay_ms(PAJ7620_QUIT_TIME);
  52.                  break;
  53. case FORWARD://向前
  54.                  result_Code=0x10;
  55.                  
  56.                  delay_ms(PAJ7620_QUIT_TIME);
  57.                  break;
  58. case BACKWARD://向后
  59.                  result_Code=0x20;
  60.      
  61.                  delay_ms(PAJ7620_QUIT_TIME);
  62.                  break;
  63. case CLOCKWISE://順時針
  64.                  result_Code=0x40;
  65.                  delay_ms(PAJ7620_QUIT_TIME);
  66.                  break;
  67. case UNCLOCKWISE:
  68.                  result_Code=0x80;//逆時針
  69.                  delay_ms(PAJ7620_QUIT_TIME);
  70.                  break;

  71. default:
  72.                  delay_ms(PAJ7620_REACTION_TIME);  //延時
  73.                  PAJ7620_Value=Read_One_Reg(PAJ7620_wAdd,PAJ7620_ADDR_GES_PS_DET_FLAG_1);
  74.                  if (PAJ7620_Value==WAVE)//左右晃
  75.                         {
  76.                  result_Code=0x55;
  77.                  } else
  78.                  result_Code=0;
  79.                  delay_ms(PAJ7620_QUIT_TIME);
  80.                  break;
  81.           }
  82.   work();
  83.   }
  84. }

  85. void work(void)
  86. {
  87.         static unsigned char mode=1;
  88.         switch(result_Code)
  89.         {
  90.                 case 0x01: shui=0; break;//上
  91.                 case 0x02: shui=1; break;//下
  92.                 case 0x04: mode--; if(mode<1)mode=1;break;//左
  93.                 case 0x08: mode++; if(mode>4)mode=4;break;//右
  94.                 case 0x10: feng=0;fanfeng=0;break;//接近
  95.                 case 0x20: feng=0;fanfeng=1; break;//遠離
  96.                 case 0x40: feng=0;fanfeng=1;break;//順時針
  97.                 case 0x80: feng=1;fanfeng=0;break;//逆時針
  98.           case 0x55: break;//搖擺
  99.                 default: break;
  100.         }
  101.                 switch(mode)
  102.         {               
  103.                 case 1: key1=0;key2=0;  break;
  104.                 case 2: key1=0;key2=1;  break;
  105.                 case 3: key1=1;key2=0;  break;
  106.                 case 4: key1=1;key2=1;  break;
  107.                 default:key1=0;key2=0; break;
  108.         }
  109. }
  110. //延時函數
  111. void delay_ms(unsigned int n_ms)
  112. {
  113. int j,k;
  114. for(j=0;j<n_ms;j++)
  115.   for(k=0;k<1002;k++);
  116. }
復制代碼

所有資料51hei提供下載:
程序: 手勢風扇設計.7z (1.18 MB, 下載次數: 130)
視頻: 成品預覽視頻.7z (14.6 MB, 下載次數: 47)

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

使用道具 舉報

沙發(fā)
ID:925693 發(fā)表于 2021-5-23 23:37 來自手機 | 只看該作者
舵機是用哪款呀
回復

使用道具 舉報

板凳
ID:873089 發(fā)表于 2021-11-26 19:21 | 只看該作者

SG90  180度的
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表