gpt4 book ai didi

c - U8glib在oled上慢速简单测试程序

转载 作者:行者123 更新时间:2023-11-30 15:31:38 25 4
gpt4 key购买 nike

我正在尝试在arduino以太网上使用u8glib,在第一阶段我需要以一种漂亮的方式显示一个简单的倒计时。测试是否能及时管理显示。

我必须以毫秒为单位测量变化,比如 30ms,因此我需要倒计时在大约 50/100ms 内改变 1 个单位。

这是oled http://www.seeedstudio.com/wiki/Grove_-_OLED_Display_1.12%22

现在我正在尝试 U8glib,因为集成了很多字体,而且似乎有很好的文档记录。

但最大的问题是:没有 sleep obiuvsly 的倒计时太慢了!按照1秒1次变化的顺序。我有什么错吗?我需要更改库吗?

谢谢

这是代码

#include "U8glib.h"

U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C

#define MAX_VAL 200
#define MAX_VAL1 250
#define MAX_VAL2 350
#define MAX_VAL3 450
#define MAX_VAL4 500

int current_max_val = MAX_VAL1;
int currentBB = current_max_val;

char bb_n[4] = {0,0,0,0};
int bb_level = 4;


static int last_bb_n = current_max_val;

void draw(void) {

int sizev = u8g.getStrWidth(bb_n);
u8g.drawStr( (48 - (sizev/2)),60,bb_n);

for(int i=0;i<bb_level;i++){
u8g.drawTriangle((i*10)+0,90, (i*10)+10,90, (i*10)+5,85);
}
last_bb_n = currentBB;
u8g.drawHLine(0,20, 96);
u8g.drawHLine(0,70, 96);
}

void setup(void) {

// flip screen, if required
//u8g.setRot180();

// set SPI backup if required
//u8g.setHardwareBackup(u8g_backup_avr_spi);

// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
u8g.setFont(u8g_font_gdb30);
}

void loop(void) {
// picture loop
u8g.firstPage();
count();

do {
draw();
} while( u8g.nextPage() );

}

void count(){
if(currentBB == 0){
currentBB = current_max_val;
}

itoa(currentBB,bb_n,10);

if(currentBB >= ((current_max_val/4)*3)){
bb_level = 4;
}else if((currentBB < ((current_max_val/4)*3)) && (currentBB >= (current_max_val/4)*2)){
bb_level = 3;
}else if((currentBB < ((current_max_val/4)*2)) && (currentBB >= (current_max_val/4))){
bb_level = 2;
}else if(currentBB < (current_max_val/4)){
bb_level = 1;
}else{
bb_level = 0;
}

currentBB--;

最佳答案

一些优化想法:

  1. 使用U8GLIB_SSD1327_96X96_2X_GR
  2. 将 sizev 设为全局变量并在 count() 中计算其值

奥利弗

关于c - U8glib在oled上慢速简单测试程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com