วันพฤหัสบดีที่ 12 มีนาคม พ.ศ. 2558

Arduino note 12/3/15

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องศา

ไม่มีความคิดเห็น:

แสดงความคิดเห็น