#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSA8Y2hyb25vPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4leC4o+C4p+C4iOC4quC4reC4muC4o+C4sOC4ouC4sOC4q+C5iOC4suC4hyAo4LiI4Liz4Lil4Lit4LiH4LiI4Liy4LiBIFVsdHJhc29uaWMgU2Vuc29yKQppbnQgZ2V0RGlzdGFuY2UoKSB7CiAgICAvLyDguYPguJnguJXguLHguKfguK3guKLguYjguLLguIfguJnguLXguYnguYPguIrguYnguKPguLDguKLguLDguKvguYjguLLguIfguITguIfguJfguLXguYggKDEwIOC4i+C4oS4pIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4l+C4lOC4quC4reC4mgogICAgcmV0dXJuIDEwOyAvLyDguKPguLDguKLguLDguKvguYjguLLguIfguJfguLXguYjguIHguLPguKvguJnguJQgKOC5g+C4meC5gOC4i+C4meC4leC4tOC5gOC4oeC4leC4oykKfQoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LmC4Lil4Lir4Liw4Lir4Lij4Li34Lit4Lie4Lil4Liy4Liq4LiV4Li04LiBICjguIjguLPguKXguK3guIfguIjguLLguIEgUHJveGltaXR5IFNlbnNvcikKYm9vbCBpc01ldGFsRGV0ZWN0ZWQoKSB7CiAgICAvLyDguKrguKHguKHguLjguJXguLTguKfguYjguLLguYDguIvguYfguJnguYDguIvguK3guKPguYzguJXguKPguKfguIjguJ7guJrguYLguKXguKvguLAKICAgIHJldHVybiB0cnVlOyAvLyDguJXguKPguKfguIjguJ7guJrguYLguKXguKvguLAgKOC4iOC4sOC5gOC4m+C5h+C4mSB0cnVlIOC4luC5ieC4suC4hOC4t+C4reC5guC4peC4q+C4sCwgZmFsc2Ug4LiW4LmJ4Liy4LiE4Li34Lit4Lie4Lil4Liy4Liq4LiV4Li04LiBKQp9Cgp2b2lkIG9wZW5Db3ZlcigpIHsKICAgIGNvdXQgPDwgIuC5gOC4m+C4tOC4lOC4neC4suC4m+C4tOC4lCAo4LmA4LiE4Lij4Li34LmI4Lit4LiH4LiV4Lij4Lin4LiI4Lie4Lia4Lij4Liw4Lii4Liw4Lir4LmI4Liy4LiHIDw9IDEwIOC4i+C4oS4pXG4iOwogICAgdGhpc190aHJlYWQ6OnNsZWVwX2ZvcihjaHJvbm86OnNlY29uZHMoNSkpOyAvLyDguITguYnguLLguIfguYTguKfguYkgNSDguKfguLTguJnguLLguJfguLUKICAgIGNvdXQgPDwgIuC4m+C4tOC4lOC4neC4suC4m+C4tOC4lFxuIjsKfQoKdm9pZCByb3RhdGVNb3Rvcihib29sIGlzTWV0YWwpIHsKICAgIGlmIChpc01ldGFsKSB7CiAgICAgICAgY291dCA8PCAi4Lie4Lia4LmC4Lil4Lir4LiwLCDguKvguKHguLjguJnguKHguK3guYDguJXguK3guKPguYzguYTguJvguJfguLLguIfguIvguYnguLLguKJcbiI7CiAgICB9IGVsc2UgewogICAgICAgIGNvdXQgPDwgIuC4nuC4muC4nuC4peC4suC4quC4leC4tOC4gSwg4Lir4Lih4Li44LiZ4Lih4Lit4LmA4LiV4Lit4Lij4LmM4LmE4Lib4LiX4Liy4LiH4LiC4Lin4LiyXG4iOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgLy8g4LiV4Lij4Lin4LiI4LiI4Lix4Lia4Lij4Liw4Lii4Liw4Lir4LmI4Liy4LiHCiAgICAgICAgaW50IGRpc3RhbmNlID0gZ2V0RGlzdGFuY2UoKTsKICAgICAgICBpZiAoZGlzdGFuY2UgPD0gMTApIHsKICAgICAgICAgICAgb3BlbkNvdmVyKCk7IC8vIOC4luC5ieC4suC4o+C4sOC4ouC4sOC4q+C5iOC4suC4hyA8PSAxMCDguIvguKEuIOC5gOC4m+C4tOC4lOC4neC4suC4m+C4tOC4lAogICAgICAgIH0KCiAgICAgICAgLy8g4LiV4Lij4Lin4LiI4LiI4Lix4Lia4LmC4Lil4Lir4Liw4Lir4Lij4Li34Lit4Lie4Lil4Liy4Liq4LiV4Li04LiBCiAgICAgICAgYm9vbCBtZXRhbERldGVjdGVkID0gaXNNZXRhbERldGVjdGVkKCk7CiAgICAgICAgcm90YXRlTW90b3IobWV0YWxEZXRlY3RlZCk7IC8vIOC4q+C4oeC4uOC4meC4oeC4reC5gOC4leC4reC4o+C5jOC5hOC4m+C4l+C4suC4h+C4i+C5ieC4suC4ouC4q+C4o+C4t+C4reC4guC4p+C4suC4leC4suC4oeC4iuC4meC4tOC4lOC4guC4reC4h+C4p+C4seC4leC4luC4uAoKICAgICAgICAvLyDguKvguJnguYjguKfguIfguYDguKfguKXguLLguKPguK3guJrguJbguLHguJTguYTguJsKICAgICAgICB0aGlzX3RocmVhZDo6c2xlZXBfZm9yKGNocm9ubzo6c2Vjb25kcygxKSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K