物联网竞赛DAY2----LORA开发(光照值)

文章目录

  • 前言
  • 一、设备上电后,板上的LED1亮,LED2灭。
  • 二、光照值的显示
    • 1.OLED显示,获取光照值,判断光照值
    • 2.主函数
  • 总结


前言

使用一个LoRa模块、一个光照传感器模块完成一个光环境的监控。

任务要求:

  • 使用提供的未完成的工程进行开发。
  • 设备上电后,板上的LED1亮,LED2灭。
  • 液晶屏上实时显示当前光照值,效果如下:

  • 当光照低于某一设定值时(可用手遮住),板上的LED2灯亮起,高于这一值(手拿开)时LED2灭。

一、设备上电后,板上的LED1亮,LED2灭。

        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);            //打开LED1
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);                //关闭LED2

二、光照值的显示

1.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);//值
	OLED_ShowChar(3*16+10,3,':');//:
	
}
void LoRa_GetSensorDataProcess(void)  
{  
		float voltage;    
		AdcScanChannel();					//转换ADC双信道寄存器数据为电压值
    voltage = AdcReadCh0();					//获得ADC0获得电压值
				
     LightLux = (uint16_t)(5/2.0)*(voltage*100); 		//转化为光照强度 
				
		 printf("光照值:%d",LightLux);					//把光照强度打印到串口
     char StrBuf[64]={0};  
     memset(StrBuf, '\0', 64);  
     sprintf(StrBuf, " %d Lx",LightLux);  
     OLED_ShowString(4*16,3,(uint8_t *)StrBuf); 		//oled显示光照值
void Light_up(void)
{
	if(LightLux <= 200)
	{
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);			//光照值小于200Lux时,开启LED2
	}
	else
	{
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);			//光照值大于200Lux时,关闭LED2
	}

2.主函数

代码如下(示例):

int main( void )
{
    Init();//开发板设备初始化
		OLED_Init();				//液晶初始化
		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,否则关闭LED2
				handlerPre10Ms();
    }
}

总结

#include "adc_reader.h"
#include "uart_receiver.h"
#include "usart1-board.h"

引用请求不能忘

  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值