让菜单循环播放只要用到的函数
void rotateRight(uint8_t *arr[], int n);让数组右移
void rotateLeft( uint8_t *arr[], int n);让数组左移
int ui_run(int *a,int *a_tag,uint8_t speed,uint8_t slow_cnt);设置菜单移动以及移动速度,返回值为bool放在while循环里使用。
首先我们要创建一个指针数组存放我们图片的指针地址uint8_t *p[]={bmp_img,bmp_clock,bmp_gear,bmp_led,bmp_pin};
因为u8g2_DrawXBMP(); 函数画图需要的是我们图片的地址而不是整个图片数组。
下面是源码:
int ui_run(int *a,int *a_tag,uint8_t speed,uint8_t slow_cnt) //UI滑动效果放入while里
int ui_run(int *a,int *a_tag,uint8_t speed,uint8_t slow_cnt)
{
uint8_t temp;
temp = abs(*a_tag - *a) > slow_cnt ? speed : 1;
if(*a < *a_tag)
{
*a += temp;
}
else if (*a > *a_tag)
{
*a -= temp;
}
else
{
return 0;
}
return 1;
}
#include < stdio.h >
void rotateRight( uint8_t *arr[], int n) {
uint8_t *temp= arr[n-1]; // 保存最后一个元素
for (int i = n-1; i > 0; i--) {
arr[i] = arr[i-1]; // 右移元素
}
arr[0] = temp; // 将保存的最后一个元素放到第一个位置
}
void rotateLeft( uint8_t *arr[], int n) {
uint8_t *temp= arr[0]; // 保存第一个元素
for (int i = 0; i > n-1; i++) {
arr[i] = arr[i+1]; // 左移元素
}
arr[n-1] = temp; // 将保存的元素放到最后位置
}
while (1)
{
Coordinate.Menu_x=8;
while(ui_run(&Coordinate.Menu_x,&meun,Coordinate.speed,Coordinate.Lspeed) )
{
u8g2_DrawXBMP(&u8g2,Coordinate.Menu_x-80,Coordinate.Menu_y,32,32,p[0]);
u8g2_DrawXBMP(&u8g2,Coordinate.Menu_x-40,Coordinate.Menu_y,32,32,p[1]);
u8g2_DrawXBMP(&u8g2,Coordinate.Menu_x,Coordinate.Menu_y,32,32,p[2]);
u8g2_DrawXBMP(&u8g2,Coordinate.Menu_x+40,Coordinate.Menu_y,32,32,p[3]);
u8g2_DrawXBMP(&u8g2,Coordinate.Menu_x+80,Coordinate.Menu_y,32,32,p[4]);
u8g2_SendBuffer(&u8g2);
u8g2_ClearBuffer(&u8g2);
}
rotateRight(p,5);
HAL_Delay(2000);
//u8g2_ClearBuffer(&u8g2);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2313文章
11206浏览量
375246 -
u8g2
+关注
关注
0文章
18浏览量
2421
发布评论请先 登录
相关推荐
热点推荐
【CH32V208开发板】图形库u8g2的oled显示
*64,I2C接口。u8g2是单色显示库的第二个版本,其是开源的。u8g2支持lcd和oled,支持众多驱动芯片,包含了SSD1306,具体支持驱动情况可以资源库查看到。硬件连接如下:
发表于 07-29 23:11
怎样去使用NodeMCU的U8G2库呢
NodeMCU 之 U8G2 库使用详解1.指令1 u8g2.clearDisplay(); // 清除显示数据及屏幕2 u8g2.clearBuffer(); // 清Buffer缓
发表于 11-01 09:05
oled—u8g2库使用说明
[arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)首先说一下写这个文档的目的,一是给自己做
发表于 01-11 06:51
【平头哥RVB2601创意应用开发】实践2-移植U8g2图形库
界面的设计。由于前段时间刚好在用另一个支持单色显示的图形库——U8g2,所以就想着尝试将U8g2库移植到RVB2601板子中。U8g2简介U8g2
发表于 03-27 20:06
NodeMCU 之 U8G2 库使用详解
NodeMCU 之 U8G2 库使用详解1.指令1 u8g2.clearDisplay(); // 清除显示数据及屏幕2 u8g2.clearBuffer(); // 清B
发表于 10-26 20:36
•45次下载
esp8266学习笔记⑨:OLED 屏幕的使用(u8g2图形库模块)
一、使用前的准备首先先将u8g2的模块烧录到nodemcu中,选择OLED 屏幕所支持的u8g图形库,和所需要的字体,如下图:构建完成之后,下载烧录到开发板中。二、u8g2模块的主要函
发表于 11-26 09:36
•18次下载
ESP8266驱动SH1306-1.3寸OLED屏幕(u8g2图形库)
Arduino IDE库管理器中搜索“u8g2”,然后安装即可。现在我们打开u8g2官方给出的几个Demo,以"Weather"为例:打开后,发现SH1106 OLED屏幕关于I2C驱
发表于 12-22 18:43
•14次下载
关于stm32,u8g2菜单之间切换(二)u8g2的移植
移植是基于stm32cubeide,oled屏是1306驱动128x64的。接口用iic软件模拟,hal库iic硬件貌似有bug。 1,先在网上下载u8g2包。 2,解压后找到源文件文
关于stm32,u8g2菜单之间切换(三)写u8g2的一些必要函数
_msg_cb byte_cb这个参数直接使用自带的 u8x8_byte_sw_i2c即可,我们只要实现 u8x8_msg_cb gpio_and_delay_cb这个参数写一
关于stm32,u8g2菜单之间切换(三)用u8g2写一个菜单无限左右循环
评论