查看: 4641|回复: 5

[原创] KL25Z(五) OLED+DHT22+GP2Y1010AU0F

[复制链接]
  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-9-16 18:30:04 | 显示全部楼层 |阅读模式
    本帖最后由 lising 于 2016-9-16 18:35 编辑

            马不停蹄的忙了半天,总算是把程序抄全了。        SHARP的GP2Y1010AU0F应该是最便宜的一款灰尘传感器了,也就是好奇拿来玩玩。程序同样是抄网友的,在此表示感谢!程序中还有许多的问题需要完善:GP2Y1010AU0F的工作电压接了5V,Vo输出电压值0v~3.4v,应该用电阻对该电压进行分压后再采集;程序中没有使用ADC校准功能。这些问题要继续完善。
    IMG_20160831_190918.jpg
    IMG_20160831_190023.jpg
    IMG_20160831_184854.jpg
    IMG_20160831_190303.jpg
    IMG_20160831_190320.jpg
    IMG_20160831_190049.jpg
    IMG_20160831_190057.jpg
    IMG_20160831_190110.jpg IMG_20160831_190408.jpg
    IMG_20160916_135051.jpg

    主要代码:
    1. void PM25_sampling(void)
    2. {
    3.         DHT22_DATA_OUT(0);
    4.         DelayUs(280);
    5.         adc_to_v();
    6.         DelayUs(40);
    7.         DHT22_DATA_OUT(1);
    8.         DelayUs(9680);        
    9. }


    10. //ADC代码/初始化ADC功能能.
    11. void adc_init(void)
    12. {
    13.         SIM->SCGC6|=(1<<27);//使能 ADC0时钟;
    14.     ADC0->CFG1|=0x0c|0x01|(3<<5);        //16BIT|BUSCLK/2|8分频
    15.     ADC0->CFG2&=~(1<<4);                        //A chanle .即adc se 4a
    16.     ADC0->SC2&=~(1<<6);                                //软件触发,ref选择 Vrefh脚电压.
    17.     ADC0->SC3|= ( ADC_SC3_AVGE_MASK | ADC_SC3_AVGS(3) );        //多次采样平均值
    18.     ADC0->SC1[0]=(ADC0->SC1[0]&0x04);                                                //ch4 开始转换.
    19.     while((ADC0->SC1[0]&ADC_SC1_COCO_MASK)==0);    //等待转换结束.

    20.     adc_hex_value_temp=ADC0->R[0];                 //读取ADC值;
    21. }


    22. //排序函数qsort()用到的辅助函数.
    23. int cmp ( const void *a , const void *b)
    24. {
    25.     return *(int *)a - *(int *)b;
    26. }


    27. //使能20次ADC转换,排序,然后舍弃最低5个,最高5个,
    28. //并把值改成十进制.,然后存在adc_v_value_temp;
    29. void adc_to_v(void)
    30. {
    31.     unsigned int adc_value[20];          //多次采样值;
    32.     unsigned int adc_avg_value;                //平均值
    33.     unsigned char x;
    34.         
    35.     for(x=0; x<20; x++)
    36.     {
    37.         ADC0->SC1[0]|=0x04;                        //ch4 开始转换.
    38.         while((ADC0->SC1[0]&ADC_SC1_COCO_MASK)==0);
    39.         adc_value[x] = ADC0->R[0];
    40.     }
    41.         
    42.         //20个采样数组排序.必须包含头文件#include  <stdlib.h>
    43.     qsort(adc_value,20,sizeof(adc_value[0]),cmp);         
    44.     adc_avg_value=0;
    45.     for(x=5; x<15; x++) //舍弃最高5个最低5个ADC值,剩余的取平均.
    46.     {
    47.         adc_avg_value += adc_value[x];
    48.         if(x==14)
    49.         {
    50.             adc_avg_value = adc_avg_value/10;
    51.         }
    52.     }
    53.     adc_v_value_temp = adc_avg_value*((float)(VCC_VALUE/65535));  //ADC16进制值 转化为 电压X100000倍
    54. }
    复制代码
    GP2Y1010AU0F.pdf (154.92 KB, 下载次数: 1)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-5-29 08:54
  • 签到天数: 2992 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    45

    主题

    5548

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    12035
    最后登录
    2025-5-29
    发表于 2016-9-16 22:27:45 | 显示全部楼层
    不错不错,二代的直接是串口输出的比较方便。
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
     楼主| 发表于 2016-9-16 22:31:41 | 显示全部楼层
    limale 发表于 2016-9-16 22:27
    不错不错,二代的直接是串口输出的比较方便。

    我这个20元,还是你那个二代的方便,要贵点吧?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-5-29 08:54
  • 签到天数: 2992 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    45

    主题

    5548

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    12035
    最后登录
    2025-5-29
    发表于 2016-9-16 22:41:47 | 显示全部楼层
    lising 发表于 2016-9-16 22:31
    我这个20元,还是你那个二代的方便,要贵点吧?

    是的,现在也便宜了贵个十块钱左右。
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
     楼主| 发表于 2016-9-16 22:49:09 | 显示全部楼层
    limale 发表于 2016-9-16 22:41
    是的,现在也便宜了贵个十块钱左右。

    有机会也顺一个玩玩
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    5

    帖子

    0

    注册会员

    Rank: 2

    积分
    54
    最后登录
    2017-7-4
    发表于 2017-6-9 00:45:18 | 显示全部楼层
    源码可以分享?37230714@qq.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-3 01:34 , Processed in 0.102191 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表