|
本帖最后由 galaxy 于 2017-12-2 14:23 编辑
//0022 可過
//http://arduino-er.blogspot.tw/2015/05/temperature-humidity-monitor-using.html
// 度 C 有完整顯示
#include "U8glib.h"
U8GLIB_PCD8544 u8g(3, 4, 7, 5, 6); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
#include <DHT22.h>
#define DHT22_PIN_1 10 //定義 DHT22 使用的腳位
#include <Wire.h>
#include <Adafruit_ADS1015.h> // ads1115 使用的庫, 同ads1015
Adafruit_ADS1115 ads(0x48);
Adafruit_ADS1115 ads1115;
float Volt0 = 0.0;
float Volt1 = 0.0;
float Volt2 = 0.0;
float Volt3 = 0.0;
float tempV0 = 0.0;
float tempV1 = 0.0;
float tempV2 = 0.0;
float tempV3 = 0.0;
float Vr31=50129; //分壓電阻 50K,實際用電表測量為 50.129K
float Vr32=10008; //分壓電阻 1K,際用四綫式電表測量為 1.0008K
//為提高準確度,電阻使用 25ppm 的電阻,還要再經電表測量實際阻值
float I2 = 0.0;
float tempI2 = 0.0;
DHT22 myDHT22_1(DHT22_PIN_1);
char str[10];
void setup() {
pinMode(2,OUTPUT); // D2 設為輸出 (蜂鳴器)
ads1115.begin();
}
void loop(void) {
int16_t adc0, adc1, adc2, adc3;
float Volt0, Volt1, Volt2, Volt3;
{ adc3 = ads1115.readADC_SingleEnded(3);
Volt3 = (adc3 * 0.1875)/1000;}
{tempV3 = Volt3 ;
Volt3 = tempV3 / (Vr32/(Vr31+Vr32));}
{ adc2 = ads1115.readADC_SingleEnded(2);
Volt2 = (adc2 * 0.1875)/1000;}
{tempI2 = Volt2;
tempI2 = (adc2 * 0.1875)/1000;
I2 = tempI2 / 0.01626 ;} // 使用的分流器為0.015Ω ±1% ±20ppm/℃ 5W 的電阻
DHT22_ERROR_t errorCode;
errorCode = myDHT22_1.readData();
float h = (myDHT22_1.getHumidity()); //讀取濕度
float t = (myDHT22_1.getTemperatureC()); //讀取溫度
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB14); //設定字型 14 Pixel Hifh
//字型設定可在此網址找/ https://github.com/olikraus/u8glib/wiki/fontsize
//判斷式要放在 本大括號內才會在屏幕上顯示
u8g.drawStr(0, 14, "V="); // (橫點,縱點, "V=");
u8g.drawStr(26, 14, dtostrf(Volt3, 5, 3, str));// (橫點,縱點,讀取變數(電壓,5,2,變數);
u8g.drawStr(0, 30, "A="); // (橫點,縱點, "I=");
u8g.drawStr(26, 30, dtostrf(I2, 5, 3, str));// (橫點,縱點,讀取變數(電壓,5,2,變數);
u8g.setFont(u8g_font_helvR08); //設定字型 8 Pixel Hifh
u8g.drawStr( 0, 39, "T="); // (橫點,縱點, "T=");
u8g.drawStr(10, 39, dtostrf(t, 5, 1, str));// (橫點,縱點,讀取變數(溫度,5,2,變數);
u8g.drawStr(37, 39, "\260C"); // (橫點,縱點, "\260C");
//u8g.drawStr( 0, 48, "H="); // (橫點,縱點, "H=");
//u8g.drawStr(13, 48, dtostrf(h, 5, 1, str));//(橫點,縱點,讀取變數(濕,5,2,變數);
//u8g.drawStr(40, 48, "%"); // (橫點,縱點, "%");
if (t>=25)
{digitalWrite(2,HIGH);
u8g.drawStr(52, 39, "fan on");}
if (t<=24.9)
{digitalWrite(2,LOW);
u8g.drawStr(52, 39, "fan off");}
} while( u8g.nextPage() );
}
想要做個可調電源供應器的電壓,電流監視的~一直沒時間搞,只先完成這個
分壓電阻 50K 及 1 K
DHT22 接到 D10 接口
供電方式請另外單獨供電,不要和待測端共電,
會量不準的 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|