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