#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <U8g2lib.h>
#include <string.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht( DHTPIN, DHTTYPE );
//Adafruit_SSD1306 const u8g2 = Adafruit_SSD1306( 128, 64, &Wire );
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2( U8G2_R0, /* reset=*/ U8X8_PIN_NONE );
void setup()
{
u8g2.begin();
u8g2.enableUTF8Print(); //啟用UTF8文字的功能
Serial.begin( 9600 );
dht.begin();
u8g2.setFont( u8g2_font_unifont_t_chinese1 ); //使用我們做好的字型
u8g2.setFont(u8g2_font_unifont_t_chinese1);
u8g2.setFontDirection(0);
u8g2.clearBuffer();
//u8g2.sendBuffer();
/*
u8g2.display();
delay( 500 );
u8g2.clearDisplay();
*/
}
float h;
float t;
char h_str[6];
char t_str[6];
#define xy( x ,y ) 8*(x), 16*(y)-4 // xy(,)
void loop()
{
h = dht.readHumidity();
t = dht.readTemperature();
if( isnan(h) || isnan(t) )
{
return;
}
Serial.println( F("\n") );
Serial.print( t );
Serial.print( F(" *C, ") );
dtostrf( t, 3, 1, t_str );
Serial.print( h );
Serial.print( F(" % ") );
dtostrf( h, 3, 1, h_str );
u8g2.firstPage();
do
{
u8g2.setCursor( 8*0, 16*1-2 ); u8g2.print( F("溼度:") );
u8g2.setCursor( xy(3,1) ); u8g2.print( F("4567890123456") );
u8g2.setCursor( 8*0, 16*2-2 ); u8g2.print( F("溫度:") );
u8g2.drawStr( 8*(13-strlen(t_str)), 16*2-4, t_str );
u8g2.drawStr( 8*14, 16*2-4, "*C" );
u8g2.setCursor( 8*0, 16*3-2 ); u8g2.print( F("溼度:") );
u8g2.drawStr( 8*(13-strlen(h_str)), 16*3-4, h_str );
u8g2.drawStr( 8*15, 16*3-4, "%" );
u8g2.setCursor( 8*0, 16*4-2 ); u8g2.print( F("溼度:") );
} while( u8g2.nextPage() );
delay( 1000 );
}