2022山东高职省Lora赛题

2022山东高职省Lora赛题

题目

4、LoRa 通讯与控制
请选手选择两块 LoRa 模块实现无线通讯功能,并根据任务要求完成相关功
能的开发,并发布程序到两块 LoRa 模块中,通上电源等待裁判评判。
任务要求:

本题提供了工程项目供选手使用。两个 LoRa 模块我们暂时命名为 LoRa(A)
和 LoRa(B)。

在 LoRa(A)模块上安装“光照温湿度二合一模块”。“光照温湿度二合
一模块”可以从工位上 ZigBee 设备安装区借用,开发完成后将该模块装
回工位 ZigBee 设备上。

“竞赛参数信息”中提供了本题所需使用的频率信息。

设备上电,LoRa(A)和 LoRa(B)两个模块的 LED1 和 LED2 灯都不亮。LoRa
(A)模块允许显示菜单有“光照”、“温度”、“湿度”、“LED1 开”、
“LED 关”、“LED2 呼吸灯”、“LED2 闪烁”。可以通过 LoRa(A)的 Ke
y2 键控制选择菜单箭头向上移动,可以通过 LoRa(A)的 Key3 键控制选择
菜单箭头向下移动,具体界面效果如下图所示
image-20221121203220675
LoRa(A)选择具体菜单时,点击 LoRa(A)的 Key4 键,可以控制 LoRa(B)
显示菜单显示对应的功能,具体显示内容如下:

选择“光照”菜单,LoRa(B)显示界面参考下图
image-20221121203226480
选择“温度”菜单,LoRa(B)显示界面参考下图
image-20221121203238600
选择“湿度”菜单,LoRa(B)显示界面参考下图
image-20221121203252220
选择“LED1 开”菜单,LoRa(B)的 LED1 灯亮起同时 LoRa(B)的显示
屏显示界面参考下图(显示图片“信号灯-2.bm”p)

选择“LEDimage-202211212032576961 关”菜单,LoRa(B)的 LED1 灯熄灭同时 LoRa(B)显示界
面参考下图(显示图片“信号灯-0.bmp”)
image-20221121203302840
选择“LED2 呼吸灯”菜单,LoRa(B)的 LED2 实现呼吸灯效果,同时
LoRa(B)的显示屏循环显示三张图片(“信号灯-0.bmp”、“信号灯
-1.bmp”、“信号灯-2.bmp”),显示界面参考下

image-20221121203309274


选择“LED2 闪烁”菜单,LoRa(B)的 LED2 实现间隔 0.5 秒闪烁效果,
LoRa(B)显示屏循环显示两张图片(“信号灯-0.bmp”、“信号灯-1.
bmp”),显示界面参考下图
image-20221121203330326
当 LoRa(A)模块选择“光照”菜单时,再点击 Key2,菜单不再向上移动。
当 LoRa(A)模块选择“LED2 闪烁”菜单时,再点击 Key3,菜单不再向下
移动。
完成以上任务后请做以下步骤:
 请将开发完成的程序烧写入两个 LoRa 模块中,安装到工位的作业区,通
上电源等待裁判评判。同时在 LoRa(A)模块天线上贴上标签纸,标签纸
写上标记“C-4-A”。在 LoRa(B)模块天线上贴上标签纸,标签纸写上标
记“C-4-B”。
 把完整的工程代码拷贝到“D:\提交资料\模块 C\4\”目录中。

源代码

Lora(A)

