บทที่ 17 ESP32 ควบคุม Servo Motor ด้วย Potentiometer(POT)

Narin Damnuy (KruRin)
3 min readJun 19, 2022

--

Sensor Onboard

🚦⚡ในบทนี้จะเป็นการเขียนโปรแกรมควบคุมการหมุนของ Servo Motor โดย Servo Motor จะหมุนได้ครึ่งรอบ หรือ 180 องศา ซึ่งการควบคุมการหมุนจะกำหนดด้วยตำแหน่งองศา 0–180

เริ่มต้น จะต้องทำการติดตั้งไลบรารี่ Servo ก่อน

  1. ไปที่เมนู Sketch เลือก Include Library จากนั้นกดที่เมนู Manage Libraries

2.พิมพ์ esp32servo ในช่อง และหาไลบรารี่ ESP32Servo จากนั้นกดปุ่ม Install

3. เมื่อติดตั้งเสร็จจะแสดงข้อความ Installed ให้กดปุ่ม close ได้เลย

4. ใช้โค้ดตัวอย่างด้านล่างเพื่อทดสอบการหมุนของ Servo ซึ่งจะต่อที่ขา 25 การทำงานจะเริ่มที่ 0 องศา หยุด 1 วินาที แล้วหมุนไปที่ 90 องศา หยุด 1 วินาที และหมุนไปที่ 180 องศา หยุด 2 วินาที แล้ววนไปที่ 0 องศา ใหม่

/*****************************************************************
* Mr.Narin Damnuy (KruRin)
* Technology Computer
* Phatthalung Technical College
* fb.com/damnuy : LineID:damnuy27
* Free License
*****************************************************************/
#include <ESP32Servo.h>
Servo myservo; //ประกาศตัวแปรแทน Servo
void setup()
{
myservo.attach(25); // ขา 25 (กำหนดขาควบคุม Servo)
}
void loop()
{
myservo.write(0); // สั่งให้ Servo หมุนไปองศาที่ 0
delay(1000); // หน่วงเวลา 1000ms
myservo.write(90); // สั่งให้ Servo หมุนไปองศาที่ 90
delay(1000); // หน่วงเวลา 1000ms
myservo.write(180); // สั่งให้ Servo หมุนไปองศาที่ 180
delay(2000); // หน่วงเวลา 2000ms
}

5. ต่อไปทำการอ่านค่า POT มาควบคุมการหมุนของ Sorvo โดยใช้คำสั่งดังนี้

/*****************************************************************
* Mr.Narin Damnuy (KruRin)
* Technology Computer
* Phatthalung Technical College
* fb.com/damnuy : LineID:damnuy27
* Free License
*****************************************************************/
#include <ESP32Servo.h>
Servo myservo; //ประกาศตัวแปรแทน Servo
int pot = 0; //ประกาศตัวแปร pot
void setup()
{
myservo.attach(25); // ขา 25 (กำหนดขาควบคุม Servo)
}
void loop()
{
pot = analogRead(2); //อ่านค่า analog ขา 2 มาเก็บที่ตัวแปร pot
pot = map(pot,0,4095,0,180); //map ค่า จาก 0-4095 เป็น 0-180
myservo.write(pot); // สั่งให้ Servo หมุนไปองศาตามค่า pot
delay(50); // หน่วงเวลา 50ms
}

การใช้คำสั่ง map มีพารามิเตอร์ดังนี้

map ( value, fromLow, fromHigh, toLow, toHigh )

  • value คือ ค่าที่จะนำมา map
  • fromLow คือ ค่าต่ำสุดเดิม
  • fromHigh คือ ค่าสูงสุดเดิม
  • toLow คือ ค่าต่ำสุดใหม่
  • toHigh ค่า ค่าสูงสุดใหม่

ขอบคุณที่รับชมครับผม

สนันสนุน KruRin ในการเขียนบทความ เลี้ยงกาแฟซักแก้วครับ กดที่นี่

สนใจบอร์ด IoT Education Kit V1.1

สั่งซื้อใน Shopee ที่ลิ้งค์ด้านล่างได้เลยครับผม

https://shopee.co.th/narindamnuy

หรือ กด ที่นี่

บทต่อไป กดลิ้งค์ด้านล่างเลยครับ

สอน IoT ด้วยบอร์ด ESP32

42 stories

--

--

Narin Damnuy (KruRin)

Teacher in Computer Technology Department at Phatthalung Technical College