1306oled 有些汉字不显示
温度的温出不来 请问下是怎么回事?//https://pan.baidu.com/s/1nlEqX685XKrC5Z3T4nMGag 提取码:sn42
//可用 温度偏高
#include <dht11.h> //引用dht11库文件,使得下面可以调用相关参数
#define DHT11PIN 2 //定义温湿度针脚号为2号引脚
dht11 DHT11; //实例化一个对象
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
void setup() {
Serial.begin(9600); //设置波特率参数
pinMode(DHT11PIN, OUTPUT); //定义输出口
pinMode(9, OUTPUT);
digitalWrite(9, 0);// default output in I2C mode for the SSD1306 test shield: set the i2c adr to 0
u8g2.enableUTF8Print();//必须否则中文不显示。
u8g2.begin();
}
void loop() { //循环
int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
int tem = (float)DHT11.temperature; //将温度值赋值给tem
int hum = (float)DHT11.humidity; //将湿度值赋给hum
Serial.print("Tempeature:"); //打印出Tempeature:
Serial.println(tem); //打印温度结果
Serial.print("Humidity:"); //打印出Humidity:
Serial.print(hum); //打印出湿度结果
Serial.println("%"); //打印出%
Serial.println();
delay(1000); //延时一段时间
u8g2.setFont(u8g2_font_unifont_t_chinese1);
u8g2.setFontDirection(0);
u8g2.clearBuffer();
u8g2.setCursor(0, 15);
u8g2.print("当前温度:");
u8g2.print(tem);
u8g2.print("℃");
u8g2.setCursor(0, 35);
u8g2.print("湿度:");
u8g2.print(hum);
u8g2.print("%");
u8g2.sendBuffer();
delay(1000);
}
你是用的显示屏自带字库???u8g2显示汉字不是软字库把? jh800215 发表于 2020-2-13 18:01
你是用的显示屏自带字库???u8g2显示汉字不是软字库把?
不知道诶 crtarduinotrc 发表于 2020-2-13 21:00
不知道诶
你购买显示屏的介绍发上来看看 jh800215 发表于 2020-2-13 21:22
你购买显示屏的介绍发上来看看
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.5a3c2e8dsYt0mu&id=545473426260&_u=eahbb0b7044
买的时候是蓝色的 系统字库不全 你的这块OLED只带少量的汉字,不显示的汉字必须自建。 U8G2 支持汉字时,有不同大小的字库版本。
小的字库省 FLASH,但是字不全;大的字库字全,但是 FLASH 动不动就上百 KB.
目测是 LZ 用了小版本的汉字字库,换个字体有望解决(但是 FLASH 可能不够用) U8g2的中文字是不全的,缺字正常 只显示几个字,可以用取字模然后图形显示。
如果想显示更多的文字 ,最好自己添加字库。只是初次比较麻烦,不过掌握之后,显示更多的字时就方便了。试了添加字库温、湿、:和 °
页:
[1]
2