STM32平台下GP2Y1010AU0F灰尘传感器使用及源码是什么
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,今天就跟大家聊聊有关STM32平台下GP2Y1010AU0F灰尘传感器使用及源码是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。GP2Y1
千家信息网最后更新 2025年01月25日STM32平台下GP2Y1010AU0F灰尘传感器使用及源码是什么
今天就跟大家聊聊有关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输出波形
获取到灰尘数值。
根据上图推算出公式:dustDensity = 0.17 * calcVoltage - 0.1。
看完上述内容,你们对STM32平台下GP2Y1010AU0F灰尘传感器使用及源码是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
灰尘
模式
工作
传感器
内容
通道
平台
源码
信号
外设
寄存器
模数
输入
输出
最大
上图
中指
代码
公式
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
路由器服务器断开连接
天涯明月刀端游服务器推荐
网络安全专业和云计算哪个好就业
软件开发管理和项目管理侧重点
服务器可以下载什么应用
数据库如何叠加表格数据
网络安全科技人员
ibm 2u服务器
求应聘软件开发工作
优秀黑板报网络安全记心中
魔域服务器登录不上
数据库创建修改数据表的小结
如何挂服务器
数据库注入工具
津巴布韦网络安全吗
手提电脑dns服务器坏了
街道网络安全周宣传方案
网络安全科技公司的经营范围
db2数据库的系统时间怎么修改
服务器和家用电脑哪个稳定
便宜的软件开发培训班
小迪的网络安全在哪看
ibm服务器质保几年
合同解除软件开发
京东软件开发待遇2018
深圳市中昇互联网科技
mt5软件开发者
专业清金蝶数据库
网络安全教育的负面影响
超威尔服务器