Search this site
Embedded Files
tklrobot.com
  • หน้าแรก
    • การติดตั้งโปรแกรม Arduino สำหรับเขียนคำสั่งหุ่นยนต์
  • ผู้จัดทำ
  • LookBas Nano
    • Datasheet
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5 การใช้จอ อ่านค่า sensor
    • LAB 6 การใช้จอ อ่านค่า MCP3008
    • LAB 7 การใช้งานมอเตอร์
    • LAB8 หุ่นยนต์เดินตามเส้น
    • LAB9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 สร้างเมนู
    • LAB12 สร้างฟังก์ชั่นให้หุ่นยนต์
    • LAB13 หุ่นยนต์ทำภารกิจ
    • LAB14 เช็คสี
    • LAB15 ภารกิจกลาง
  • Kruro Nano
    • Datasheet
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5การสั่งงานมอเตอร์
    • LAB 6 การใช้จอ อ่านค่า sensor
    • LAB7 หุ่นยนต์เดินตามเส้น
    • LAB 8 สร้างฟังก์ชั่นให้หุ่นยนต์
    • LAB 9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 หุ่นยนต์ทำภารกิจ
  • Nano Learning
    • Datasheet
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5 การสั่งงานมอเตอร์
    • LAB 6 การใช้จอ อ่านค่า sensor
    • LAB7 หุ่นยนต์เดินตามเส้น
    • LAB 8 สร้างฟังก์ชั่นให้หุ่นยนต์
    • LAB 9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 หุ่นยนต์ทำภารกิจ
  • TKL V.2 V.2.1
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5การสั่งงานมอเตอร์
    • LAB 6 การใช้จอ อ่านค่า sensor
    • LAB7 หุ่นยนต์เดินตามเส้น
    • LAB 9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 หุ่นยนต์ทำภารกิจ
tklrobot.com
  • หน้าแรก
    • การติดตั้งโปรแกรม Arduino สำหรับเขียนคำสั่งหุ่นยนต์
  • ผู้จัดทำ
  • LookBas Nano
    • Datasheet
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5 การใช้จอ อ่านค่า sensor
    • LAB 6 การใช้จอ อ่านค่า MCP3008
    • LAB 7 การใช้งานมอเตอร์
    • LAB8 หุ่นยนต์เดินตามเส้น
    • LAB9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 สร้างเมนู
    • LAB12 สร้างฟังก์ชั่นให้หุ่นยนต์
    • LAB13 หุ่นยนต์ทำภารกิจ
    • LAB14 เช็คสี
    • LAB15 ภารกิจกลาง
  • Kruro Nano
    • Datasheet
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5การสั่งงานมอเตอร์
    • LAB 6 การใช้จอ อ่านค่า sensor
    • LAB7 หุ่นยนต์เดินตามเส้น
    • LAB 8 สร้างฟังก์ชั่นให้หุ่นยนต์
    • LAB 9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 หุ่นยนต์ทำภารกิจ
  • Nano Learning
    • Datasheet
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5 การสั่งงานมอเตอร์
    • LAB 6 การใช้จอ อ่านค่า sensor
    • LAB7 หุ่นยนต์เดินตามเส้น
    • LAB 8 สร้างฟังก์ชั่นให้หุ่นยนต์
    • LAB 9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 หุ่นยนต์ทำภารกิจ
  • TKL V.2 V.2.1
    • LAB 1 Digital Output
    • LAB 2 Digital Input
    • LAB 3 AnalogRead
    • LAB 4 การใช้จอแสดงผล
    • LAB 5การสั่งงานมอเตอร์
    • LAB 6 การใช้จอ อ่านค่า sensor
    • LAB7 หุ่นยนต์เดินตามเส้น
    • LAB 9 ใช้งานเซอโวมอเตอร์
    • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
    • LAB11 หุ่นยนต์ทำภารกิจ
  • More
    • หน้าแรก
      • การติดตั้งโปรแกรม Arduino สำหรับเขียนคำสั่งหุ่นยนต์
    • ผู้จัดทำ
    • LookBas Nano
      • Datasheet
      • LAB 1 Digital Output
      • LAB 2 Digital Input
      • LAB 3 AnalogRead
      • LAB 4 การใช้จอแสดงผล
      • LAB 5 การใช้จอ อ่านค่า sensor
      • LAB 6 การใช้จอ อ่านค่า MCP3008
      • LAB 7 การใช้งานมอเตอร์
      • LAB8 หุ่นยนต์เดินตามเส้น
      • LAB9 ใช้งานเซอโวมอเตอร์
      • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
      • LAB11 สร้างเมนู
      • LAB12 สร้างฟังก์ชั่นให้หุ่นยนต์
      • LAB13 หุ่นยนต์ทำภารกิจ
      • LAB14 เช็คสี
      • LAB15 ภารกิจกลาง
    • Kruro Nano
      • Datasheet
      • LAB 1 Digital Output
      • LAB 2 Digital Input
      • LAB 3 AnalogRead
      • LAB 4 การใช้จอแสดงผล
      • LAB 5การสั่งงานมอเตอร์
      • LAB 6 การใช้จอ อ่านค่า sensor
      • LAB7 หุ่นยนต์เดินตามเส้น
      • LAB 8 สร้างฟังก์ชั่นให้หุ่นยนต์
      • LAB 9 ใช้งานเซอโวมอเตอร์
      • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
      • LAB11 หุ่นยนต์ทำภารกิจ
    • Nano Learning
      • Datasheet
      • LAB 1 Digital Output
      • LAB 2 Digital Input
      • LAB 3 AnalogRead
      • LAB 4 การใช้จอแสดงผล
      • LAB 5 การสั่งงานมอเตอร์
      • LAB 6 การใช้จอ อ่านค่า sensor
      • LAB7 หุ่นยนต์เดินตามเส้น
      • LAB 8 สร้างฟังก์ชั่นให้หุ่นยนต์
      • LAB 9 ใช้งานเซอโวมอเตอร์
      • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
      • LAB11 หุ่นยนต์ทำภารกิจ
    • TKL V.2 V.2.1
      • LAB 1 Digital Output
      • LAB 2 Digital Input
      • LAB 3 AnalogRead
      • LAB 4 การใช้จอแสดงผล
      • LAB 5การสั่งงานมอเตอร์
      • LAB 6 การใช้จอ อ่านค่า sensor
      • LAB7 หุ่นยนต์เดินตามเส้น
      • LAB 9 ใช้งานเซอโวมอเตอร์
      • LAB10 ฟังก์ชั่นหาตำแหน่งเซอโวมอเตอร์
      • LAB11 หุ่นยนต์ทำภารกิจ