/**
  ******************************************************************************
  * 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 "sht3x.h"
#include "adc_reader.h"
#include "NS_Radio.h"
#include "sx1276.h"

#include "usart1-board.h"

unsigned char Z = 0;
unsigned char State = 0xff;

unsigned char kaiguan[][32] = {
/*--  文字:  开  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00,
0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  关  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x10,0x11,0x16,0x10,0x10,0xF0,0x10,0x10,0x14,0x13,0x10,0x00,0x00,0x00,
0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x41,0x41,0x81,0x81,0x00,

};

unsigned char Hxdss[][32] = {
/*--  文字:  呼  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xFC,0x04,0x04,0xFC,0x00,0x04,0x14,0x64,0x04,0xFE,0x02,0x43,0x32,0x00,0x00,
0x00,0x0F,0x04,0x04,0x0F,0x00,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x00,

/*--  文字:  吸  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xFC,0x04,0x04,0xFC,0x02,0x02,0xFE,0x02,0x02,0x62,0x5A,0x46,0xC0,0x00,0x00,
0x00,0x0F,0x04,0x04,0x4F,0x30,0x8E,0x81,0x46,0x28,0x10,0x28,0x46,0x81,0x80,0x00,

/*--  文字:  灯  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x70,0x00,0xFF,0x20,0x10,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,
0x80,0x60,0x18,0x07,0x08,0x30,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  闪  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xF8,0x01,0x02,0x00,0x02,0x02,0xF2,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x08,0x04,0x03,0x00,0x01,0x02,0x0C,0x40,0x80,0x7F,0x00,0x00,

/*--  文字:  烁  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x70,0x00,0xFF,0x20,0x10,0x00,0xFC,0x84,0x84,0xF4,0x82,0x83,0x82,0x80,0x00,
0x80,0x60,0x18,0x07,0x08,0x30,0x20,0x10,0x4C,0x80,0x7F,0x00,0x04,0x08,0x30,0x00,
};

void OLED_State();
/**********************************************************************************************
*函数:void Init( void )
*功能:平台初始化
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void Init() {
    // 开发板平台初始化
    BoardInitMcu();
    BoardInitPeriph();
    keys_init();//按键初始化
    setTimer2Callback(Time2Handler);
    Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
	 
}

/**********************************************************************************************
*函数:void KeyDownHandler( void )
*功能:按钮事件监听
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void KeyDownHandler(void) {
	if(isKey2Pressed()){
		if(Z>0){
		
			OLED_Clear();
			Z--;
			OLED_State();
		}

		
		resetKey2();
	}
	if(isKey3Pressed()){
		if(Z < 6){
			OLED_Clear();
			Z++;
			OLED_State();
		}

		resetKey3();
	}
	if(isKey4Pressed()){
		
		State = Z;
		resetKey4();
	}
	
}

/**********************************************************************************************
*函数:void handlerPre10Ms( void )
*功能:10毫秒循环
*输入:无
*输出:无
*特殊说明:循环处理总时长300ms
**********************************************************************************************/
void handlerPre10Ms(void) {
    for (int delay = 0; delay < 30; delay++) {
        HAL_Delay(10);
        
    }
}


void OLED_State(){

	OLED_ShowChar(128-16,Z*2>6?6:Z*2,'<');

	switch(Z){
		case 0:
		case 1:
		case 2:
		case 3:
			OLED_ShowCHinese(0,0,29);OLED_ShowCHinese(16,0,30);
		OLED_ShowCHinese(0,2,22);OLED_ShowCHinese(16,2,23);
		OLED_ShowCHinese(0,4,24);OLED_ShowCHinese(16,4,23);
		OLED_ShowString(0,6,"LED1");OLED_ShowCHineseArray(32,6,kaiguan[0]);
			
			break;
		case 4:
		OLED_ShowCHinese(0,0,22);OLED_ShowCHinese(16,0,23);
		OLED_ShowCHinese(0,2,24);OLED_ShowCHinese(16,2,23);
		OLED_ShowString(0,4,"LED1");OLED_ShowCHineseArray(32,4,kaiguan[0]);
		OLED_ShowString(0,6,"LED1");OLED_ShowCHineseArray(32,6,kaiguan[1]);
			break;
		case 5:
		OLED_ShowCHinese(0,0,24);OLED_ShowCHinese(16,0,23);
		OLED_ShowString(0,2,"LED1");OLED_ShowCHineseArray(32,2,kaiguan[0]);
		OLED_ShowString(0,4,"LED1");OLED_ShowCHineseArray(32,4,kaiguan[1]);			
	  OLED_ShowString(0,6,"LED2");OLED_ShowCHineseArray(32,6,Hxdss[0]);OLED_ShowCHineseArray(48,6,Hxdss[1]);OLED_ShowCHineseArray(64,6,Hxdss[2]);
			break;
		case 6:
		OLED_ShowString(0,0,"LED1");OLED_ShowCHineseArray(32,0,kaiguan[0]);
		OLED_ShowString(0,2,"LED1");OLED_ShowCHineseArray(32,2,kaiguan[1]);			
	  OLED_ShowString(0,4,"LED2");OLED_ShowCHineseArray(32,4,Hxdss[0]);OLED_ShowCHineseArray(48,4,Hxdss[1]);OLED_ShowCHineseArray(64,4,Hxdss[2]);
    OLED_ShowString(0,6,"LED2");OLED_ShowCHineseArray(32,6,Hxdss[3]);OLED_ShowCHineseArray(48,6,Hxdss[4]);
			break;
		
	
	}
	
}

