【22物联网国赛样题第一套】lora屏幕显示,外设值获取,lora光照获取,物联网竞赛今年历年国赛样题真题代码

题目要求:

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

任务要求:

  • 使用提供的未完成的工程进行开发。
  • 设备上电后,板上的LED1亮,LED2灭。
  • 液晶屏上实时显示当前光照值,效果如下:
    •                         ​​​​​​​        
  • 当光照低于某一设定值时(可用手遮住),板上的LED2灯亮起,高于这一值(手拿开)时LED2灭。

编程思路:

        先调用 AdcReadCh0() 实时获取设备值,再将获取到的电压值转换后实时输出值OLED上。

题目分析:

        这道题属于较为基础的题目,涉及到电压采集,led控制与OLED显示,相对来说较为简单,只要调用基础库即可完成编程。

代码实现:

        这里展示代码,只展示.C部分所编写要用到的主要代码

float hum,temp,light;

/**
 * Main application entry point.
 */
int main( void )
{
    Init();
		ADCS_Init();
		OLED_Init();
    while( 1 )
    {
			handlerPre10Ms();
			light = AdcReadCh0();
			light = (2000/3.3)*light;
			char str[32];
			sprintf(str,"light: %.2f lux  ",light);
			OLED_ShowString(0,2,str);
    }
}

完整代码:

       复制粘贴替换基础工程.C内容

/**
  ******************************************************************************
  * File Name          : main.c
  * Description        : Main program body
  ******************************************************************************
  */
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
#include "hal_oled.h"


#include "adc_reader.h"

/**********************************************************************************************
*º¯Êý£ºvoid Init( void )
*¹¦ÄÜ£ºÆ½Ì¨³õʼ»¯
*ÊäÈ룺ÎÞ
*Êä³ö£ºÎÞ
*ÌØÊâ˵Ã÷£ºÎÞ
**********************************************************************************************/
void Init() {
    // ¿ª·¢°åƽ̨³õʼ»¯
    BoardInitMcu();
    BoardInitPeriph();
    keys_init();//°´¼ü³õʼ»¯
    setTimer2Callback(Time2Handler);
    Tim2McuInit(1);//¶¨Ê±Æ÷³õʼ»¯£¬ÉèÖö¨Ê±ÖжÏ1msÖжÏÒ»´Î
		OLED_Init();
}

/**********************************************************************************************
*º¯Êý£ºvoid KeyDownHandler( void )
*¹¦ÄÜ£º°´Å¥Ê¼þ¼àÌý
*ÊäÈ룺ÎÞ
*Êä³ö£ºÎÞ
*ÌØÊâ˵Ã÷£ºÎÞ
**********************************************************************************************/
void KeyDownHandler(void) {
	
}

/**********************************************************************************************
*º¯Êý£ºvoid handlerPre10Ms( void )
*¹¦ÄÜ£º10ºÁÃëÑ­»·
*ÊäÈ룺ÎÞ
*Êä³ö£ºÎÞ
*ÌØÊâ˵Ã÷£ºÑ­»·´¦Àí×Üʱ³¤300ms
**********************************************************************************************/
void handlerPre10Ms(void) {
    for (int delay = 0; delay < 30; delay++) {
        HAL_Delay(10);
        AdcScanChannel();
    }
}

float hum,temp,light;


/**
 * Main application entry point.
 */
int main( void )
{
    Init();
		ADCS_Init();
    while( 1 )
    {
			handlerPre10Ms();
			light = AdcReadCh0();
			light = (2000/3.3)*light;//这里要用到一个公式但是我忘记了
			char str[32];
			sprintf(str,"light: %.2f lux  ",light);
			OLED_ShowString(0,2,str);
    }
}

题目图:

 

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Azhuo9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值