อยากจะถามว่าผมมีบอร์ด 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 วินาที
}
จะทำโปรเจค และทำระบบ เปิด-ปิด อัตโนมัติของถังขยะ
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 วินาที
}