fork download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <thread>
  5. #include <chrono>
  6.  
  7. // คลาสจำลอง DHT
  8. class MockDHT {
  9. public:
  10. void setup(int pin) {
  11. // จำลองการตั้งค่าพิน (ไม่ต้องทำอะไรจริง)
  12. }
  13.  
  14. float getHumidity() {
  15. return generateRandomValue(30.0, 70.0); // สุ่มค่าความชื้นระหว่าง 30% - 70%
  16. }
  17.  
  18. float getTemperature() {
  19. return generateRandomValue(20.0, 35.0); // สุ่มค่าอุณหภูมิระหว่าง 20°C - 35°C
  20. }
  21.  
  22. const char* getStatusString() {
  23. return "OK"; // สถานะ "OK" เสมอ
  24. }
  25.  
  26. float toFahrenheit(float tempC) {
  27. return tempC * 9.0 / 5.0 + 32; // แปลงเซลเซียสเป็นฟาเรนไฮต์
  28. }
  29.  
  30. int getMinimumSamplingPeriod() {
  31. return 2000; // ระยะเวลาตัวอย่างขั้นต่ำ 2 วินาที
  32. }
  33.  
  34. private:
  35. float generateRandomValue(float min, float max) {
  36. return min + static_cast<float>(rand()) / (static_cast<float>(RAND_MAX / (max - min)));
  37. }
  38. };
  39.  
  40. MockDHT dht; // สร้างออบเจ็กต์จำลอง DHT
  41.  
  42. void setup() {
  43. std::cout << "Status\tHumidity (%)\tTemperature (C)\tTemperature (F)\n";
  44. dht.setup(2); // ตั้งค่าพินจำลอง
  45. }
  46.  
  47. void loop() {
  48. // ดีเลย์เวลาเหมือนการอ่านค่าจากเซ็นเซอร์จริง
  49. std::this_thread::sleep_for(std::chrono::milliseconds(dht.getMinimumSamplingPeriod()));
  50.  
  51. // อ่านค่าจำลอง
  52. float humidity = dht.getHumidity();
  53. float temperature = dht.getTemperature();
  54.  
  55. // แสดงค่าบนหน้าจอ
  56. std::cout << dht.getStatusString() << "\t";
  57. std::cout << humidity << "\t\t";
  58. std::cout << temperature << "\t\t";
  59. std::cout << dht.toFahrenheit(temperature) << "\n";
  60. }
  61.  
  62. int main() {
  63. srand(static_cast<unsigned>(time(0))); // ตั้งค่า seed สำหรับสุ่มตัวเลข
  64. setup();
  65.  
  66. while (true) {
  67. loop();
  68. }
  69.  
  70. return 0;
  71. }
  72.  
Success #stdin #stdout 0.03s 25920KB
stdin
Standard input is empty
stdout
#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;
}