基于51单片机的智能垃圾桶

一、项目功能

通过51单片机控制垃圾桶,实现三种不同的开盖方式

1、通过超声波检测距离,当人体靠近垃圾桶时自动开盖,并且随着开盖声音和开盖指示灯亮起,远离自动关盖,关盖指示灯亮起。

2、用震动传感器检测垃圾桶附近是否发生震动,发生震动时自动开盖

3、通过单片机上按键对垃圾桶进行控制,当按键被按下实现开盖

二、主要模块组成

1.超声波模块:通过用51单片机的定时器1进行处理。

2.舵机模块:通过用51单片机的定时器0中断进行处理。

3.震动模块:通过用51单片机的外部中断0低电平触发控制。

二、代码实现

1.超声波部分代码

double get_distance()
{
	double time;
  TH1 = 0;  //重新给初值,方便下次超声波测距
  TL1 = 0;
	//1.给Trig引脚至少10us的高电平
	startHC();
	//2.当接受到高电平的那一下 开始计时
	while(Echo == 0);
        TR1= 1;
	//3.当高电平转低电平那一刻 结束计时
        while(Echo == 1);
        TR1= 0;
	//4.计算时间
        time = (TH1 * 256 + TL1)*1.085;//把定时器高低八位整合在一起计算时间
	return (time * 0.017);            //5.函数返回距离
}

2.舵机部分代码

void initSg90_0() //舵机初始位置函数
{
	jd=4;
	cnt=0;
	sg90_con=1;
}
void openDusbin() //开盖函数
{
	char n;
	//舵机开盖
   jd=2;
   cnt=0;
	jd_bak=jd;
	 BEEP=0;
	 for(n=0;n<2;n++)
	 Delay150ms();
	 BEEP=1;
	 Delay2000ms();
}

void closeDusbin() //关盖函数
{
	//舵机关盖
	jd=4;
	if(jd_bak !=jd){   //消除垃圾桶一直抖动bug
	cnt=0;//角度变了cnt重新开始算
	Delay150ms();
	}
	jd_bak=jd;
}
void Time0Handler() interrupt 1
{
  cnt++;
	TL0=0x33;
    TH0=0xFE;//重新赋初值
	if(cnt<jd){
    sg90_con=1;//模拟pwm脉冲
  }else{
    sg90_con=0;
  }
	if(cnt==40){//爆表40次,20ms
    cnt=0;
		sg90_con=1;
    }
}

3.主函数代码

void main()
{
    double dis;
    Time1Init();//定时器1初始化
	Time0_init();//定时器0初始化
	EX0_init();//外部中断0初始化
	initSg90_0();//舵机的初始位置,关盖状态
    while(1){   
			//超声波测距
        dis=get_distance();
        if(dis < 10||SW1==0||mark_vibrate==1){
					//D5亮
          openStatusLight();//开盖指示灯
      //舵机关盖	
          openDusbin();//舵机开盖
          mark_vibrate=0;//震动传感器标志位					
        }else{
					//D6亮
          closeStatusLight(); //关盖指示灯
      //舵机开盖
         	closeDusbin();//舵机开盖		
        }
				Delay150ms();
    }
}

四、项目展示

 

详细项目视频

见主页 基于51单片机的智能垃圾桶视频!!!!!!

  • 8
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值