0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于stm32,u8g2菜单之间切换(三)用u8g2写一个菜单无限左右循环

stm32嵌入式应用学习 来源:stm32嵌入式应用学习 作者:stm32嵌入式应用学 2025-03-11 09:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

让菜单循环播放只要用到的函数

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
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371167
  • u8g2
    +关注

    关注

    0

    文章

    18

    浏览量

    2274
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32移植U8g2图形库的方法 实现OLED图形显示

    本篇介绍了如何将U8g2图形库移植到STM32中。
    的头像 发表于 06-07 08:29 1.3w次阅读
    <b class='flag-5'>STM32</b>移植<b class='flag-5'>U8g2</b>图形库的方法 实现OLED图形显示

    【CH32V208开发板】图形库u8g2的oled显示

    *64,I2C接口。u8g2是单色显示库的第二版本,其是开源的。u8g2支持lcd和oled,支持众多驱动芯片,包含了SSD1306,具体支持驱动情况可以资源库查看到。硬件连接如下:
    发表于 07-29 23:11

    U8G2库简介

    是针对arduino平台的,但是使用方法在stm32平台上也是大同小异。U8G2库的下载及硬件平台U8G2库是开源的github项目,通
    发表于 08-10 06:02

    怎样去使用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

    U8G2如何连接Nodemcu-32s?

    U8G2如何连接Nodemcu-32s?
    发表于 02-15 07:00

    U8G2图形库移植介绍

    效果U8G2图形库介绍U8g2:用于单色显示的库,版本 2U8g2用于嵌入式设备的单色图形库。U
    发表于 02-17 07:10

    【平头哥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 43次下载
    NodeMCU 之 <b class='flag-5'>U8G2</b> 库使用详解

    esp8266学习笔记⑨:OLED 屏幕的使用(u8g2图形库模块)

    、使用前的准备首先先将u8g2的模块烧录到nodemcu中,选择OLED 屏幕所支持的u8g图形库,和所需要的字体,如下图:构建完成之后,下载烧录到开发板中。二、u8g2模块的主要函
    发表于 11-26 09:36 18次下载
    esp8266学习笔记⑨:OLED 屏幕的使用(<b class='flag-5'>u8g2</b>图形库模块)

    ESP8266驱动SH1306-1.3寸OLED屏幕(u8g2图形库)

    Arduino IDE库管理器中搜索“u8g2”,然后安装即可。现在我们打开u8g2官方给出的几个Demo,以"Weather"为例:打开后,发现SH1106 OLED屏幕关于I2C驱
    发表于 12-22 18:43 14次下载
    ESP8266驱动SH1306-1.3寸OLED屏幕(<b class='flag-5'>u8g2</b>图形库)

    stm32移植U8G2图像库指南

    效果U8G2图形库介绍U8g2:用于单色显示的库,版本 2U8g2用于嵌入式设备的单色图形库。U
    发表于 12-22 18:55 26次下载
    <b class='flag-5'>stm32</b>移植<b class='flag-5'>U8G2</b>图像库指南

    关于stm32u8g2菜单之间切换(1)

    在移植U8g2
    的头像 发表于 03-05 16:43 940次阅读

    关于stm32u8g2菜单之间切换(二)u8g2的移植

    移植是基于stm32cubeide,oled屏是1306驱动128x64的。接口iic软件模拟,hal库iic硬件貌似有bug。 1,先在网上下载u8g2包。 2,解压后找到源文件文
    的头像 发表于 03-04 09:52 1524次阅读
    <b class='flag-5'>关于</b><b class='flag-5'>stm32</b>,<b class='flag-5'>u8g2</b><b class='flag-5'>菜单</b><b class='flag-5'>之间</b><b class='flag-5'>切换</b>(二)<b class='flag-5'>u8g2</b>的移植

    关于stm32u8g2菜单之间切换u8g2些必要函数

    _msg_cb byte_cb这个参数直接使用自带的 u8x8_byte_sw_i2c即可,我们只要实现 u8x8_msg_cb gpio_and_delay_cb这个参数
    的头像 发表于 03-07 12:53 1051次阅读
    <b class='flag-5'>关于</b><b class='flag-5'>stm32</b>,<b class='flag-5'>u8g2</b><b class='flag-5'>菜单</b><b class='flag-5'>之间</b><b class='flag-5'>切换</b>(<b class='flag-5'>三</b>)<b class='flag-5'>写</b><b class='flag-5'>u8g2</b>的<b class='flag-5'>一</b>些必要函数