บทที่ 17 ESP32 ควบคุม Servo Motor ด้วย Potentiometer(POT)
🚦⚡ในบทนี้จะเป็นการเขียนโปรแกรมควบคุมการหมุนของ Servo Motor โดย Servo Motor จะหมุนได้ครึ่งรอบ หรือ 180 องศา ซึ่งการควบคุมการหมุนจะกำหนดด้วยตำแหน่งองศา 0–180
เริ่มต้น จะต้องทำการติดตั้งไลบรารี่ Servo ก่อน
- ไปที่เมนู 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
หรือ กด ที่นี่
บทต่อไป กดลิ้งค์ด้านล่างเลยครับ