void State_Send(){
					unsigned char arr[10];
			if(State == 0){

				AdcScanChannel();
				sprintf(arr,"%.2f",AdcReadCh0()*100*5/2.0);
				
			}
		else	if(State == 1){
				float temp,hump;
				call_sht11(&temp,&hump);

				sprintf(arr,"%.2f",temp);
				
			}
		else	if(State == 2){

				float temp,hump;
				call_sht11(&temp,&hump);

				sprintf(arr,"%.2f",hump);			
				
			}
else
	arr[0] = '\0';

				arr[7] = State;
				//arr[7] = Z;
			HAL_Delay(80);
			USART1_SendStr(arr,10);
SX1276Send(arr,10);
			
	
}





/**
 * Main application entry point.
 */
int main( void )
{
    Init();
	OLED_Init();
	OLED_State();
	ADCS_Init();
	USART1_Init(115200);
	AdcScanChannel();
	hal_temHumInit();
	NS_RadioInit(433000521,18,1000,1000);
	
    while( 1 )
    {
			
			KeyDownHandler();
			

			State_Send();
			
			
			
			/*
			unsigned char test[10];
			test[7] = 10;
			SX1276Send(test,10);*/
			
    }
}

Lora(B)

/**
  ******************************************************************************
  * 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 "NS_Radio.h"


#include "usart1-board.h"

	/*extern */unsigned char State /*= 0xff*/;

