#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
//#include <WiFi.h>
//#include <SPI.h>
//#include <SD.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define DHTPIN 4 // Pin tempat sensor DHT22 terhubung
#define DHTTYPE DHT22 // Jenis sensor DHT (DHT22)
DHT dht(DHTPIN, DHTTYPE);
#define ONE_WIRE_BUS 5 // Pin tempat sensor DS18B20 terhubung
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int potentiometerPin = 34; // Pin yang terhubung ke potensiometer
int displayIndex = 0; // Indeks tampilan saat ini
char staticText[][20] = {"Slamet", "IP 192.168.12.3", "128 km"};
float dhtTemperature = 0.0;
float ds18b20Temperature = 0.0;
float humidity = 0.0;
// Menentukan alamat IP yang akan digunakan oleh akses poin
//IPAddress apIP(192, 168, 12, 3);
//WiFiServer server(80);
void setup() {
// Inisialisasi OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;) {
}
}
// Menunggu OLED selesai booting
delay(2000);
// Mengatur kecerahan OLED (opsional)
// Mengatur font teks (opsional)
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.clearDisplay();
// Mengatur pin potensiometer sebagai input
pinMode(potentiometerPin, INPUT);
// Inisialisasi sensor DHT
dht.begin();
// Inisialisasi sensor DS18B20
sensors.begin();
// Inisialisasi SD card
// if (!SD.begin()) {
// Serial.println(F("Gagal inisialisasi SD card."));
// return;
//}
// Mengatur WiFi sebagai AP (Access Point)
// WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); // IP Gateway dan Subnet
//WiFi.softAP("ESP32-WebServer", "password"); // Ganti dengan nama AP dan kata sandi yang sesuai
// Memulai server web
// server.begin();
// Menampilkan alamat IP server
// Serial.print("Alamat IP Akses Poin: ");
//Serial.println(WiFi.softAPIP());
}
void loop() {
// Membaca nilai potensiometer
int potValue = analogRead(potentiometerPin);
// Menghitung indeks tampilan berdasarkan nilai potensiometer
displayIndex = map(potValue, 0, 4095, 0, 5);
// Membaca data dari sensor DHT22
humidity = dht.readHumidity();
dhtTemperature = dht.readTemperature();
// Membaca data dari sensor DS18B20
sensors.requestTemperatures();
ds18b20Temperature = sensors.getTempCByIndex(0);
// Menampilkan data berdasarkan indeks tampilan saat ini
display.clearDisplay();
display.setCursor(0, 0);
switch (displayIndex) {
case 0:
display.print("Suhu DHT22: ");
display.print(dhtTemperature);
display.print(" C");
break;
case 1:
display.print("Suhu DS18B20: ");
display.print(ds18b20Temperature);
display.print(" C");
break;
case 2:
display.print("Kelembapan: ");
display.print(humidity);
display.print(" %");
break;
case 3:
display.print(staticText[0]);
break;
case 4:
display.print(staticText[1]);
break;
case 5:
display.print(staticText[2]);
break;
}
display.display();
// Penanganan permintaan HTTP
/*WiFiClient client = server.available();
if (client) {
Serial.println("Klien baru terhubung");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
// Baca dan kirim file HTML dari SD card
File webFile = SD.open("index.html");
if (webFile) {
while (webFile.available()) {
client.write(webFile.read());
}
webFile.close();
}
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
client.stop();
Serial.println("Klien terputus");
}*/
}