#include <DHT.h>
#define DHTPIN 7
DHT dht(DHTPIN, DHT22);
int latchPin = 3;
int clockPin = 2;
int dataPin = 4;
byte number[10] = {
0b10000001, // 0
0b11110011, // 1
0b01001001, // 2
0b01100001, // 3
0b00110011, // 4
0b00100101, // 5
0b00000101, // 6
0b11110001, // 7
0b00000001, // 8
0b00100001 // 9
};
byte dot = 0b00111001;
byte minus = 0b01111111;
byte deactivate = 0b11111111;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
Serial.begin(9600); // For debugging
}
void loop() {
dht.begin();
for (int i = 0; i <= 99; i++) {
int suhu = dht.readTemperature();
serial();
if(suhu < 0){
int targetTens = ((suhu / 10) % 10) * -1;
int targetOnes = (suhu % 10) *-1;
byte secondDigit = number[targetTens];
byte firstDigit = number[targetOnes];
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dot); // Send dot
shiftOut(dataPin, clockPin, MSBFIRST, firstDigit); // Send ones digit
shiftOut(dataPin, clockPin, MSBFIRST, secondDigit); // Send tens digit
shiftOut(dataPin, clockPin,MSBFIRST,minus);
digitalWrite(latchPin, HIGH);
}else if(suhu > 0){
int targetTens = (suhu / 10) % 10;
int targetOnes = suhu % 10;
byte secondDigit = number[targetTens];
byte firstDigit = number[targetOnes];
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dot); // Send dot
shiftOut(dataPin, clockPin, MSBFIRST, firstDigit); // Send ones digit
shiftOut(dataPin, clockPin, MSBFIRST, secondDigit); // Send tens digit
shiftOut(dataPin,clockPin,MSBFIRST,deactivate);
digitalWrite(latchPin, HIGH);
}
}
}
void serial(){
int suhu = dht.readTemperature();
Serial.print("Temperature:" );
Serial.print(suhu);
Serial.println("\n");
delay(1000);
}