ตัวอย่างโครงงาน Arduino UNO ควบคุม sevo และแสดงผล ผ่าน serial port และ lcd


Arduino IDE
Date 07 20, 2023

สวัสดีครับ บทความนี้จะเป็นจะเป็นการทดลองเขียนโค้ด arduino เพื่อ ควบคุม servo ให้แสดงผล ไปที่จอ lcd และ serail port โดย จะสั่ง servo หมุนตามมุม โดย รับค่า analog input จาก ตัวต้านทานปรับค่าได้ โดยจะแปลงค่า ที่รับได้เป็น ค่ามุมองศา

  1. Bord Arduino Uno
  2. ariable Resistor 10K Ohm
  3. Servo sg91R 180 degree
  4. LCD 16x 2
  5. I2C
  6. computer

Nature


การทดลองเพื่อ แน่ความเข้าใจเรื่องการรับค่า 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));
}
        
    

ผลลัพธ์