高职物联网模拟3
题目
使用一个 LoRa 模块、一个光照传感器模块完成一个光环境的监控。
**任务要求:**
使用提供的未完成的工程进行开发。
2. 设备上电后,板上的 LED1 亮,LED2 灭。
3. 液晶屏上实时显示当前光照值,效果如下:
|----------------------------------------|
| |
| 光照值:200Lx |
| |
|----------------------------------------|
4. 当光照低于某一设定值时(可用手遮住),板上的 LED2 灯亮起,高于这一值(手拿开)时 LED2 灭。
分析
#include "adc_reader.h"必备头文件要写
- 转换公式为【**5/2.0 * 100 * adc **】
/*函数*/
AdcScanChannel();//转换数据为电压值
adc = AdcReadCh0();//获取电压值
ADCS_Init();//初始化ADC通道0和通道2
代码
/**
******************************************************************************
* 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 "adc_reader.h"
/*--------------------------------- 取模-----------------------------------------*/
uint8_t zhi[] = {0x00,0x80,0x60,0xF8,0x07,0x04,0xE4,0xA4,0xA4,0xBF,0xA4,0xA4,0xE4,0x04,0x00,0x00,
0x01,0x00,0x00,0xFF,0x40,0x40,0x7F,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x40,0x40,0x00};
/*----------------------------------------------------------------------------------*/
/**********************************************************************************************
*函数:void Init( void )
*功能:平台初始化
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void Init() {
// 开发板平台初始化
BoardInitMcu();
BoardInitPeriph();
keys_init();//按键初始化
setTimer2Callback(Time2Handler);
Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
}
/**********************************************************************************************
*函数:void KeyDownHandler( void )
*功能:按钮事件监听
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void KeyDownHandler(void) {
}
/**********************************************************************************************
*函数:void handlerPre10Ms( void )
*功能:10毫秒循环
*输入:无
*输出:无
*特殊说明:循环处理总时长300ms
**********************************************************************************************/
void handlerPre10Ms(void) {
for (int delay = 0; delay < 30; delay++) {
HAL_Delay(10);
}
}
float adc = 0;
uint8_t arr[10] = {'\0'};
/**
* Main application entry point.
*/
int main(void)
{
Init();
OLED_Init();
OLED_Clear();
ADCS_Init();//初始化ADC通道0和通道2
OLED_ShowCHinese(0,3,29);OLED_ShowCHinese(16,3,30);OLED_ShowCHineseArray(32,3,zhi);
while( 1 )
{
AdcScanChannel();//转换数据为电压值
adc = AdcReadCh0();//获取电压值
adc = ((5/2.0)*adc*100);
if(adc>100){
GpioWrite(&Led2,1);
}else GpioWrite(&Led2,0);
sprintf(arr,":%2.2f Lx",adc);
OLED_ShowString(48,3,arr);
}
}