fork download
  1. #include <iostream>
  2. #include <thread>
  3. #include <chrono>
  4.  
  5. using namespace std;
  6.  
  7. // ฟังก์ชันตรวจสอบระยะห่าง (จำลองจาก Ultrasonic Sensor)
  8. int getDistance() {
  9. // ในตัวอย่างนี้ใช้ระยะห่างคงที่ (10 ซม.) สำหรับการทดสอบ
  10. return 10; // ระยะห่างที่กำหนด (ในเซนติเมตร)
  11. }
  12.  
  13. // ฟังก์ชันตรวจสอบโลหะหรือพลาสติก (จำลองจาก Proximity Sensor)
  14. bool isMetalDetected() {
  15. // สมมุติว่าเซ็นเซอร์ตรวจพบโลหะ
  16. return true; // ตรวจพบโลหะ (จะเป็น true ถ้าคือโลหะ, false ถ้าคือพลาสติก)
  17. }
  18.  
  19. void openCover() {
  20. cout << "เปิดฝาปิด (เครื่องตรวจพบระยะห่าง <= 10 ซม.)\n";
  21. this_thread::sleep_for(chrono::seconds(5)); // ค้างไว้ 5 วินาที
  22. cout << "ปิดฝาปิด\n";
  23. }
  24.  
  25. void rotateMotor(bool isMetal) {
  26. if (isMetal) {
  27. cout << "พบโลหะ, หมุนมอเตอร์ไปทางซ้าย\n";
  28. } else {
  29. cout << "พบพลาสติก, หมุนมอเตอร์ไปทางขวา\n";
  30. }
  31. }
  32.  
  33. int main() {
  34. while (true) {
  35. // ตรวจจับระยะห่าง
  36. int distance = getDistance();
  37. if (distance <= 10) {
  38. openCover(); // ถ้าระยะห่าง <= 10 ซม. เปิดฝาปิด
  39. }
  40.  
  41. // ตรวจจับโลหะหรือพลาสติก
  42. bool metalDetected = isMetalDetected();
  43. rotateMotor(metalDetected); // หมุนมอเตอร์ไปทางซ้ายหรือขวาตามชนิดของวัตถุ
  44.  
  45. // หน่วงเวลารอบถัดไป
  46. this_thread::sleep_for(chrono::seconds(1));
  47. }
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0.02s 26056KB
stdin
Standard input is empty
stdout
#include <iostream>
#include <thread>
#include <chrono>

using namespace std;

// ฟังก์ชันตรวจสอบระยะห่าง (จำลองจาก Ultrasonic Sensor)
int getDistance() {
    // ในตัวอย่างนี้ใช้ระยะห่างคงที่ (10 ซม.) สำหรับการทดสอบ
    return 10; // ระยะห่างที่กำหนด (ในเซนติเมตร)
}

// ฟังก์ชันตรวจสอบโลหะหรือพลาสติก (จำลองจาก Proximity Sensor)
bool isMetalDetected() {
    // สมมุติว่าเซ็นเซอร์ตรวจพบโลหะ
    return true; // ตรวจพบโลหะ (จะเป็น true ถ้าคือโลหะ, false ถ้าคือพลาสติก)
}

void openCover() {
    cout << "เปิดฝาปิด (เครื่องตรวจพบระยะห่าง <= 10 ซม.)\n";
    this_thread::sleep_for(chrono::seconds(5)); // ค้างไว้ 5 วินาที
    cout << "ปิดฝาปิด\n";
}

void rotateMotor(bool isMetal) {
    if (isMetal) {
        cout << "พบโลหะ, หมุนมอเตอร์ไปทางซ้าย\n";
    } else {
        cout << "พบพลาสติก, หมุนมอเตอร์ไปทางขวา\n";
    }
}

int main() {
    while (true) {
        // ตรวจจับระยะห่าง
        int distance = getDistance();
        if (distance <= 10) {
            openCover(); // ถ้าระยะห่าง <= 10 ซม. เปิดฝาปิด
        }

        // ตรวจจับโลหะหรือพลาสติก
        bool metalDetected = isMetalDetected();
        rotateMotor(metalDetected); // หมุนมอเตอร์ไปทางซ้ายหรือขวาตามชนิดของวัตถุ

        // หน่วงเวลารอบถัดไป
        this_thread::sleep_for(chrono::seconds(1));
    }

    return 0;
}