高职物联网屏幕显示光照值

高职物联网模拟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);


    }
}

posted @ 2022-10-17 10:29  ~内个臣呐~  阅读(151)  评论(0)    收藏  举报