大家帮我看看这段代码问题出在什么地方?
就这样一段简单的代码,在12864屏上每一行都只显示一半是怎么回事?u8g.firstPage();
do {
if (nexttime-time>=1 || time_status==1){
draw();
u8g.setPrintPos(7,28);
u8g.print(PM25);
u8g.setPrintPos(54,60);
u8g.print(AQI);
u8g.setPrintPos(96,28);
u8g.print(temp);
u8g.drawBitmapP(111, 17, 2,12, duc);
u8g.setPrintPos(95,60);
u8g.print(humi);
u8g.drawStr(114, 60, "%");
u8g.setPrintPos(54,28);
u8g.print(VOC);
//u8g.drawBitmapP(111, 35, 2,12, wei);
nexttime=millis();
time=millis();
time_status=0;
}
else{
nexttime=millis();
time_status=0;
}
}
while(u8g.nextPage());
如果把nexttime-time>=1 改成>=0,就可以全部显示,如果改成>=2或者以上的就全部不显示了,这是为什么
firstPage()跟nextPage()畫的都是同一個畫面,請把下面這串當做不可改
u8g.firstPage();
do{
draw();
} while(u8g.nextPage());
u8g.setPrintPos()那些內容就寫在draw()裡面,if else擺到最外面 u8g.firstPage();和u8g.nextPage()分别起什么作用啊 搞定,谢谢Be1ieve,但我还是不明白为什么会齐刷刷的削掉一半? u8g繪圖的方式很特殊,不過結果很簡單:每次跑完上面那一整串才算完成一個畫面
有沒有算過儲存一個128*64的黑白畫面要多少內存?1KB!
整個328P也只有2KB可以用而已,1KB可說是非常奢侈的
為了節省內存,u8g必須將一個畫面分成好幾次繪製。例如樓主的畫面至少是8分割
於是就出現了上面那串,作者稱為picture loop的東西,作為處理分割畫面的手段
也就是從firstloop()開始一直到nextloop()回傳0,程式跳出do{}為止才算是一個完整畫面的完成 明白了,谢谢be1ieve
页:
[1]