ตัวอย่างโครงงาน Arduino UNO ควบคุม sevo และแสดงผล ผ่าน serial port และ lcd
Arduino IDE
Date 07 20, 2023สวัสดีครับ บทความนี้จะเป็นจะเป็นการทดลองเขียนโค้ด arduino เพื่อ ควบคุม servo ให้แสดงผล ไปที่จอ lcd และ serail port โดย จะสั่ง servo หมุนตามมุม โดย รับค่า analog input จาก ตัวต้านทานปรับค่าได้ โดยจะแปลงค่า ที่รับได้เป็น ค่ามุมองศา
การทดลองเพื่อ แน่ความเข้าใจเรื่องการรับค่า analog input และการทำงานของ rc servo motor เพื่อเป็นแนวทางในการประยุคต์ใช้ งานกับระบบความคุมของ microcontroller ตัวอื่นๆต่อไป ซึ่งจะทำให้ต่อยอดได้ง่าย
โค้ด Arduino
#include Servo.h
#include Wire.h
#include LiquidCrystal_I2C.h
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo servo;
// กำหนดขา Servo
const int servoPin = 10;
// กำหนดขา Analog Input
const int analogPin = A0;
// ตัวแปรสำหรับเก็บค่าจาก Analog Input
int analogValue;
// ตัวแปรสำหรับเก็บค่าองศาของ Servo
int servoAngle;
void setup()
{
Serial.begin(9600);
Serial.println("Servo control");
lcd.init();
lcd.backlight();// light on the backlight;
//lcd.noBacklight();//light off the backligth;
lcd.setCursor(0,0);
lcd.print("Servo control");
// ตั้งค่าขา Servo เป็น Output
pinMode(servoPin, OUTPUT);
// ตั้งค่าขา Analog Input เป็น Input
pinMode(analogPin, INPUT);
// ประกาศตัวแปร Servo
servo.attach(servoPin);
}
void loop()
{
// อ่านค่าจาก Analog Input
analogValue = analogRead(analogPin);
// แปลงค่าจาก Analog Input เป็นองศา
servoAngle = map(analogValue, 0, 1023, 0, 180);
// สั่งให้ Servo หมุนตามองศา
servo.write(servoAngle);
// แสดงค่าองศาของ Servo บน Serial Monitor
//Serial.print("Servo Angle : ");
Serial.println(servoAngle);
lcd.setCursor(0,1);
lcd.print("ServoAngle:");
lcd.setCursor(13,1);
lcd.print(round(servoAngle));
}
ผลลัพธ์