Servo Motor


LAB 10 ฟังก์ชั่นหาตำแหน่ง Servo Motor


คำอธิบาย

เนื่องจาก Servo Motor จำเป็นต้องสั่งงานโดยกำหนดองศาการทำงานให้ ดังนั้นการหาตำแหน่งเซอโวที่ต้องการ จึงค่อนข้างจำเป็นมากในหุ่นยนต์ขนาดเล็ก

หลักการ

เราทราบแล้วว่าเซอโวมอเตอร์จะทำงานได้แค่ 0 - 180 ํ และ analog อ่านค่าได้ 0-1023 บทความนี้จะใช้หลักการอ่านค่า analog จาก0-1023 อ่านจากvr หรือ Knob ซึ่งต่ออยู่ Pin analog 7 มาแปลงเป็นค่า 0 - 180 คือองศาเซอโว พร้อมทั้งแสดงตำแหน่งองศาอยู่ที่หน้าจอ Oled

รูปแบบคำสั่ง


อุปกรณ์ประกอบ LAB

    1. บอร์ด LookBas Nano
    2. Servo Motor

ขั้นเตรียมการ

ตรวจสอบการเชื่อมต่อมอเตอร์ให้ถูกต้อง โดยมีวิธีเช็คดังนี้

1. เสียบสาย servo motor ใน Pin 7 และ 8

ข้อควรระวังในช่วงทดสอบ

การทดสอบต้องทดสอบตำแหน่งเซอโวทีละตัว เพื่อป้องกัน เซอโวเสียหาย

ตัวอย่าง Code

#include <SPI.h>
#include <Wire.h>
#include <Servo.h>     //เรียกใช้งาน library เซอโว
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define display_RESET 4  
Adafruit_SSD1306 display(display_RESET);

Servo sv1;                  // กำหนดชื่อเซอโวตัวที่ 1 ว่า sv1  
Servo sv2;                 // กำหนดชื่อเซอโวตัวที่ 2 ว่า sv2  
const int buttonPin = 2;  //ประกาศตัวแปร  buttonPin  แทน Pin ของปุ่มกด ซึ่งต่อไว้กับ D2


void setup() {
  sv1.attach(7);         //กำหนดขา Servo ตัวที่ 1  ตัวบีบ เป็น Pin 7
  sv2.attach(8);        //กำหนดขา Servo ตัวที่ 2  ตัวบีบ เป็น Pin 8
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)

}

void loop(){
int sw = digitalRead(buttonPin);
if (sw == 1){
  while(1) {
 int vr = analogRead(A7);  // กำหนดตัวแปรจำนวนเต็มอ่านค่าอนาล็อกที่พอร์ต 7
  int nob = map(vr, 0, 1023, 0, 180); // ทำการ map อัตราส่วนจากสัญญาณ analog 0-1023 เป็น 0-180
  display.clearDisplay();    // เคลียร์หน้าจอ display
  display.setTextColor(WHITE, BLACK);  //สีอักษรเป็นสีขาว ,พื้นหลังดำ
  display.setCursor(0, 0);       // เซตตำแหน่ง 0,0
  display.setTextSize(2);        // เซตขนาดอักษรมีขนาดเป็น 2
  display.println(nob);     // นำค่า nob มาแสดงใน display
  display.display();        // เปิดฟังก์ชันแสดงผล
  sv1.write(nob);        // สั่งเซอร์โวมอเตอร์ให้หมุนไปตามค่าองศาที่ทำการ nob ไว้
  sv2.write(nob);        // สั่งเซอร์โวมอเตอร์ให้หมุนไปตามค่าองศาที่ทำการ nob ไว้
  delay(50);             // หน่วงเวลา 0.05 วินาที
  }
}
}



Report abuse
Page details
Page updated
Report abuse