LORA 模块控制功能开发
一个lora模块,一个温湿度,光照一体模块,通过I2C总线采集温湿度传感器数据。
任务要求:
1.液晶屏上实时显示当前温度湿度信息如下:
Temperature:xxx
Humidity:xxxx
2.按下Key2后,板上的LED2进入呼吸灯状态
3.按下Key3后,板上的LED2常亮
4.按下Key4后,板上的LED2灭
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
#include "sht3x.h" //调用温湿度
#include "adc_reader.h" //调用ADC
void Init() {
BoardInitMcu();
BoardInitPeriph();
keys_init();
setTimer2Callback(Time2Handler);
Tim2McuInit(1);
}
void KeyDownHandler(void) {
}
void handlerPre10Ms(void) {
for (int delay = 0; delay < 30; delay++) {
HAL_Delay(10);
}
}
void delay(int time)
{
while(time--);
}
void jiemian() //界面
{
OLED_ShowString(0,0,"Temperature:");
OLED_ShowString(0,2,"Humidity:");
}
uint8_t a[50];
void get_temphum() //温湿度
{
hal_temHumInit();
float temp,hum;
call_sht11(&temp,&hum);
sprintf((char*)a,"%.1f",temp);
OLED_ShowString(95,0,a);
sprintf((char*)a,"%.1f",hum);
OLED_ShowString(95,2,a);
}
void huxi() //呼吸灯
{
for(int i=0;i<1000;i++)
{
GpioWrite(&Led2,0);
delay(i);
GpioWrite(&Led2,1);
delay(1000-i);
}
for(int i=0;i<1000;i++)
{
GpioWrite(&Led2,0);
delay(1000-i);
GpioWrite(&Led2,1);
delay(i);
}
}
unsigned int pd = 0;
int main( void )
{
Init();
OLED_Init();
jiemian();
ADCS_Init();
while( 1 )
{
get_temphum();
if(isKey2Pressed())
{
pd=1;
resetKey2();
}
else if(isKey3Pressed())
{
pd=2;
resetKey3();
}
else if(isKey4Pressed())
{
pd=3;
resetKey4();
}
if(pd==1)
{
huxi();
}
else if(pd==2)
{
GpioWrite(&Led2,0);
}
else if(pd==3)
{
GpioWrite(&Led2,1);
}
}
}
第一次尝试发表文章,如有不足,请告知我,谢谢!!!!