TMP: DHT11 溫度
HUM DHT11 溼I度
MOS YL-69 土壤
#include <U8glib.h>
#include <U8glib.h>
#include "dht.h"
#define DHT11_PIN A0
dht DHT;
const int sensorPin=A5;
int moist;
//創建一個u8g(LCD12864)物件
U8GLIB_ST7920_128X64_4X u8g(18, 16, 17);
//pctoLCD2002生成字模
const uint8_ad_bitmap[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0xF0,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,
0x00,0x00,0x1F,0x8F,0x1F,0x00,0x00,0x00,0x00,0x00,0x7F,0x06,
0x0F,0xC0,0x00,0x00,0x00,0x00,0xFE,0x06,0x07,0xE0,0x00,0x00,
0x00,0x01,0xFE,0x12,0x87,0xF0,0x00,0x00,0x00,0x03,0xFE,0x1B,
0xC7,0xF8,0x00,0x00,0x00,0x07,0xFE,0x3B,0xC7,0xFC,0x00,0x00,
0x00,0x0F,0xF2,0x1B,0x84,0x7C,0x00,0x00,0x00,0x0F,0xC3,0x0F,
0x8C,0x7E,0x00,0x00,0x00,0x1F,0xF9,0x8F,0xF9,0xCE,0x00,0x00,
0x00,0x1F,0x0E,0xFF,0xEF,0x1F,0x00,0x00,0x00,0x3F,0xC0,0x0F,
0xC8,0x27,0x00,0x00,0x00,0x3E,0x60,0x07,0x80,0x07,0x80,0x00,
0x00,0x3C,0x00,0x02,0x07,0xFF,0x80,0x00,0x00,0x7F,0xFE,0x02,
0x00,0x03,0x80,0x00,0x00,0x78,0x00,0x02,0x06,0x03,0x80,0x00,
0x00,0x7C,0x02,0x02,0x07,0xC3,0x80,0x00,0x00,0x74,0x3E,0xFF,
0xFE,0x7F,0x80,0x00,0x00,0x77,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
0x00,0x7F,0xFF,0xFF,0xFF,0xE0,0x80,0x00,0x00,0x70,0xFF,0xFF,
0xFF,0xE1,0x80,0x00,0x00,0x30,0xFF,0xFF,0xFF,0xE1,0x80,0x00,
0x00,0x38,0x7F,0xFF,0xFF,0xC1,0x80,0x00,0x00,0x38,0x7F,0xFF,
0xFF,0xC3,0x80,0x00,0x00,0x18,0x3F,0xFF,0xFF,0x83,0x00,0x00,
0x00,0x18,0x1F,0xFF,0xFF,0x83,0x00,0x00,0x00,0x0C,0x1F,0xFF,
0xFF,0x07,0x00,0x00,0x00,0x0C,0x0F,0xFF,0xFE,0x0E,0x80,0x00,
0x00,0x06,0x07,0xFF,0xFC,0x0D,0x80,0x00,0x00,0x06,0x03,0xFF,
0xF8,0x1F,0x80,0x00,0x00,0x03,0x00,0xFF,0xF0,0x3F,0xC0,0x00,
0x00,0x01,0x80,0x3F,0xC0,0x7F,0xF0,0x00,0x00,0x00,0xC0,0x00,
0x1F,0xFF,0xF0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x01,0xFF,0xFF,
0xFF,0xFF,0xC0,0x00,0x00,0x03,0xFC,0x1F,0xE1,0xFF,0x80,0x00,
0x00,0x07,0xFC,0x1F,0xE1,0xFE,0x00,0x00,0x00,0x0F,0xF8,0x0F,
0xE0,0xFC,0x00,0x00,0x00,0x1F,0xF8,0x0F,0xC0,0xF8,0x00,0x00,
0x00,0x3F,0xF0,0x03,0x00,0xF0,0x00,0x00,0x00,0x3F,0xF1,0xFF,
0xFE,0xF0,0x00,0x00,0x00,0x0F,0xF3,0x80,0x02,0xF0,0x00,0x00,
0x00,0x07,0xF2,0x00,0x02,0xF0,0x00,0x00,0x00,0x07,0xF2,0x00,
0x06,0xF0,0x00,0x00,0x00,0x06,0xF2,0x00,0x04,0xE0,0x00,0x00,
0x00,0x00,0x7B,0x00,0x0D,0xE0,0x00,0x00,0x00,0x00,0x7D,0x80,
0x1B,0xE0,0x00,0x00,0x00,0x10,0x7E,0xE0,0x33,0xE0,0x00,0x00,
0x00,0x00,0x7F,0x3F,0xEF,0xE0,0x00,0x00,0x00,0x00,0x7F,0xC0,
0x3F,0xE0,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xE0,0x00,0x00,
0x00,0x00,0x7F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x7F,0xFB,
0xFF,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFB,0xFF,0xE8,0x00,0x00,
0x00,0x00,0x03,0xEE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,
0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,
0x00,0x01,0x00,0x0B,0x00,0x10,0x00,0x00,0x00,0x00,0xF1,0xF0,
0xFF,0xC0,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//自定函數來檢測感測器是否正常
void checkData(int chk){
if(chk!=0){
//當chk為:-2時,dht11連接異常正常時,chk:0
u8g.setPrintPos(0,15);
u8g.print("Error Code: ");
u8g.setPrintPos(35,35);
u8g.print(chk);
u8g.drawStr(0, 55, "Read Data Error!");
}else{
drawScreen();
}
}
//自定函數用來列印螢幕
void drawScreen(){
drawTitle();
drawData();
u8g.setFont(u8g_font_timB10);
u8g.drawStr(10, 10, "Never Give up");
}
//自定函數用來列印溫度濕度標題
void drawTitle(){
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0, 30, "TMP:");
u8g.drawStr(0, 45, "HUM:");
u8g.drawStr(0, 60, "MOS:");
u8g.drawStr(78, 30, "C");
u8g.drawStr(78, 45, "%");
u8g.drawStr(78, 60, "%");
}
//自定函數用來列印資料
void drawData(){
float moist;
moist = analogRead(sensorPin);
//設置文本字體
u8g.setFont(u8g_font_unifont);
u8g.setPrintPos(30,30);
u8g.print(DHT.temperature);
u8g.setPrintPos(30,45);
u8g.print(DHT.humidity);
u8g.setPrintPos(30,60);
u8g.print(moist);
}
void setup(){
pinMode(sensorPin,INPUT);
u8g.setRot180();// rotate screen
u8g.setFontPosTop();
}
void loop(){
moist = analogRead(sensorPin);
//dht11埠讀取數據
int check = DHT.read11(DHT11_PIN);
// u8g loop
u8g.firstPage();
drawScreen();
do {
checkData(check);
u8g.drawBitmapP( 78, 3,8, 64, rook_bitmap);
} while( u8g.nextPage() );
delay(1000);
}