fork download
  1. const int trigPin = 9; // พินส่งสัญญาณ (Trig)
  2. const int echoPin = 10; // พินรับสัญญาณ (Echo)
  3.  
  4. const int sensorPin = A0; // พินของเซนเซอร์วัสดุ
  5.  
  6. const int motorPlasticPin = 3; // พินสำหรับควบคุมมอเตอร์พลาสติก
  7. const int motorAluminumPin = 5; // พินสำหรับควบคุมมอเตอร์อลูมิเนียม
  8.  
  9. // ระยะในการเปิดระบบ (หน่วยเซนติเมตร)
  10. const int activationDistance = 20;
  11.  
  12. void setup() {
  13. // กำหนดพิน
  14. pinMode(trigPin, OUTPUT);
  15. pinMode(echoPin, INPUT);
  16. pinMode(sensorPin, INPUT);
  17. pinMode(motorPlasticPin, OUTPUT);
  18. pinMode(motorAluminumPin, OUTPUT);
  19.  
  20. // เปิดการสื่อสารซีเรียล
  21. Serial.begin(9600);
  22. }
  23.  
  24. void loop() {
  25. // อ่านค่าระยะทางจาก Ultrasonic Sensor
  26. int distance = measureDistance();
  27. Serial.print("Distance: ");
  28. Serial.println(distance);
  29.  
  30. // ถ้าระยะห่าง <= activationDistance ให้เริ่มระบบคัดแยก
  31. if (distance <= activationDistance) {
  32. Serial.println("System Activated");
  33.  
  34. int sensorValue = analogRead(sensorPin); // อ่านค่าจากเซนเซอร์วัสดุ
  35.  
  36. // ตรวจสอบวัสดุด้วยเซนเซอร์
  37. if (sensorValue > 800) {
  38. // วัสดุเป็นขวดพลาสติก
  39. digitalWrite(motorPlasticPin, HIGH);
  40. digitalWrite(motorAluminumPin, LOW);
  41. Serial.println("Plastic detected");
  42. }
  43. else if (sensorValue > 400 && sensorValue <= 800) {
  44. // วัสดุเป็นกระป๋องอลูมิเนียม
  45. digitalWrite(motorAluminumPin, HIGH);
  46. digitalWrite(motorPlasticPin, LOW);
  47. Serial.println("Aluminum detected");
  48. }
  49. else {
  50. // ไม่พบวัสดุ
  51. digitalWrite(motorPlasticPin, LOW);
  52. digitalWrite(motorAluminumPin, LOW);
  53. Serial.println("No material detected");
  54. }
  55. }
  56. else {
  57. // ระยะห่างมากกว่า activationDistance ปิดระบบ
  58. digitalWrite(motorPlasticPin, LOW);
  59. digitalWrite(motorAluminumPin, LOW);
  60. Serial.println("System Deactivated");
  61. }
  62.  
  63. delay(500); // หน่วงเวลาสำหรับรอบถัดไป
  64. }
  65.  
  66. // ฟังก์ชันวัดระยะทางด้วย Ultrasonic Sensor
  67. int measureDistance() {
  68. digitalWrite(trigPin, LOW); // เคลียร์สัญญาณก่อน
  69. delayMicroseconds(2);
  70. digitalWrite(trigPin, HIGH); // ส่งสัญญาณ Trig
  71. delayMicroseconds(10);
  72. digitalWrite(trigPin, LOW);
  73.  
  74. // คำนวณระยะเวลาและระยะทาง
  75. long duration = pulseIn(echoPin, HIGH);
  76. int distance = duration * 0.034 / 2; // แปลงเป็นเซนติเมตร
  77. return distance;
  78. }
  79.  
  80. print("a","b!")
  81.  
Success #stdin #stdout 0.02s 26156KB
stdin
Standard input is empty
stdout
const int trigPin = 9;  // พินส่งสัญญาณ (Trig)
const int echoPin = 10; // พินรับสัญญาณ (Echo)

const int sensorPin = A0;  // พินของเซนเซอร์วัสดุ

const int motorPlasticPin = 3;  // พินสำหรับควบคุมมอเตอร์พลาสติก
const int motorAluminumPin = 5; // พินสำหรับควบคุมมอเตอร์อลูมิเนียม

// ระยะในการเปิดระบบ (หน่วยเซนติเมตร)
const int activationDistance = 20;

void setup() {
  // กำหนดพิน
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(sensorPin, INPUT);
  pinMode(motorPlasticPin, OUTPUT);
  pinMode(motorAluminumPin, OUTPUT);

  // เปิดการสื่อสารซีเรียล
  Serial.begin(9600);
}

void loop() {
  // อ่านค่าระยะทางจาก Ultrasonic Sensor
  int distance = measureDistance();
  Serial.print("Distance: ");
  Serial.println(distance);

  // ถ้าระยะห่าง <= activationDistance ให้เริ่มระบบคัดแยก
  if (distance <= activationDistance) {
    Serial.println("System Activated");

    int sensorValue = analogRead(sensorPin); // อ่านค่าจากเซนเซอร์วัสดุ

    // ตรวจสอบวัสดุด้วยเซนเซอร์
    if (sensorValue > 800) {
      // วัสดุเป็นขวดพลาสติก
      digitalWrite(motorPlasticPin, HIGH);
      digitalWrite(motorAluminumPin, LOW);
      Serial.println("Plastic detected");
    } 
    else if (sensorValue > 400 && sensorValue <= 800) {
      // วัสดุเป็นกระป๋องอลูมิเนียม
      digitalWrite(motorAluminumPin, HIGH);
      digitalWrite(motorPlasticPin, LOW);
      Serial.println("Aluminum detected");
    } 
    else {
      // ไม่พบวัสดุ
      digitalWrite(motorPlasticPin, LOW);
      digitalWrite(motorAluminumPin, LOW);
      Serial.println("No material detected");
    }
  } 
  else {
    // ระยะห่างมากกว่า activationDistance ปิดระบบ
    digitalWrite(motorPlasticPin, LOW);
    digitalWrite(motorAluminumPin, LOW);
    Serial.println("System Deactivated");
  }

  delay(500); // หน่วงเวลาสำหรับรอบถัดไป
}

// ฟังก์ชันวัดระยะทางด้วย Ultrasonic Sensor
int measureDistance() {
  digitalWrite(trigPin, LOW);  // เคลียร์สัญญาณก่อน
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); // ส่งสัญญาณ Trig
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // คำนวณระยะเวลาและระยะทาง
  long duration = pulseIn(echoPin, HIGH);
  int distance = duration * 0.034 / 2; // แปลงเป็นเซนติเมตร
  return distance;
}

print("a","b!")