STM32平台下夏普GP2Y1010AU0F灰尘传感器使用及源码

GP2Y1010AU0F传感器接线方式如下:

使用PA0接收模拟信号,PB1发送脉冲信号。

代码如下:

GP2Y.c

#include "GP2Y.h"
#include "system.h"
	u16 AD_PM;
void GP2Yinit(void)
{ 
//定义变量
    ADC_InitTypeDef A_InitStructure;
    GPIO_InitTypeDef G_InitStructure;	//PA0
    GPIO_InitTypeDef Gpio_InitStructure;//PB1
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE );   //使能ADC2通道时钟
     
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M
 
    //PA0 作为模拟通道输入引脚                        
    G_InitStructure.GPIO_Pin = GPIO_Pin_0;
    G_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
    GPIO_Init(GPIOA, &G_InitStructure);
   
    ADC_DeInit(ADC1);  //复位ADC1,将外设 ADC1 的全部寄存器重设为缺省值
   
    A_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在独立模式
    A_InitStructure.ADC_ScanConvMode = DISABLE; //模数转换工作在单通道模式
    A_InitStructure.ADC_ContinuousConvMode = DISABLE; //模数转换工作在单次转换模式
    A_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动
    A_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐
    A_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目
    ADC_Init(ADC1, &A_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器  
   
   
    ADC_Cmd(ADC1, ENABLE);         //使能指定的ADC1
    ADC_ResetCalibration(ADC1); //使能复位校准 
    while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
    ADC_StartCalibration(ADC1);  //开启AD校准
    while(ADC_GetCalibrationStatus(ADC1));  //等待校准结束
    Gpio_InitStructure.GPIO_Pin = GPIO_Pin_1;	                 
    Gpio_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出  
    Gpio_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;           
    GPIO_Init(GPIOB, &Gpio_InitStructure);
    GP2Y_High;
}
void GetGP2Y(void)
{
	float pm;
	GP2Y_Low;
	delay_us(280);
	AD_PM = Get_Adc(ADC_Channel_0);	//PA0
	delay_us(40);
	GP2Y_High;
	delay_us(9680);
	pm = 0.17*AD_PM-0.1; //电压-灰尘转换
	printf("%f\n",pm);
}

GP2Y.h

  #ifndef __GP2Y_H
#define __GP2Y_H
#include "stm32f10x_lib.h"
#define GP2Y_High GPIO_SetBits(GPIOB,GPIO_Pin_1);
#define GP2Y_Low  GPIO_ResetBits(GPIOB,GPIO_Pin_1);

void GP2Yinit(void);
void GetGP2Y(void);
#endif

PB1输出波形

获取到灰尘数值。

时间: 2024-11-07 12:46:42

STM32平台下夏普GP2Y1010AU0F灰尘传感器使用及源码的相关文章

微信公众平台开发-access_token获取及应用(含源码)

微信公众平台开发-access_token获取及应用(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 很多系统中都有access_token参数,对于微信公众平台的access_token参数,微信服务器判断该公众平台所拥有的权限,允许或者禁止公众平台进行当前的操作. 一.access_token作用及使用场景 (一)access_token的作用 access_token由公众号的AppID和AppSecret组成,所以具有识别公众号的作用. (二)access_token的使用场景

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载)

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载) 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想来讨论关于权限系统的实现. 1.1.       技术策略 l         身份认证 在B/S的系统中,为识别用户身份,通常使用的技术策略为将用户的身份记录在Session中,也就是当用户登录时即获取用户的身份信息,并将其记录

CodeFolderClear 自动清理代码文件夹下无用文件的小程序及源码

最近常要用U盘拷贝代码,发现编译器生成的各种中间文件占用了大量的空间,手工删除起来费时费力,所以就萌生了写一个小工具搞定这一切都念头. 说干就干,晚上熬夜搞定! 小工具程序及源码工程的下载链接:    点击下载 用简单的方式进行处理,递归删除.下面统计量下要删除的文件: 工程目录下: 工程目录的判断依据: 有工程文件 *.vcxproj *.sdf *.suo *.user 生成目录(Debug/Release等)下的文件: *.obj *.cache *.exp *.ilk *.lastbui

Maxwin-z/XListView-Android(下拉刷新上拉加载)源码解析(一)

本次解析的内容,是github上一个用于下拉刷新上拉加载的控件xlistview,这个功能相信大家在开发的过程中会经常用到. 控件的源码地址是https://github.com/Maxwin-z/XListView-Android 在这个控件之前,我看过一些相同功能的控件,挑选后觉得XListView功能比较完善,而且易于理解.在android-open-project里面,有提到一个DropDownListView,个人使用过以后,觉得功能是具备了,但是操作体验不好,原因就是没有使用到Scr

Linux下TCP延迟重庆时 时 彩源码下载确认(Delayed Ack)机制导致的时延问题分析

重庆时 时 彩下载联系方式:QQ:2747044651 网址在实际测试中发现,当N大于等于3的情况,第2秒之后,每次第三个recv调用,总会阻塞40毫秒左右,但在分析Server端日志时,发现所有请求在Server端处理时耗均在2ms以下. 当时的具体定位过程如下:先试图用strace跟踪客户端进程,但奇怪的是:一旦strace attach上进程,所有收发又都正常,不会有阻塞现象,一旦退出strace,问题重现.经同事提醒,很可能是strace改变了程序或系统的某些东西(这个问题现在也还没搞清

Linux下利用phpize安装memcashe的php源码扩展包

phpize是php的一种构建工具,为PHP扩展准备构建环境,通过phpize可以编译php的扩展源码文件为php扩展模块. 一.安装 phpize工具可以通过安装php-dev包自动集成安装.安装完成后php的bin目录下会有phpize这个命令. 二.使用 举例:在原来编译好的php中加入memcache扩展模块,使用phpize构建的方式如下. tar zxvf memcache-2.2.5.tgz cd memcache-2.2.5/ /usr/local/php/bin/phpize

ubuntu12.04下实现字符设备驱动并提供源码解析

上两篇文章记录了在ubuntu12.04上面初步实现一个驱动模块及其参数的问题: HelloWorld 模块参数 下面记录一下,在ubuntu12.04上面实现字符驱动的过程,在看到LDD3(linux device driver 3rd)第三章的时候,讲解了字符设备驱动的实现,自然就找到了源码来进行查看和编译,但是,官方的源码包含了第三章到第六章的内容,对于新手来说,可能就会觉得很苦恼,因为后面的知识都还不会,而且代码混合在一起也不利于本章知识的掌握,下面就记录一下我源码分离的过程,以及在ub

微信开放平台---网站授权微信登录功能(附带源码)

1 微信开放平台:https://open.weixin.qq.com/ 2 微信官方教程:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN 3.pc页面显示 4. 通过官方提供的文档,我们可以看出一共分4个步骤 第一步:请求CODE 第二步:通过code获取a

PHP基于MVC模式下的幕仇美食网站、源码下载

大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON.PHP.C#.安卓等多项技术. 今天将为大家分析一个幕仇美食网站,本项目是通过MVC框架技术来进行设计和实现的,项目主要用到的技术有php,javascript,html/css等,数据库使用的是MySQL. 现如今先进科学技术高速发展,计算机技术已经被社会的各个领域广泛应用.随着计算机技术和通信技术的迅猛发展,互联网的规模也逐步增大,互联网的元素也随之逐渐增加,可以利用其发展通信,也可以