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 键控制选择
菜单箭头向下移动,具体界面效果如下图所示
LoRa(A)选择具体菜单时,点击 LoRa(A)的 Key4 键,可以控制 LoRa(B)
显示菜单显示对应的功能,具体显示内容如下:
选择“光照”菜单,LoRa(B)显示界面参考下图
选择“温度”菜单,LoRa(B)显示界面参考下图
选择“湿度”菜单,LoRa(B)显示界面参考下图
选择“LED1 开”菜单,LoRa(B)的 LED1 灯亮起同时 LoRa(B)的显示
屏显示界面参考下图(显示图片“信号灯-2.bm”p)
选择“LED1 关”菜单,LoRa(B)的 LED1 灯熄灭同时 LoRa(B)显示界
面参考下图(显示图片“信号灯-0.bmp”)
选择“LED2 呼吸灯”菜单,LoRa(B)的 LED2 实现呼吸灯效果,同时
LoRa(B)的显示屏循环显示三张图片(“信号灯-0.bmp”、“信号灯
-1.bmp”、“信号灯-2.bmp”),显示界面参考下
选择“LED2 闪烁”菜单,LoRa(B)的 LED2 实现间隔 0.5 秒闪烁效果,
LoRa(B)显示屏循环显示两张图片(“信号灯-0.bmp”、“信号灯-1.
bmp”),显示界面参考下图
当 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();
}
}
}
- 自制图片
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异