นางสาว กัญญารัตน์ สังขพันธ์ 1สทค.2 6031280023
นาย จารุเดช สังข์ประไพ 1สทค.2 6031280027
การต่อใช้งาน Servo Motor (SG90) กับ HC-SR04
อุปกรณ์
1. Servo Motor (SG90) 1 ตัว
2. HC-SR04 1 ตัว
3. บอร์ด Arduino Uno 1 บอร์ด
4. สายไฟผู้-ผู้
5. ใบพัดมอเตอร์ Single fan 1 ตัว
6. โปรโตบอร์ด 1 บอร์ด
7. กระดาษสำหรับใช้วัด
รูปวงจร
Download Frizing file ที่นี่
Code Program Arduino
#include <Servo.h> //Load Servo Library
int trigPin=13; //Sensor Trip pin connected to Arduino pin 13
int echoPin=11; //Sensor Echo pin connected to Arduino pin 11
int servoControlPin=6; //Servo control line is connected to pin 6
float pingTime; //time for ping to travel from sensor to target and return
float targetDistance; //Distance to Target in inches
float speedOfSound=776.5; //Speed of sound in miles per hour when temp is 77 degrees.
float servoAngle; //Variable for the value we want to set servo to.
Servo myPointer; //Create a servo object called myPointer
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(servoControlPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myPointer.attach(servoControlPin); //Tell arduino where the servo is attached.
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trigPin, LOW); //Set trigger pin low
delayMicroseconds(2000); //Let signal settle
digitalWrite(trigPin, HIGH); //Set trigPin high
delayMicroseconds(15); //Delay in high state
digitalWrite(trigPin, LOW); //ping has now been sent
delayMicroseconds(10); //Delay in low state
pingTime = pulseIn(echoPin, HIGH); //pingTime is presented in microceconds
pingTime=pingTime/1000000; //convert pingTime to seconds by dividing by 1000000 (microseconds in a second)
pingTime=pingTime/3600; //convert pingtime to hourse by dividing by 3600 (seconds in an hour)
targetDistance= speedOfSound * pingTime; //This will be in miles, since speed of sound was miles per hour
targetDistance=targetDistance/2; //Remember ping travels to target and back from target, so you must divide by 2 for actual target distance.
targetDistance= targetDistance*63360; //Convert miles to inches by multipling by 63360 (inches per mile)
Serial.print("The Distance to Target is: ");
Serial.print(targetDistance);
Serial.println(" cm");
Serial.print("The Distance to Target is: ");
Serial.print(targetDistance);
Serial.println(" inches");
servoAngle = (106./7.) * targetDistance + 37; //Calculate Servo Angle from targetDistance
myPointer.write(servoAngle); //write servoAngle to the servo
Serial.print("Angle ");
Serial.println(servoAngle);
delay(100); //delay tenth of a second to slow things down a little.
}
Download Arduino Code ที่นี่
อธิบายวงจร
เป็นการนำเอา Servo Motor (SG90) และ HC-SR04 และใช้ Ultrasonic ของ HC-SR04 เพื่อใช้จับระยะทางและให้ใบพัดของมอเตอร์หมุน ตามระยะที่ีกำหนดโดยใช้กระดาษในการวัดตัวเลขที่ใบพัดของ Servo Motor (SG90) จะชี้ไป โดย 1 ตัวเลข = 1 นิ้วใน Serial Monitor ซึ่ง Servo Motor สามารถ หมุนได้ 180 องศา ซึ่งจะได้ตั้งแต่ 0-7 นิ้ว โดยประมาณ
วิดีโอประกอบ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น