【蓝桥杯嵌入式笔记】(十五)光敏电阻

一、原理图

1284673bb798978dfc231723018211d7.png

PA3:光敏电阻开关量信号
PA4:光敏电阻的分压模拟电压值

DO与PA3连接,AO与PA4连接。

 二、CubeMX配置

2fb060b8d60d4b3f9e7cb30f794caf44.png配置PA4为ADC采集模式,配置PA3为gpio输入模式

开启adc2的DMA,进行设置

54a02b8284db8730960d3c0e42f667cc.png

 打开中断

91797a1dd9a73bbed80379e108358a28.png

c4611363206621d9ae21ac7817e31857.png

1368d6aba65eef79a9aeddae4d948404.png

 三、代码

1.初始化

uint32_t adc_value[256];

HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED);
HAL_ADC_Start_DMA(&hadc2, adc_value, 256);

2.adc数据处理

float adc_get()
{
	unsigned int t=0;
	unsigned int value=0;
	for( int i=0;i<255;i++ )
	{
		for( int j=0;j<255-i;j++ )
		{
			if( adc_value[j]>adc_value[j+1] )
			{
				t=adc_value[j+1];
				adc_value[j+1]=adc_value[j];
				adc_value[j]=t;
			}
		}
	}
	
	for( int i=1;i<255;i++ )
	{
		value+=i*adc_value[i];
	}
	
	return value/32385.0*3.3/4096;
}

3.显示

    unsigned int trdo;	

    sprintf(text,"  ADC:%0.2fV  ",adc_get());
	LCD_DisplayStringLine(Line4, (unsigned char *)text);
	trdo=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3);
	sprintf(text,"  TRDO:%d  ",trdo);
	LCD_DisplayStringLine(Line5, (unsigned char *)text);

4.理解

trao(PA4)为正常的adc采集,根据光强的不同,adc采集的电压值不同。

trao采集的电压值通过RP7滑变产生的电压进行比较,当trao电压大于RP7滑变电压,trdo为1,反之为0.

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值