这部分增加了光线监测,完成窗帘或百叶窗自动调节光亮的功能。没想好怎么使用电机模拟窗帘,暂时使用板卡上的LED灯LD5的亮度调节来模拟光线变化控制。如图1所示:
实现代码如下: - /*
- *********************************************************************************************************
- * 函数名称: ADCLight_ChangValue
- * 功能说明: 对灯光光敏电阻采样
- * 形参:
- * 返回值:
- *********************************************************************************************************
- */
- void ADCLight_ChangValue(void)
- {
- adc_result_info_t adcResultInfoStruct;
- ADC_DoSoftwareTriggerConvSeqA(ADC0);
-
- while(!ADC_GetChannelConversionResult(ADC0, 6U, &adcResultInfoStruct))
- {}
- ADLightResult = adcResultInfoStruct.result;
- ADLightNumber = adcResultInfoStruct.channelNumber ;
- Delay_nms(0xAFFF);
- }
复制代码- /*
- *********************************************************************************************************
- * 函数名称: Light_PWMConfig
- * 功能说明: 控制灯光亮度PWM配置
- * 形参:
- * 返回值:
- *********************************************************************************************************
- */
- void Light_PWMConfig(void)
- {
- ctimer_config_t config;
- // uint32_t LightsrcClock_Hz;
- SYSCON->ASYNCAPBCTRL = 1;
- /* CTimer0 counter uses the AHB clock, some CTimer1 modules use the Aysnc clock */
- LightsrcClock_Hz = CLOCK_GetFreq(kCLOCK_BusClk);
- CTIMER_GetDefaultConfig(&config);
- CTIMER_Init(CTIMER0, &config);
- // CTIMER_SetupPwm(CTIMER0, kCTIMER_Match_1, 90, 1000, srcClock_Hz, false);
- CTIMER_StartTimer(CTIMER0);
- }
复制代码通过不同的AD值,来调整输出PWM的占空比,可实现亮度调节。也可以使用电机来调整窗帘的高度,实现功能。
找到了以前测试CH4的模块,其他的气体模块找不到了,暂时使用其模拟监测室内气体变化,通过AD来标称,OLED显示,如图2所示:
实现代码如下: - /*
- *********************************************************************************************************
- * 函数名称: ADCCH4_ChangValue
- * 功能说明: 对甲烷气体采样
- * 形参:
- * 返回值:
- *********************************************************************************************************
- */
- //float CH4temp;
- void ADCCH4_ChangValue(void) //CH4sensor
- { adc_result_info_t adcResultInfoStruct;
- // CH4temp = ADCH4Result;
- CH4Value = (ADCH4Result*3.3/4095)*625-250;//((ADCH4Result*3.3/4095)*0.625-0.25)*100;
- ADC_DoSoftwareTriggerConvSeqA(ADC0);
- while(!ADC_GetChannelConversionResult(ADC0, 7U, &adcResultInfoStruct))
- {}
- ADCH4Result = adcResultInfoStruct.result;
- ADCH4Number = adcResultInfoStruct.channelNumber ;
- Delay_nms(0xAFFF);
- }
复制代码
这部分其实也挺有意思的,时间匆忙,在下一篇改完以后中会把main.c附件一下,今天暂时先完成到这里。
来源: 【智能家居挑战赛】+智能宿舍改造二 光线监测及调整
|