jikecyatmcn 发表于 2014-5-18 13:36:34

研究三天u8g库文件,弄个很简单的温湿度显示

u8g的google code(好像是wiki我也不懂)全英文 ,怎么在屏幕显示东西我都不知道,想的头疼,最后慢慢摸索print就可以。弄点成果出来分享下。屏幕是12864,传感器是dht11,屏幕最下面是随机的画方块。。。。。很小白

504835618 发表于 2014-5-18 14:26:33

分享下程序!!

interrgned 发表于 2014-5-18 15:48:32

我自己翻译了一半u8glib说明文件……配合机翻翻译的……

jikecyatmcn 发表于 2014-5-18 15:51:01

#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);
}

jikecyatmcn 发表于 2014-5-18 15:52:08

int chk = DHT11.read(DHT11PIN);这句我能看懂大概意思,但是不知道用在哪里了……而且美哦这句不显示温湿度。:L

jikecyatmcn 发表于 2014-5-18 15:52:43

interrgned 发表于 2014-5-18 15:48 static/image/common/back.gif
我自己翻译了一半u8glib说明文件……配合机翻翻译的……

{:3_41:}高手

jikecyatmcn 发表于 2014-5-18 15:57:01

504835618 发表于 2014-5-18 14:26 static/image/common/back.gif
分享下程序!!

分了刚进坛子不知道那种方式的贴代码

Super169 发表于 2014-5-18 22:22:19

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);

Super169 发表于 2014-5-18 22:24:11

jikecyatmcn 发表于 2014-5-18 15:57 static/image/common/back.gif
分了刚进坛子不知道那种方式的贴代码

在菜單上選<>, 再貼上程式就可以了.

jikecyatmcn 发表于 2014-5-19 18:04:53

Super169 发表于 2014-5-18 22:22 static/image/common/back.gif
從你的程式看來, DHT11.read(DHT11PIN) 的結果可能只是一個 return code, 顯示讀取時是否有錯誤.
你顯示 ...

对啊对啊确实那句话是一个是switch语句输出错误用的,但是没这句也不显示温度。。。我也不懂。。

Super169 发表于 2014-5-19 19:43:49

jikecyatmcn 发表于 2014-5-19 18:04 static/image/common/back.gif
对啊对啊确实那句话是一个是switch语句输出错误用的,但是没这句也不显示温度。。。我也不懂。。

這句是經庫的函数去讀取 DHT11 上的數值, 然後放到內存中, 之後你才可以用 DHT11.temperature 及 DHT11.humidity 取得 溫度和濕度的值.

504835618 发表于 2014-5-20 07:59:27

本帖最后由 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:06:00

本帖最后由 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);
}

电子爱好者 发表于 2014-5-20 13:50:58

这个好!顶一下{:soso_e179:}

电子爱好者 发表于 2014-5-20 13:52:34

要是添加上中文就更好咯!
页: [1] 2
查看完整版本: 研究三天u8g库文件,弄个很简单的温湿度显示