关注分享主机优惠活动
国内外VPS云服务器

LoRa模块获取照度值(oclaro光模块)

摘要:此任务需要使用提供的未完成项目进行开发。 当设备上电时,板上的灯会打开或关闭。

基于hal库的LoRa模块获取照度值

开发传感器数据读取和控制功能基于hal库的LoRa模块获取照度值 1. 题目要求:2逻辑分析: 3、主要代码实现: 1、主函数main2。 OLED显示初始化信息函数:OLED_InitView() 3. 光值获取函数LoRa_Get_SensorDataProcess(); 4. 控制LED2亮灭的函数Light_up(); 4. 注意事项及实现难点: 1. 实现难点

1.问题需求:

使用LoRa模块和光传感器模块完成光环境的监测。 任务要求: –> 使用提供的未完成项目进行开发。 –> 设备上电时,板上的LED1亮,LED2灭。

–> 当前照度值将实时显示在液晶屏上。 效果如下。

–> 如果照度低于某个设定值(可以用手隐藏),内置LED2就会亮起,如果高于这个值(可以用手移开) ,LED2将关闭

2.逻辑分析:

使用Visio绘制流程图:

3.主要代码实现: 1.初始化主函数main

OLED_Init()。 初始化LCD,串口1 USART1_Init(115200),清除液晶屏内容OLED_Clear(),显示初始化信息OLED_InitView(),初始化ADC ADCS_Init(),串口响应消息printf(),LED1亮,LED2灭,然后不断获取光强及控制LED2

int main(void){ Init();//初始化开发板设备 OLED_Init();//初始化LCD USART1_Init(115200);//初始化串口1 OLED_Clear();OLED_InitView();//OLED初始化信息为ADCS_Init( );//ADC初始化 printf("LoRa Light/r/n");//串口输出信息 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);//打开LED1 HAL_GPIO_WritePin( GPIOB,GPIO_PIN_8,GPIO_PIN_SET );//关闭LED2 while( 1 ) { LoRa_GetSensorDataProcess(); // 获取灯光值 Light_up(); // 将阈值设置为80Lux。 如果光强度小于80Lux,则打开LED2,否则关闭LED2handlerPre10Ms()。 }} 2. OLED 显示初始化信息函数:OLED_InitView()

OLED 显示“光值:”。 我在之前的文章中写过在OLED上显示汉字的具体方法。 如果不明白,请参考之前的博文。

void OLED_InitView(){OLED_Clear();OLED_ShowCHinese( 0*16+10,3,29);//点亮 OLED_ShowCHinese(1*16+10) ,3,30);//点亮 OLED_ShowCHinese(2* 16+10,3,52);//Value OLED_ShowChar(3* 16+10,3,":");//:} 3. 获取照明值 Function LoRa_Get_SensorDataProcess()

Value of ADC0 Get and转换为照度值显示

void LoRa_GetSensorDataProcess(void) {浮动电压。 AdcScanChannel();//将ADC双通道寄存器数据转换为电压值Voltage = AdcReadCh0();//获取ADC0并得到电压值LightLux = (uint16_t)(5/2.0)*(电压*100); //转换为光照强度 printf("光照值: %d",LightLux); // 输出光照强度到串口 char StrBuf[64]={0}; memset(StrBuf, "/0", 64); %d Lx",LightLux); OLED_ShowString(4*16,3,(uint8_t *)StrBuf); //oled 显示光值} 4. 控制 LED2 亮灭的函数 Light_up();

如果光值小于80Lux,打开LED2,否则关闭LED2。

void Light_up(void){if(LightLux ADC双通道寄存器数据转电压值-->.获取ADC0得到电压值。(2)(电压值)电压=(ADC0Value/4096.0) * 3300,单位为 mV。 (3)(光强度值)LightLux = (5/2.0) * (电压/10.0) ),单位为勒克斯。

未经允许不得转载:主机频道 » LoRa模块获取照度值(oclaro光模块)

评论 抢沙发

评论前必须登录!