// Program Dasar Membaca Sensor DHT22
// Menampilkan suhu dan kelembaban ke Serial Monitor
#include "DHT.h" // Panggil library DHT
#define DHTPIN 8 // Pin data sensor DHT22 terhubung ke pin digital 2 Arduino
#define DHTTYPE DHT22 // Tentukan jenis sensor: DHT11 atau DHT22
DHT dht(DHTPIN, DHTTYPE); // Buat objek sensor DHT
// Program Dasar Menggunakan Sensor Ultrasonic HC-SR04
// Menampilkan hasil jarak di Serial Monitor
// Tentukan pin Trigger dan Echo
const int trigPin = 6; // Pin Trigger (mengirim sinyal ultrasonik)
const int echoPin = 7; // Pin Echo (menerima pantulan sinyal)
// Variabel untuk menyimpan durasi dan jarak
long duration;
int distance;
// Program Dasar Arduino LCD 20x4 I2C
// Menampilkan teks di LCD
#include <Wire.h> // Library komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library LCD I2C
// Buat objek LCD: alamat 0x27 umum dipakai untuk modul I2C
// Format: (alamat I2C, jumlah kolom, jumlah baris)
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// Inisialisasi komunikasi Serial
Serial.begin(9600);
Serial.println("Program Pembacaan DHT22");
// Inisialisasi sensor
dht.begin();
// Atur mode pin
pinMode(trigPin, OUTPUT); // Trigger sebagai OUTPUT
pinMode(echoPin, INPUT); // Echo sebagai INPUT
// Inisialisasi LCD
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan lampu belakang LCD
// Tampilkan pesan di baris-baris berbeda
lcd.setCursor(0, 0); // Kolom 0, Baris 0 (baris pertama)
lcd.print("Halo, Arduino!");
lcd.setCursor(0, 1); // Kolom 0, Baris 1 (baris kedua)
lcd.print("Ini LCD 20x4");
lcd.setCursor(0, 2); // Kolom 0, Baris 2 (baris ketiga)
lcd.print("Belajar I2C LCD");
lcd.setCursor(0, 3); // Kolom 0, Baris 3 (baris keempat)
lcd.print("SMK TKJ Keren!");
}
void loop() {
// Tunggu sebentar (DHT butuh jeda minimal 2 detik antar pembacaan)
delay(2000);
// Baca kelembaban (%)
float humidity = dht.readHumidity();
// Baca suhu dalam Celcius
float temperature = dht.readTemperature();
// Baca suhu dalam Fahrenheit (opsional)
float temperatureF = dht.readTemperature(true);
// Cek apakah pembacaan berhasil
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Gagal membaca data dari sensor DHT22!");
return; // Keluar dari loop jika error
}
// Tampilkan hasil ke Serial Monitor
Serial.print("Kelembaban: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" °C / ");
Serial.print(temperatureF);
Serial.println(" °F");
// Bersihkan pin Trigger (pastikan LOW dulu)
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Kirim sinyal ultrasonik selama 10 mikrodetik
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Baca waktu pantulan sinyal dari Echo
duration = pulseIn(echoPin, HIGH);
// Hitung jarak (kecepatan suara ~ 340 m/s atau 0.034 cm per mikrodetik)
distance = duration * 0.034 / 2;
// dibagi 2 karena sinyal pergi dan balik
// Tampilkan hasil di Serial Monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Delay agar lebih mudah dibaca
delay(500);
}