จะทำโปรเจค และทำระบบ เปิด-ปิด อัตโนมัติของถังขยะ

กระทู้คำถาม
อยากจะถามว่าผมมีบอร์ด esp8266 อยู่ แล้วก็มี servo motor sg90 กับ ultrasonic sensor สำหรับทำเปิด ปิด เวลามีคนเดินเข้าไปใกล้ (มีตัว DC-DC มาต่อไฟให้ servoแล้ว) แต่พอต่ออัปโหลดโค๊ดแล้ว มันวัดระยะไม่ได้ (ลองแยกมาเช็คแล้วไม่เสีย)ควรเปลี่ยนบอร์ดเป็น Arduino uno r3 มั้ยครับ เพราะรู้สึกว่ามันรวนๆ หรือโค๊ดมันผิด รบกวนด้วยครับ เพิ่งเริ่มหัด
code: Arduino ide

#include <Servo.h>
#include <NewPing.h>

#define TRIGGER_PIN  D1    // ขา Trigger ของเซ็นเซอร์
#define ECHO_PIN     D2    // ขา Echo ของเซ็นเซอร์
#define MAX_DISTANCE 100   // ระยะสูงสุดที่เซ็นเซอร์ตรวจจับได้ (100 เซนติเมตร)

#define SERVO_PIN    D3    // ขา PWM ที่ต่อกับ Servo Motor

Servo myServo;            // สร้างตัวแปร Servo

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);  // เริ่มการใช้งาน Ultrasonic Sensor

void setup() {
  Serial.begin(115200);

  myServo.attach(SERVO_PIN);  // เชื่อมต่อ Servo กับขา PWM
  myServo.write(0);           // กำหนดให้ Servo อยู่ในตำแหน่งปิดฝา (0 องศา)
  delay(1000);                // รอให้ Servo เคลื่อนที่ไปตำแหน่งที่กำหนด

  Serial.println("System Ready");
}

void loop() {
  int distance = sonar.ping_cm();  // อ่านค่าระยะห่างจาก Ultrasonic Sensor (หน่วยเป็นเซนติเมตร)

  // ตรวจสอบระยะห่างและเปิด/ปิดฝาถังตามระดับการเข้ามาของคน
  if (distance > 0 && distance <= MAX_DISTANCE) {
    if (distance <= 10) {
      // ถ้าระยะห่างน้อยกว่า 10 เซนติเมตร (หมายถึงคนเดินใกล้)
      Serial.println("Person is close. Opening lid.");
      myServo.write(90);  // เปิดฝาถัง (ตำแหน่ง 90 องศา)
    }
    else {
      // ถ้าระยะห่างมากกว่า 10 เซนติเมตร (หมายถึงคนห่างออกไป)
      Serial.println("Person is far. Closing lid.");
      myServo.write(0);   // ปิดฝาถัง (ตำแหน่ง 0 องศา)
    }
  } else {
    Serial.println("Out of range");
  }

  delay(500);  // อ่านค่าใหม่ทุกๆ 0.5 วินาที
}
แสดงความคิดเห็น
อ่านกระทู้อื่นที่พูดคุยเกี่ยวกับ  Arduino Internet of Things
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่