利用加湿器配合风扇,特别凉快!
制作出来的实物图如下:
1.jpg

2.jpg

3.png

单片机源程序如下:
//AT89C52
  • #include <reg52.h>
  • #include "PAJ7620.h"
  • #include "i2c.h"
  • sbit shui = P1^3;//空气加湿器
  • sbit key1 = P1^4;//通讯接口1
  • sbit key2 = P1^5;//通讯接口2
  • sbit feng = P1^6;   //风扇正转
  • sbit fanfeng = P1^7;//风扇反转
  • unsigned char PAJ7620_Value=0;  //从PAJ7620获取的数据
  • unsigned char result_Code; //返回结果
  • void Get_7620_Value(void);
  • void work(void);
  • void delay_ms(unsigned int n_ms);
  • void main (void)
  • {
  • shui=1;//加湿关
  • feng=0;//风扇开
  • key1=0;key2=0;//舵机关
  • PAJ7620_init();//7620初始化
  • while(1)
  • {
  •   Get_7620_Value(); //获取7620数据
  • }
  • }
  •         
  • //获取7620数据
  • void Get_7620_Value(void)
  • {
  •    PAJ7620_Value=Read_One_Reg(PAJ7620_wAdd,PAJ7620_ADDR_GES_PS_DET_FLAG_0);
  • if(PAJ7620_Value!=0xFF)
  • {
  • switch (PAJ7620_Value)
  • {
  •         case RIGHT://左
  •                         result_Code=0x01;
  •                         delay_ms(PAJ7620_QUIT_TIME);
  •                         break;
  •         case LEFT://右
  •                  result_Code=0x02;
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                         break;
  • case UP://上
  •                  result_Code=0x04;
  •            
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  •   case DOWN://下
  •                  result_Code=0x08;               
  •                
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  • case FORWARD://向前
  •                  result_Code=0x10;
  •                  
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  • case BACKWARD://向后
  •                  result_Code=0x20;
  •      
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  • case CLOCKWISE://顺时针
  •                  result_Code=0x40;
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  • case UNCLOCKWISE:
  •                  result_Code=0x80;//逆时针
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  • default:
  •                  delay_ms(PAJ7620_REACTION_TIME);  //延时
  •                  PAJ7620_Value=Read_One_Reg(PAJ7620_wAdd,PAJ7620_ADDR_GES_PS_DET_FLAG_1);
  •                  if (PAJ7620_Value==WAVE)//左右晃
  •                         {
  •                  result_Code=0x55;
  •                  } else
  •                  result_Code=0;
  •                  delay_ms(PAJ7620_QUIT_TIME);
  •                  break;
  •           }
  •   work();
  •   }
  • }
  • void work(void)
  • {
  •         static unsigned char mode=1;
  •         switch(result_Code)
  •         {
  •                 case 0x01: shui=0; break;//上
  •                 case 0x02: shui=1; break;//下
  •                 case 0x04: mode--; if(mode<1)mode=1;break;//左
  •                 case 0x08: mode++; if(mode>4)mode=4;break;//右
  •                 case 0x10: feng=0;fanfeng=0;break;//接近
  •                 case 0x20: feng=0;fanfeng=1; break;//远离
  •                 case 0x40: feng=0;fanfeng=1;break;//顺时针
  •                 case 0x80: feng=1;fanfeng=0;break;//逆时针
  •           case 0x55: break;//摇摆
  •                 default: break;
  •         }
  •                 switch(mode)
  •         {               
  •                 case 1: key1=0;key2=0;  break;
  •                 case 2: key1=0;key2=1;  break;
  •                 case 3: key1=1;key2=0;  break;
  •                 case 4: key1=1;key2=1;  break;
  •                 default:key1=0;key2=0; break;
  •         }
  • }
  • //延时函数
  • void delay_ms(unsigned int n_ms)
  • {
  • int j,k;
  • for(j=0;j<n_ms;j++)
  •   for(k=0;k<1002;k++);
  • }
  • 复制代码