极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 42486|回复: 26

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

[复制链接]
发表于 2014-5-18 13:36:34 | 显示全部楼层 |阅读模式
u8g的google code(好像是wiki我也不懂)全英文 ,怎么在屏幕显示东西我都不知道,想的头疼,最后慢慢摸索print就可以。弄点成果出来分享下。屏幕是12864,传感器是dht11,屏幕最下面是随机的画方块。。。。。很小白

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-5-18 14:26:33 | 显示全部楼层
分享下程序!!
回复 支持 反对

使用道具 举报

发表于 2014-5-18 15:48:32 | 显示全部楼层
我自己翻译了一半u8glib说明文件……配合机翻翻译的……
回复 支持 反对

使用道具 举报

 楼主| 发表于 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);
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 15:52:08 | 显示全部楼层
int chk = DHT11.read(DHT11PIN);这句我能看懂大概意思,但是不知道用在哪里了……而且美哦这句不显示温湿度。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 15:52:43 | 显示全部楼层
interrgned 发表于 2014-5-18 15:48
我自己翻译了一半u8glib说明文件……配合机翻翻译的……

{:3_41:}高手
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 15:57:01 | 显示全部楼层
504835618 发表于 2014-5-18 14:26
分享下程序!!

分了  刚进坛子不知道那种方式的贴代码
回复 支持 反对

使用道具 举报

发表于 2014-5-18 22:22:19 | 显示全部楼层
jikecyatmcn 发表于 2014-5-18 15:52
int chk = DHT11.read(DHT11PIN);这句我能看懂大概意思,但是不知道用在哪里了……而且美哦这句不显示温湿度 ...

從你的程式看來, DHT11.read(DHT11PIN) 的結果可能只是一個 return code, 顯示讀取時是否有錯誤.
你顯示溫度的地方在於:
u8g.print((float)DHT11.temperature, 1);
而顯示濕度的地方在於:
u8g.print((float)DHT11.humidity, 1);
回复 支持 反对

使用道具 举报

发表于 2014-5-18 22:24:11 | 显示全部楼层
jikecyatmcn 发表于 2014-5-18 15:57
分了  刚进坛子不知道那种方式的贴代码

在菜單上選  <>, 再貼上程式就可以了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-19 18:04:53 | 显示全部楼层
Super169 发表于 2014-5-18 22:22
從你的程式看來, DHT11.read(DHT11PIN) 的結果可能只是一個 return code, 顯示讀取時是否有錯誤.
你顯示 ...

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

使用道具 举报

发表于 2014-5-19 19:43:49 | 显示全部楼层
jikecyatmcn 发表于 2014-5-19 18:04
对啊对啊  确实那句话是一个是switch语句输出错误用的,但是没这句也不显示温度。。。我也不懂。。

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

使用道具 举报

发表于 2014-5-20 07:59:27 | 显示全部楼层
本帖最后由 504835618 于 2014-5-20 08:06 编辑
jikecyatmcn 发表于 2014-5-18 15:51
#include

#include


请问屏的D/C接ARDUINO哪里呢?我的屏是,VCC,GND,SCK,SDA,RST,D/C,应该怎么对应接到ARDUINO上;还有就是改u8glib哪个 文件可以自已定义接线。谢谢!!
回复 支持 反对

使用道具 举报

发表于 2014-5-20 08:06:00 | 显示全部楼层
本帖最后由 Be1ieve 于 2014-5-20 08:07 编辑

u8g绘图时为了避免内存不够用,有可能会把整个画面切割成小区块
因此在loop()中才会有下面这段:
u8g.firstPage();
do{ draw();} while(u8g.nextPage());
且要求在这段时间里面,必须要保持画面的内容是一致的,以免显示时出现问题

下面是我的code,看看就好

  1. #include <U8glib.h>
  2. #include "dht.h"

  3. U8GLIB_PCD8544 u8g(13, 11, 10, A0, A1); // U8GLIB_PCD8544(sck/sclk, mosi/sdin, ce/sce, d0/dc, reset)

  4. dht DHT11;
  5. #define DHT_PIN A2

  6. void drawScreen(){
  7.   drawTitle();
  8.   drawData();
  9. }

  10. void drawTitle(){
  11.   u8g.setFont(u8g_font_helvB08);
  12.   u8g.drawStr(0, 8, "TMP:");
  13.   u8g.drawStr(0, 34, "HMD:");
  14.   u8g.drawStr(68, 21, "'C");
  15.   u8g.drawStr(68, 47, "%H");
  16. }

  17. void drawData(){
  18.   u8g.setFont(u8g_font_gdb20);
  19.   u8g.setPrintPos(33,20);
  20.   u8g.print(DHT11.temperature,0);
  21.   u8g.setPrintPos(33,46);
  22.   u8g.print(DHT11.humidity,0);
  23. }

  24. void setup(){
  25. }

  26. void loop(){
  27.   int check = DHT11.read11(DHT_PIN);

  28.   // u8g loop
  29.   u8g.firstPage();  
  30.   do {
  31.     drawScreen();
  32.   } while( u8g.nextPage() );
  33.   
  34.   delay(1000);
  35. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2014-5-20 13:50:58 | 显示全部楼层
这个好!顶一下{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2014-5-20 13:52:34 | 显示全部楼层
要是添加上中文就更好咯!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 15:56 , Processed in 0.040338 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表