unsigned char du[] = {
	/*--  文字:  °  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

unsigned char kaiguan[][32] = {

	/*--  文字:  开  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00,
0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  关  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x10,0x11,0x16,0x10,0x10,0xF0,0x10,0x10,0x14,0x13,0x10,0x00,0x00,0x00,
0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x41,0x41,0x81,0x81,0x00,
};

unsigned char kai_image[] = {
/*--  调入了一幅图像:C:\Users\chen\Desktop\kai.bmp  --*/
/*--  宽度x高度=48x48  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,
0x60,0x60,0xE0,0xC0,0x00,0xF8,0xB8,0x18,0x18,0xB8,0xF8,0x00,0xC0,0xE0,0x60,0x60,
0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x98,0x98,0x98,0xF8,0xF7,0xFF,
0xFC,0xFC,0x7F,0x3F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x3F,0x3F,0x7C,0xFC,
0xFF,0xF7,0xF8,0xD8,0x98,0x98,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0xFF,0xFF,0xFF,0xFF,0x03,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFF,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,
0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

unsigned char guan_image[] = {
/*--  调入了一幅图像:C:\Users\chen\Desktop\关.bmp  --*/
/*--  宽度x高度=48x48  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0,0xF8,
0xFC,0xFC,0x7E,0x3E,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x3E,0x3E,0x7C,0xFC,
0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x03,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,
0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

	
};
unsigned char hx_image[] = {
/*--  调入了一幅图像:C:\Users\chen\Desktop\hx.bmp  --*/
/*--  宽度x高度=48x48  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,
0x60,0x60,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0x60,0x60,
0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF7,0xFF,
0xFC,0xFC,0x7F,0x3F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x3F,0x3F,0x7C,0xFC,
0xFF,0xF7,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x03,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,
0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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);
        
    }
}
//void Lora_Read();
void Led2_HX(){

	unsigned int time=1000,i,j;
	unsigned char R[10];
	OLED_DrawBMP(128/2-48,0,48,48,kai_image);
	for(i = 0;i < time;i++){
		
		for(j = 0;j < i;j++){
			GpioWrite(&Led2,0);
						
			
			if(State!=5)break;
		}
		for(j = 0;j <time - i;j++){
			GpioWrite(&Led2,1);

			if(State!=5)break;
		}
	}
	OLED_DrawBMP(128/2-48,0,48,48,hx_image);
	for(i = 0;i < time;i++){
		
		for(j = 0;j < i;j++){
			GpioWrite(&Led2,1);

			if(State!=5)break;
		}
		for(j = 0;j <time - i;j++){
			GpioWrite(&Led2,0);

			if(State!=5)break;
		}
		
	}OLED_DrawBMP(128/2-48,0,48,48,guan_image);	
				GpioWrite(&Led2,1);
}



unsigned int t = 0,T = 0;

unsigned char arr[10];
void OLED_State(){
	
	switch(State){
		
		case 0:

		OLED_ShowString(32,3,arr);
		OLED_ShowString(32+6*8,3,"Lx");
			break;
		case 1:

		OLED_ShowString(32,3,arr);
		OLED_ShowCHineseArray(32+6*8,3,du);
		OLED_ShowChar(32+6*8+16,3,'C');
			
			break;
		case 2:

		OLED_ShowString(32,3,arr);
		OLED_ShowString(32+6*8,3,"%RH");
			
			break;
		case 3:
			GpioWrite(&Led1,0);
		OLED_DrawBMP(128/2-48,0,48,48,kai_image);
			OLED_ShowString(128/2-48,6,"LED1");OLED_ShowCHineseArray(128/2-16,6,kaiguan[0]);
			break;
		case 4:
				GpioWrite(&Led1,1);
		OLED_DrawBMP(128/2-48,0,48,48,guan_image);
			OLED_ShowString(128/2-48,6,"LED1");OLED_ShowCHineseArray(128/2-16,6,kaiguan[1]);		
			break;
		case 5:
			Led2_HX();
		
			break;
		case 6:
		{
	//	HAL_Delay(1);	
		T++;
		if(T == 5){
			OLED_DrawBMP(128/2-48,0,48,48,kai_image);
			GpioWrite(&Led2,0);
		}
		else if(T == 10){
			T = 0;
			OLED_DrawBMP(128/2-48,0,48,48,guan_image);
			GpioWrite(&Led2,1);
		}
		}
			break;	
	}
	
	
}
/*
void Lora_Read(){
			unsigned char Read[10];
			if(Read[7]!=State)OLED_Clear();
			ReadRadioRxBuffer(Read);
			HAL_Delay(100);
			USART1_SendStr(Read,10);
			//HAL_Delay(100);
			if(Read[7]!=0)
						State = Read[7];
					Read[7] = '\0';
			sprintf(arr,"%s",Read);

}*/


/**
 * Main application entry point.
 */
int main( void )
{
	State = 0xff;
    Init();
	OLED_Init();
	
	NS_RadioInit(433000521,18,1000,1000);
USART1_Init(115200);
	//unsigned char test[10];
    while( 1 )
    {/*
ReadRadioRxBuffer(test);
			if(test[7] == 10)
						GpioWrite(&Led1,0);*/
			

			
			//Lora_Read();
			t++;
			HAL_Delay(1);	
			if(t % 100 == 0){
			unsigned char Read[10];
			
			ReadRadioRxBuffer(Read);
			if(Read[7]!=State)OLED_Clear();
			
			//HAL_Delay(200);
			//USART1_SendStr(Read,10);
			//HAL_Delay(100);

				State = Read[7];
					Read[7] = '\0';
			sprintf(arr,"%s",Read);			
				OLED_State();
			}
			
			
			

    }
}

  • 自制图片

kai关kai

posted @   ~内个臣呐~  阅读(508)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
点击右上角即可分享
微信分享提示