#include "DHT.h" // Memasukkan library DHT yang diperlukan
#define DHTPIN 2 // Mendefinisikan pin yang digunakan untuk sensor DHT
#define DHTTYPE DHT22 // Mendefinisikan tipe sensor DHT yang digunakan DHT22
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi objek DHT untuk berkomunikasi dengan sensor
const int segment[] = {6, 7, 8, 9, 10, 11, 12, 13}; // Mendefinisikan pin-pins untuk tujuh segmen katoda
const int digit[] = {3, 4, 5}; // Mendefinisikan pin-pins untuk 3 digit
float suhu = 0.0; // Variabel untuk menyimpan nilai suhu dalam derajat Celsius
void setup() {
dht.begin(); // Inisialisasi sensor DHT
// Inisialisasi komunikasi serial
Serial.begin(9600);
for (int i = 0; i < 8; i++) {
pinMode(segment[i], OUTPUT); // Mengatur pin segmen sebagai OUTPUT
}
for (int i = 0; i < 3; i++) {
pinMode(digit[i], OUTPUT); // Mengatur pin digit sebagai OUTPUT
}
}
void loop() {
suhu = dht.readTemperature(); // Membaca suhu dari sensor DHT 22
// Menampilkan suhu pada Serial Monitor
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println("°C");
tampilan(suhu * 10); // Memanggil fungsi tampilan() untuk menampilkan suhu di tampilan tujuh segmen 3 digit katoda
}
void hidup(int nilai) { // Fungsi untuk mengatur segmen-segmen pada tampilan tujuh segmen katoda
const int pola[10][8] = { // Matriks pola (lampu) untuk digit dari 0 sampai 9
{1, 1, 1, 1, 1, 1, 0, 0}, // Pola untuk angka 0
{0, 1, 1, 0, 0, 0, 0, 0}, // Pola untuk angka 1
{1, 1, 0, 1, 1, 0, 1, 1}, // Pola untuk angka 2
{1, 1, 1, 1, 0, 0, 1, 1}, // Pola untuk angka 3
{0, 1, 1, 0, 0, 1, 1, 1}, // Pola untuk angka 4
{1, 0, 1, 1, 0, 1, 1, 1}, // Pola untuk angka 5
{1, 0, 1, 1, 1, 1, 1, 1}, // Pola untuk angka 6
{1, 1, 1, 0, 0, 0, 0, 0}, // Pola untuk angka 7
{1, 1, 1, 1, 1, 1, 1, 1}, // Pola untuk angka 8
{1, 1, 1, 1, 0, 1, 1, 1} // Pola untuk angka 9
};
for (int i = 0; i < 8; i++) {
digitalWrite(segment[i], pola[nilai][i]); // Mengatur segmen-segmen sesuai dengan digit
}
digitalWrite(segment[7], 0); // Mengaktifkan titik desimal (jika ada)
}
void tampilan(int a) { // Fungsi untuk menampilkan suhu pada tampilan tujuh segmen katoda
hidup(a / 100); // Menampilkan digit pertama
digitalWrite(digit[0], 0); // Mengaktifkan digit pertama
digitalWrite(digit[1], 1); // Menonaktifkan digit kedua
digitalWrite(digit[2], 1); // Menonaktifkan digit ketiga
digitalWrite(digit[0], 1); // Menonaktifkan digit pertama
delay(10);
hidup(a % 100 / 10); // Menampilkan digit kedua
digitalWrite(digit[0], 1); // Menonaktifkan digit pertama
digitalWrite(digit[1], 0); // Mengaktifkan digit kedua
digitalWrite(digit[2], 1); // Menonaktifkan digit ketiga
digitalWrite(segment[7], 1); // Mengaktifkan titik desimal
digitalWrite(digit[1], 1); // Menonaktifkan digit kedua
delay(10);
hidup(a % 10); // Menampilkan digit ketiga
digitalWrite(digit[0], 1); // Menonaktifkan digit pertama
digitalWrite(digit[1], 1); // Menonaktifkan digit kedua
digitalWrite(digit[2], 0); // Mengaktifkan digit ketiga
digitalWrite(digit[2], 1); // Menonaktifkan digit ketiga
delay(10);
}