Arduino note 12/3/15
สิ่งที่ได้: -ศึกษาเกี่ยวกับการควบคุม Servo motorเกี่ยวกับ Position Control โดยก่อนที่เราจะใช้คำสั่งในการควบคุมServo motorได้เราต้องดึงข้อมูลคำสั่งจากlibrary มาก่อน => #include<Servo.h>
จากนั้นก็สร้างชื่อของอุปกรณืๅที่จะสั่งด้วย => servo ชื่อตัวที่จะสั่ง ; เช่น servo myservo;
และในส่วนของvoid setup() เราจะใช้คำสั่ง=> myservo.attrach(pin); ในการกำหนดช่องpinที่สายข้อมูลของServo motorต่ออยู่
ต่อมาในส่วนของคำสั่งหรือในส่วนvoid loop() เราสามารใช้คำสั่ง myservo.write(angle); ในการควบคุมangle(มุม) ที่้องการให้Servomotor หมุน/หันไปนั่นเอง
สิ่งที่อยากทำ ; ควบคุมมุมของServo motorด้วยLDR หรือ Potentiometer
Plan: ลำดับงาน: ดึงข้อมูลคำสั่งservo>สร้างตัวแปรที่ใช้เก็บค่าของมุมservo ,ตัแปรที่ใช้เก็บค่าจากsensor,ตัวแปรที่ใช้ในการทอน(หาร)ค่าของตัสแปรที่เก็บจากsensor>กำหนดความเร็วในการรับค่าของsensor>กำหนดตัวแปรรับค่าเข้ามา>จากนั้นนำค่าที่เก็บมาทอนกันก่อน>นำค่าที่หารกันเสร็จแล้วไปใส่ในวงเล็บในคำสั่งเปลี่ยนมุมของservo
อธิบายหลักการทำงานตามลำดับงาน
1.ดึงข้อมูลคำสั่งของservoด้วย #include<Servo.h> และสร้างชื่อมอเตอร์ที่จะสั่งมาด้วย servo myservo;
2.สร้างตัวแปร pos (position)แบบเก้บทศนิยมและกำหนดค่าให้เป็นศูนย์ ด้วยdouble pos=0; จากนั้นสร้างตัวแปรvaleในการเก้บค่าจากsensor ,สร้างตัวแปรdivisorไว้ใช้ทอนตัวแปรvalue โดยตัวแปรนี้ตอนกำหนดค่าต้องหารจำนวนที่มากที่สุดจากSensorแล้วมีค่าน้อยกว่าเท่ากับ180
3.กำหนดความเร้วในการรับค่าของSensorด้วย Serial.begin(9600);
4.กำหนดให้ตัวแปรvalueรับค่าจากSensor ด้วย Serial.println(value);
5.นำค่าตัวแปรvalueมาทอนด้วยตัวแปรdivisor ด้วยคำสั่ง value/=divisor;จากนั้นนำค่าของตัวแปรvalueไปใส่ในตัวแปรpos => pos=value;
6.ป้อนคำสั่งการหมุนองศาmotorดดยกำหนดตำแหน่งที่จะไปในตัวแปรvalue
ด้วยคำสั่ง myservo.write(pos);
7.test ดูว่า servo motorสามารถหมุนตามที่programingได้หรือไม่
ทดลองcoding ใน simulator
http://123d.circuits.io/circuits/642072-servo-motor-with-ldr-or-potentiometer
หลังจากทำการทดลองในsimulatorเสร้จสิ้นพบว่า
Servo motor สามารถทำงานและควบคุมangleโดยใช้LDR และ Potentiometer ได้ แต่พบปัญหาว่าเมื่อค่าที่รับจากsensorมีขนาดน้อยลงเรื่อยๆทำให้มุมของservoในช่วงสุดท้ายขยับเข้ามาไม่สุด(เล็กน้อยมากกๆ) จึงมำให้servo motorหมุนไม่ครบ180องศา
ไม่มีความคิดเห็น:
แสดงความคิดเห็น