研究三天u8g库文件,弄个很简单的温湿度显示
u8g的google code(好像是wiki我也不懂)全英文 ,怎么在屏幕显示东西我都不知道,想的头疼,最后慢慢摸索print就可以。弄点成果出来分享下。屏幕是12864,传感器是dht11,屏幕最下面是随机的画方块。。。。。很小白 分享下程序!! 我自己翻译了一半u8glib说明文件……配合机翻翻译的…… #include <dht11.h>#include <U8glib.h>
dht11 DHT11;
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
#define DHT11PIN 2
void draw(void)
{
u8g.setFont(u8g_font_unifont);
u8g.setPrintPos(15, 10);
u8g.print("Chang&Yang!");
u8g.setPrintPos(40, 30);
int chk = DHT11.read(DHT11PIN);
delay(100);
u8g.print((float)DHT11.temperature, 1);
u8g.setPrintPos(80, 30);
u8g.print("C");
delay(5);
u8g.setPrintPos(40, 50);
u8g.print((float)DHT11.humidity, 1);
u8g.setPrintPos(80, 50);
u8g.print("%");
delay(800);
}
void setup(void){}
void loop(void) {
u8g.firstPage();
do {
draw();
long x = random(0,127);
long y = random(51,63);
u8g.drawBox(x,y,5,5);
long z = random(0,127);
long c = random(51,63);
u8g.drawBox(z,c,8,8);
} while( u8g.nextPage() );
delay(50);
} int chk = DHT11.read(DHT11PIN);这句我能看懂大概意思,但是不知道用在哪里了……而且美哦这句不显示温湿度。:L interrgned 发表于 2014-5-18 15:48 static/image/common/back.gif
我自己翻译了一半u8glib说明文件……配合机翻翻译的……
{:3_41:}高手 504835618 发表于 2014-5-18 14:26 static/image/common/back.gif
分享下程序!!
分了刚进坛子不知道那种方式的贴代码 jikecyatmcn 发表于 2014-5-18 15:52 static/image/common/back.gif
int chk = DHT11.read(DHT11PIN);这句我能看懂大概意思,但是不知道用在哪里了……而且美哦这句不显示温湿度 ...
從你的程式看來, DHT11.read(DHT11PIN) 的結果可能只是一個 return code, 顯示讀取時是否有錯誤.
你顯示溫度的地方在於:
u8g.print((float)DHT11.temperature, 1);
而顯示濕度的地方在於:
u8g.print((float)DHT11.humidity, 1); jikecyatmcn 发表于 2014-5-18 15:57 static/image/common/back.gif
分了刚进坛子不知道那种方式的贴代码
在菜單上選<>, 再貼上程式就可以了. Super169 发表于 2014-5-18 22:22 static/image/common/back.gif
從你的程式看來, DHT11.read(DHT11PIN) 的結果可能只是一個 return code, 顯示讀取時是否有錯誤.
你顯示 ...
对啊对啊确实那句话是一个是switch语句输出错误用的,但是没这句也不显示温度。。。我也不懂。。 jikecyatmcn 发表于 2014-5-19 18:04 static/image/common/back.gif
对啊对啊确实那句话是一个是switch语句输出错误用的,但是没这句也不显示温度。。。我也不懂。。
這句是經庫的函数去讀取 DHT11 上的數值, 然後放到內存中, 之後你才可以用 DHT11.temperature 及 DHT11.humidity 取得 溫度和濕度的值.
本帖最后由 504835618 于 2014-5-20 08:06 编辑
jikecyatmcn 发表于 2014-5-18 15:51 static/image/common/back.gif
#include
#include
请问屏的D/C接ARDUINO哪里呢?我的屏是,VCC,GND,SCK,SDA,RST,D/C,应该怎么对应接到ARDUINO上;还有就是改u8glib哪个 文件可以自已定义接线。谢谢!! 本帖最后由 Be1ieve 于 2014-5-20 08:07 编辑
u8g绘图时为了避免内存不够用,有可能会把整个画面切割成小区块
因此在loop()中才会有下面这段:
u8g.firstPage();
do{ draw();} while(u8g.nextPage());
且要求在这段时间里面,必须要保持画面的内容是一致的,以免显示时出现问题
下面是我的code,看看就好
#include <U8glib.h>
#include "dht.h"
U8GLIB_PCD8544 u8g(13, 11, 10, A0, A1); // U8GLIB_PCD8544(sck/sclk, mosi/sdin, ce/sce, d0/dc, reset)
dht DHT11;
#define DHT_PIN A2
void drawScreen(){
drawTitle();
drawData();
}
void drawTitle(){
u8g.setFont(u8g_font_helvB08);
u8g.drawStr(0, 8, "TMP:");
u8g.drawStr(0, 34, "HMD:");
u8g.drawStr(68, 21, "'C");
u8g.drawStr(68, 47, "%H");
}
void drawData(){
u8g.setFont(u8g_font_gdb20);
u8g.setPrintPos(33,20);
u8g.print(DHT11.temperature,0);
u8g.setPrintPos(33,46);
u8g.print(DHT11.humidity,0);
}
void setup(){
}
void loop(){
int check = DHT11.read11(DHT_PIN);
// u8g loop
u8g.firstPage();
do {
drawScreen();
} while( u8g.nextPage() );
delay(1000);
} 这个好!顶一下{:soso_e179:} 要是添加上中文就更好咯!
页:
[1]
2