#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN A0
#define DHTTYPE DHT22
#define LED 13
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const byte btn[] = {12, A3, A2, A1};
const byte buz[] = {11, 10, 0};
const byte seg[] = {2, 9, 6, 7, 8, 3, 4};
byte ledStates = 0;
byte n = 0;
bool b = false;
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.clear();
pinMode(LED, OUTPUT);
for (byte e : btn) pinMode(e, INPUT_PULLUP);
for (byte e : buz) pinMode(e, OUTPUT);
for (byte e : seg) {
pinMode(e, OUTPUT);
digitalWrite(e, HIGH);
}
lcd.setCursor(0, 0);
lcd.print("Nama: Widya");
lcd.setCursor(0, 1);
lcd.print("NIM: 21650095");
delay(1000);
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
n = (n + 1) % 10;
tampilAngka(n);
lcd.clear();
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("%");
if (b = !b) {
tone(buz[1], 700);
noTone(buz[0]);
} else {
tone(buz[0], 800);
noTone(buz[1]);
}
if (temperature > 30) {
digitalWrite(LED, HIGH);
tone(buz[0], 200);
} else {
digitalWrite(LED, LOW);
noTone(buz[0]);
}
delay(1000);
}
void tampilAngka(byte num) {
switch (num) {
case 1:
nyalakan("BC");
break;
case 2:
nyalakan("ABDEG");
break;
case 3:
nyalakan("ABCDG");
break;
case 4:
nyalakan("BCFG");
break;
case 5:
nyalakan("ACDFG");
break;
case 6:
nyalakan("ACDEFG");
break;
case 7:
nyalakan("ABC");
break;
case 8:
nyalakan("ABCDEFG");
break;
case 9:
nyalakan("ABCDFG");
break;
default:
nyalakan("ABCDEF");
break;
}
}
void nyalakan(String l) {
for (byte e : seg)
digitalWrite(e, HIGH);
for (char c : l)
digitalWrite(seg[convertToNumber(c)], LOW);
}
void matikan() {
for (byte e : seg) {
digitalWrite(e, HIGH);
}
}
int convertToNumber(char input) {
switch (input) {
case 'A': return 0;
case 'B': return 1;
case 'C': return 2;
case 'D': return 3;
case 'E': return 4;
case 'F': return 5;
default: return 6;
}
}