#include "DHT.h"
#define DHTTYPE DHT22
#define DHTPIN 9
DHT dht(DHTPIN, DHTTYPE);
const byte clockPin = 4;
const byte latchPin = 3;
const byte dataPin = 2;
const byte LED[10] = {
B01111110,
B00110000,
B01101101,
B01111001,
B00110011,
B01011011,
B01011111,
B01110000,
B01111111,
B01110011
};
const byte C = B01001110;
const byte H = B00110111;
const byte minus = B00000001;
void displaysymbols(byte firstsymbol , byte secondsymbol){
digitalWrite(8, LOW); //8是個位數
digitalWrite(9, HIGH); //9是十位數
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, firstsymbol);
digitalWrite(latchPin, HIGH);
delay(5);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, secondsymbol);
digitalWrite(latchPin, HIGH);
delay(5);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("DHT22 test!");
dht.begin();
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
float h = dht.readHumidity();
float t = dht.readTemperature();
unsigned long startmillis = 0;
unsigned long currentmillis = millis();
if(currentmillis - startmillis > 500){
displaysymbols(H, minus);
startmillis = currentmillis;
}
currentmillis = millis();
if(currentmillis - startmillis > 1000){
displaysymbols(LED[round(h) / 10 % 10], LED[round(h) % 10]);
startmillis = millis();
}
currentmillis = millis();
if(currentmillis - startmillis > 500){
displaysymbols(C, minus);
startmillis = currentmillis;
}
currentmillis = millis();
if(currentmillis - startmillis > 1000){
displaysymbols(LED[round(t) / 10 % 10], LED[round(t) % 10]);
startmillis = currentmillis;
}
currentmillis = millis();
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *c ");
delay(1000);
}