打印
[活动]

温控灯

[复制链接]
2308|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 hejiahui123 于 2020-11-4 14:37 编辑

项目方案:用DHT11测环境温度湿度,用OLED显示当前的温湿度,led灯根据环境的温度高低自动调节灯的亮度。灯随着温度的升高而变亮,随着温度的降低变暗。实现步骤:1、查找资料,搭建环境
                2、硬件接线
                3、传感器收集数据
                4、实现灯的亮度随温度的变化而变化

搭建环境:第一次使用microchip的芯片,首先要去官网下载开发环境MPLAB X IDE,不过在安装MPLAB X IDE前需要装Java的运行环境,最后还要安装C编译器,因为我的程序是用C语言。
官网网址:https://www.microchip.com/microchip

硬件接线:接线方式如下,因核心板的电源引脚不够,外设是接在外部5V电源上的。



传感器收集数据:我遇到最大的问题是DHT11读不出数据,我用示波器测DHT11的时序发现不对,最后看手册,根据示波器测出的时序和手册上的相对比,把时序调好,最后就能读出数据了。
DHT11时序如下图:
[color=rgba(0, 0, 0, 0.75)]先是主机发送开始信号
[color=rgba(0, 0, 0, 0.75)]然后就是DHT11响应
[color=rgba(0, 0, 0, 0.75)]DHT11发送数据
[color=rgba(0, 0, 0, 0.75)]最后要把数据线拉高,释放总线

DHT11读取数据代码如下:
//读取一个字节    
uint8_t DHT11_Read_Byte(void)
{
    uint8_t i,data;
    for(i=0;i<8;i++)
    {
        if(DHT11_READ==0)
        {
            while(DHT11_READ==0);
        }
        DELAY_us (40);   //40us
        if(DHT11_READ==1)
        {
            while(DHT11_READ==1);//这里要等待高电平结束,否者读取下一位的时候会因为高电平没有结束而跳过上一个if
            data|=(uint8_t)0x01<<(7-i);
        }
        else
            data&=(uint8_t)~0x01<<(7-i);
                     
    }
    return data;
}

//读五个字节
uint8_t DHT11_ReadData(uint8_t *temp,uint8_t *humi)
{
    uint8_t buf[5];
    uint8_t i;
    for(i=0;i<5;i++)
    {
        buf[i]=DHT11_Read_Byte();
        
    }
    if(buf[0]+buf[1]+buf[2]+buf[3]==buf[4])
    {
        *temp=buf[2];
        *humi=buf[0];
        return 1;
    }
    else
        return 0;   
}

最后根据温度,去调节输出的pwm,使灯的亮度随着温度的变化而变化

以下是成品照片:
总结:经过这次项目,发现自己的基础不是很牢固,应该多实践。



586255f9acb190a0cb.png (381.32 KB )

586255f9acb190a0cb.png

使用特权

评论回复

相关帖子

沙发
巧克力娃娃| | 2020-11-6 14:32 | 只看该作者
lz加油,以后可以多去microchip的论坛混一混,哈哈

使用特权

评论回复
板凳
zeshoufx| | 2020-11-9 20:33 | 只看该作者
谢谢分享【温控灯】

使用特权

评论回复
地板
qbwww| | 2020-11-13 07:10 | 只看该作者
赞一下

使用特权

评论回复
5
gx_huang| | 2020-11-13 08:38 | 只看该作者
用于学习是好的,只是没啥实用价值。
不如直接显示温度好了。
或者LED二进制长短闪烁显示温度,更加锻炼人的观察理解能力,比如20度=10100=长短长短短

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