#include <iostream>
#include <cstdlib>
#include <ctime>
#include <thread>
#include <chrono>
// คลาสจำลอง DHT
class MockDHT {
public:
void setup(int pin) {
// จำลองการตั้งค่าพิน (ไม่ต้องทำอะไรจริง)
}
float getHumidity() {
return generateRandomValue(30.0, 70.0); // สุ่มค่าความชื้นระหว่าง 30% - 70%
}
float getTemperature() {
return generateRandomValue(20.0, 35.0); // สุ่มค่าอุณหภูมิระหว่าง 20°C - 35°C
}
const char* getStatusString() {
return "OK"; // สถานะ "OK" เสมอ
}
float toFahrenheit(float tempC) {
return tempC * 9.0 / 5.0 + 32; // แปลงเซลเซียสเป็นฟาเรนไฮต์
}
int getMinimumSamplingPeriod() {
return 2000; // ระยะเวลาตัวอย่างขั้นต่ำ 2 วินาที
}
private:
float generateRandomValue
(float
min, float
max) { return min + static_cast
<float
>(rand()) / (static_cast
<float
>(RAND_MAX
/ (max - min))); }
};
MockDHT dht; // สร้างออบเจ็กต์จำลอง DHT
void setup() {
std::cout << "Status\tHumidity (%)\tTemperature (C)\tTemperature (F)\n";
dht.setup(2); // ตั้งค่าพินจำลอง
}
void loop() {
// ดีเลย์เวลาเหมือนการอ่านค่าจากเซ็นเซอร์จริง
std::this_thread::sleep_for(std::chrono::milliseconds(dht.getMinimumSamplingPeriod()));
// อ่านค่าจำลอง
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
// แสดงค่าบนหน้าจอ
std::cout << dht.getStatusString() << "\t";
std::cout << humidity << "\t\t";
std::cout << temperature << "\t\t";
std::cout << dht.toFahrenheit(temperature) << "\n";
}
int main() {
srand(static_cast
<unsigned
>(time(0))); // ตั้งค่า seed สำหรับสุ่มตัวเลข setup();
while (true) {
loop();
}
return 0;
}