3/4/62

วัดอุณหภูมิด้วย DHT22 และการแจ้งเตือนโดย Buzzer

มินิโปรเจค Arduino วัดอุณหภูมิด้วย DHT22 และการแจ้งเตือนโดย Buzzer



ประโยชน์และการนำโปรเจคไปพัฒนาต่อ

เช่น..เครื่องควบคุมอุณหภูมิเป็นอุปกรณ์ที่ใช้ในการควบคุมอุณหภูมิให้ได้ตามค่าอุณหภูมิที่กำหนดไว้ โดยจะนำมาใช้ในการสั่งการให้กับอุปกรณ์สำหรับทำความร้อนหรืออุปกรณ์ทำความเย็น ทำงาน ตามที่ได้ตั้งค่าอุณหภูมิไว้ การนำมาใช้งานและการควบคุมก็ขึ้นอยู่กับจุดประสงค์ของการใช้งาน


เครื่องวัดอุณหภูมิก็จะมีส่วนที่รับอุณหภูมิ (Input) จากหัววัดอุณหภูมิ หรือที่เรียกกันว่าเซ็นเซอร์วัดอุณหภูมิแล้วมาแสดงผลที่หน้าจอ Display พร้อมกับควบคุมอุณหภูมิให้ได้ตามค่าที่ได้กำหนดไว้ หากอุณหภูมิไม่ได้ตามที่กำหนดไว้ก็จะมีในส่วนของการสั่งงาน (Output) สั่งงานให้อุปกรณ์สำหรับทำความร้อนหรืออุปกรณ์ทำความเย็นทำงานให้ได้ตามค่าที่กำหนดไว้

เหมาะสำหรับงานใน ห้องควบคุมอุณหภูมิความชื้น, อุตสาหกรรมอาหาร,ห้องอบ, ห้องแช่เย็น,ห้องแล็ป,ห้องควบคุมระบบคอมพิวเตอร์, Clean Room, Warehouse ที่มี ปัญหาในการควบคุมอุณหภูมิ หรือความชื้น ทำให้เกิดความเสียหายต่ออุปกรณ์ หรือวัสดุที่ต้องการควบคุมอุณหภูมิ ความชื้น เป็นต้น


เป้าหมายและหลักการทำงานของโปรเจค







ให้เซ็นเซอร์วัดอุณหภูมิ DHT22 เป็นส่วนที่รับอุณหภูมิ (Input) ส่งให้ บอร์ด Arduino สั่งให้แสดงค่าอุณหภูมิที่วัดได้ ที่บรรทัดที่ 1 ของหน้าจอ LCD Display และ ต้องการควบคุมอุณหภูมิให้ได้ตามค่าที่ได้กำหนด โดยการเขียนโค้ดกำหนดไว้ โดยให้แสดงที่บรรทัดที่ 2 ของหน้าจอ LCD Display 

โดยเมื่อ
อุณหภูมิวัดค่าได้เท่ากับหรือมากกว่าค่าที่กำหนดในตัวอย่างคือ 40 องศาเซลเซียส Arduino จะไปสั่งงาน (Output) คือ ให้ออด Buzzer แสดงการแจ้งเตือน และเมื่ออุณหภูมิวัดค่าได้น้อยกว่า 40 องศาเซลเซียส ให้ ออด Buzzer หยุดการแจ้งเตือน



อุปกรณ์ที่ใช้ในโปรเจค

5. DHT22 Temperature and Humidity Sensor + PCB

6. Keyestudio Passive Buzzer Alarm Module


*** การใช้งานแบบไม่ต้องการเชื่อมต่อสาย USB กับ คอมพิวเตอร์ ให้ใช้ Adapter DC 9V 1A Power Supply เป็นแหล่งจ่ายไฟ เสียบเข้ากับ DC Power Jack ของ  บอร์ด Arduino ***


ขั้นตอนการทำโปรเจค

1. ต่อใช้งาน จอ LCD กับ Arduino




1.1 ยึดบอร์ด Arduino UNO



1.2 ประกอบ Sensor Shield V 5.0



1.3 เชื่อมต่อสาย LCD








1.4 ดาวน์โหลด Arduino I2C Library สำหรับ LCD

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library


1.5 ติดตั้ง I2C Library สำหรับ LCD


1.5.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino




1.5.2 เปิดโปรแกรม Arduino IDE


1.5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...




1.5.4 ไปที่ ไลบรารี Arduino-LiquidCrystal-I2C-library-master.zip ที่เรา ดาวน์โหลด มา -> Open



1.5.5 ตรวจสอบที่ Skecth -> Include Library  จะพบ ไลบรารี Arduino-LiquidCrystal-I2C-library-master เพิ่มเข้ามาใน Arduino IDE ของเรา




1.6 อัพโหลดโค้ด


1.6.1 เขียนโค้ดดังนี้


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
void setup()
{
  
  lcd.begin();
 
  lcd.backlight();
  lcd.print("Hello, world!");
}
 
void loop()
{
  
}

1.6.2 ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO




1.6.3 ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง  ให้เลือกตัวอื่นที่ไม่ใช่ COM1)

ในตัวอย่างเลือกเป็น "COM6"

(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)



1.6.4 กดปุ่ม  เพื่ออัพโหลด




1.6.5 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง




1.7 ปรับความสว่างหน้าจอ LCD





2. เชื่อมต่อสาย DHT22




3. เชื่อมต่อสาย Keyestudio Buzzer



4. ติดตั้ง DHT sensor library


4.1 ดาวน์โหลดไลบรารี ของเซ็นเซอร์ DHT


https://github.com/adafruit/DHT-sensor-library


4.2 ไปที่ Clone or download -> Download ZIP





4.3 เปิดโปรแกรม Arduino IDE




4.4 ไปที่ Skecth -> Include Library -> Add .ZIP Library...





4.5 ไปที่ ไลบรารี DHT-sensor-library-master ที่เรา ดาวน์โหลด มา -> Open






4.6 ไปที่ Tools -> Manage Libraries...


4.7 ไปที่ช่องค้นหา พิมพ์ DHT  (เพื่อค้นหา DHT sensor library )



4.8 เลื่อนเมาส์ไปที่ DHT sensor library แล้ว คลิก Install



4.9 คลิก Close




4.10 ตรวจสอบที่ Skecth -> Include Library  จะพบ ไลบรารี DHT sensor library เพิ่มเข้ามาใน Arduino IDE ของเรา







5. ติดตั้ง Adafruit Unified Sensor Library


5.1 ดาวน์โหลด Library

https://github.com/adafruit/Adafruit_Sensor


5.2 ไปที่ Clone or download -> Download ZIP



5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...





5.4 ไปที่ ไลบรารี Adafruit_Sensor-master ที่เรา ดาวน์โหลด มา -> Open



5.5 ตรวจสอบที่ Skecth -> Include Library  จะพบ ไลบรารี Adafruit Unified Sensor เพิ่มเข้ามาใน Arduino IDE ของเรา




6. ภาพรวมการต่อโปรเจค




7. อัพโหลดโค้ด



/*
    Temperature Monitoring With DHT22 & Arduino
    For more details visit:
    https://miniarduino.blogspot.com/2019/04/dht22.html

*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>;

#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);

float temp;
float set_temp;
int buzzer = 8;

void setup()
{
  dht.begin();
  lcd.begin();
  lcd.backlight();
  pinMode(buzzer, OUTPUT);
  set_temp = 40;

}

void loop()
{

  temp = dht.readTemperature();

  if (temp >= set_temp) {

    lcd.setCursor(0, 0);
    lcd.print("TEMP: = " + String(temp) + " C");
    lcd.setCursor(0, 1);
    lcd.print("SET : = " + String(set_temp) + " C");
    buzzer_on();
  }
  else {

    lcd.setCursor(0, 0);
    lcd.print("TEMP: = " + String(temp) + " C");
    lcd.setCursor(0, 1);
    lcd.print("SET : = " + String(set_temp) + " C");

  }

  delay(1);
}

void buzzer_on()

{ unsigned char i, j;


  { for (i = 0; i < 80; i++)

    { digitalWrite(buzzer, HIGH);

      delay(1);//delay1ms

      digitalWrite(buzzer, LOW);

      delay(1);//ms delay

    }

    for (i = 0; i < 100; i++)

    {

      digitalWrite(buzzer, HIGH);

      digitalWrite(buzzer, LOW);

      delay(2);

    }

  }

}


8. อธิบายโค้ด


#include <Wire.h>  // ให้คอมไพเลอร์นำเฮดเดอร์ไฟล์ (Library Function) ชื่อ Wire.h เข้ามาร่วมในการประมวลผลด้วย

#include <LiquidCrystal_I2C.h> // ให้คอมไพเลอร์นำเฮดเดอร์ไฟล์ (Library Function) ชื่อ LiquidCrystal_I2C.h เข้ามาร่วมในการประมวลผลด้วย

#include <DHT.h>;  // ให้คอมไพเลอร์นำเฮดเดอร์ไฟล์ (Library Function) ชื่อ DHT.h เข้ามาร่วมในการประมวลผลด้วย

#define DHTPIN 2 // ประกาศให้พินดิจิตอล 2 เป็นตัวแปรชื่อ DHTPIN

#define DHTTYPE DHT22 // ประกาศประเภทการใช้งานเป็นอุปกรณ์ DHT22

DHT dht(DHTPIN, DHTTYPE); // ประกาศตัวแปร dht นำเข้าข้อมูลจาก พินดิจิตอล 2 และเป็นอุปกรณ์ DHT22

LiquidCrystal_I2C lcd(0x27, 16, 2);  // ตั้งค่า Address ของ จอ LCD เป็น 0x27 และให้แสดงผล แบบ 16 ตัวอักษร 2 บรรทัด

float temp; // ประกาศตัวแปรชื่อ temp มีชนิดของข้อมูลคือ float คือข้อมูลที่เป็นเลขทศนิยม

float set_temp; // ประกาศตัวแปรชื่อ set_temp มีชนิดของข้อมูลคือ float คือข้อมูลที่เป็นเลขทศนิยม

int buzzer = 8; // ประกาศให้พินดิจิตอล 8 เป็นตัวแปรชื่อ buzzer  มีชนิดของข้อมูลคือ int คือ เลขจำนวนเต็ม 


void setup() // ฟังก์ชัน setup จะทำงานครั้งแรก เพียงครั้งเดียวเท่านั้น

{
 
  dht.begin(); 
// เริ่มการทํางาน DHT22

  lcd.begin(); // เริ่มการทํางาน จอ LCD

  lcd.backlight(); // ให้จอ LCD แสดงผลเป็นแบบพื้นสีดำ

  pinMode(buzzer, OUTPUT); //  ให้ buzzer พินดิจิตอล 8 เป็นพินโหมด แบบเอาท์พุท

  set_temp = 40; // ให้ตัวแปร set_temp มีค่าเท่ากับ 40 เพื่อตั้งค่าอุณหภูมิ ที่ต้องการแจ้งเตือน

} // สิ้นสุดการทำงานของฟังก์ชัน setup


void loop()  // ฟังก์ชัน loop จะทำงานซ้ำ วนลูป ไปเรื่อยๆ

{

  temp = dht.readTemperature();  // อ่านค่าอุณภูมิที่วัดได้เก็บไว้ที่ตัวแปร temp

  if (temp >= set_temp) {  // ถ้า temp อุณภูมิที่วัดได้มากกว่าหรือเท่ากับอุณภูมิที่ตั้งค่าไว้ในตัวอย่างคือ 40

    lcd.setCursor(0, 0);  // เลื่อนเคเซอร์ไปที่ตัวอักษรที่ 0 บรรทัดที่ 1

    lcd.print("TEMP: = " + String(temp) + " C"); // LCD แสดงผลคำว่า TEMP = อุณภูมิที่วัดได้ ตามด้วย หน่วย C

    lcd.setCursor(0, 1);  // เลื่อนเคเซอร์ไปที่ตัวอักษรที่ 0 บรรทัดที่ 2

    lcd.print("SET : = " + String(set_temp) + " C"); // LCD แสดงผลคำว่า SET = อุณภูมิที่ตั้งค่าไว้ ตามด้วย หน่วย C

    buzzer_on();   // เรียกใช้ ฟังก์ชัน buzzer_on เพื่อกำเหนิดเสียงแจ้งเตือน

  }

  else {  //  อื่นๆเช่นอุณภูมิที่วัดได้น้อยกว่า อุณภูมิที่ตั้งค่าไว้ในตัวอย่างคือ 40

    lcd.setCursor(0, 0); // เลื่อนเคเซอร์ไปที่ตัวอักษรที่ 0 บรรทัดที่ 1

    lcd.print("TEMP: = " + String(temp) + " C"); // LCD แสดงผลคำว่า TEMP = อุณภูมิที่วัดได้ ตามด้วย หน่วย C

    lcd.setCursor(0, 1);  // เลื่อนเคเซอร์ไปที่ตัวอักษรที่ 0 บรรทัดที่ 1

    lcd.print("SET : = " + String(set_temp) + " C");  // LCD แสดงผลคำว่า SET = อุณภูมิที่ตั้งค่าไว้ ตามด้วย หน่วย C

  }

  delay(1);  //  หน่วงเวลา 1  มิลลิวินาที

}  // สิ้นสุดการทำงานของฟังก์ชัน loop แล้วเริ่มทำงานฟังก์ชัน loop ใหม่ซ้ำไปเรื่อยๆ


26/3/62

ควบคุม Servo Motor โดยใช้ Potentiometer

มินิโปรเจค Arduino ควบคุม Servo Motor โดยใช้ Potentiometer



ประโยชน์และการนำโปรเจคไปพัฒนาต่อ

การควบคุมตำแหน่งของเซอร์โวมอเตอร์ (Servo Motor) นั้น มีความสำคัญในการสร้าง และ การพัฒนาสิ่งประดิษฐ์ต่างๆ ที่ต้องการควบคุมกลไก จากคอนโทรลเลอร์  
รวมทั้งการพัฒนาชุดควบคุมหุ่นยนต์แขนกล , หุ่นยนต์ฮิวแมนนอยด์ (humanoid robot) เป็นต้น


เป้าหมายและหลักการทำงานของโปรเจค




ผลของการทำงานทำให้สามารถปรับตำแหน่งองศาของ Servo Motor ได้โดยการหมุนปรับค่า Potentiometer และแสดงค่าที่จอ LCD

ทดสอบโดย หมุน โพเทนซิโอมิเตอร์ (Potentiometer) ตัวต้านทานปรับค่าได้ 10K Ohm หรืออาจจะเรียกสั้นๆว่า “pot” ซึ่งเป็นอุปกรณ์ที่มีสามขา ปรับค่าได้ ที่ต่ออยู่ที่ 
Pin อนาล็อก A0 ของ Arduino เมื่ออ่านค่า
อินพุท แบบ อนาล็อก (Analog) แล้วเก็บค่าไว้ในตัวแปร

แต่เนื่องจาก การแปลงค่าจาก 
อนาล็อก เป็น ดิจิตอล (Analog to Digital Converter) หรือเรียกสั้นๆว่า ADC ของ Arduino นั้นเป็น ADC ขนาด 10-bit จึงอ่านค่า Analog ได้ตั้งแต่ 0 – 1023 แต่ Servo Motor สามารถหมุนได้เพียงแค่ 0 - 180 องศา จึงต้องแปลงค่า เพื่อทำการสเกลค่าลงจาก 0 - 1023 ให้เป็น 0 - 180 แล้วนำไปเก็บไว้ในตัวแปรอีกครั้ง

แล้วให้จอ LCD บรรทัดบนแสดงผลค่าของตัวแปร ADC ที่ยังไม่ได้แปลงค่า 
และ LCD บรรทัดล่างแสดงผลค่าของตัวแปร ADC ที่แปลงค่าเป็นองศาของ Servo ส่วนที่  Pin ดิจิตอล (Digital) หมายเลข 9 เป็นเอาท์พุท ที่สั่งให้ Servo Motor หมุนไปยังตำแหน่งตามค่าตัวแปร ADC ที่แปลงค่าเป็นองศาของ Servo แล้วเช่นกัน


รู้จัก Servo Motor


  Servo เป็นคำศัพท์ที่ใช้กันทั่วไปในระบบควบคุมอัตโนมัติ มาจากภาษาละตินคำว่า Sevus หมายถึง “ทาส” (Slave) ในเชิงความหมายของ Servo Motor ก็คือ Motor ที่เราสามารถสั่งงานหรือตั้งค่า แล้วตัว Motor จะหมุนไปยังตำแหน่งองศาที่เราสั่งได้เองอย่างถูกต้อง โดยใช้การควบคุมแบบป้อนกลับ (Feedback Control) 


ส่วนประกอบภายนอก Servo Motor




เซอร์โวชุดนี้มีขนาดเล็กแรงบิด 1.2-1.4 KG/cm สีน้ำตาลเป็นสายกราวด์ สีแดงเป็นไฟเข้า 4.8-7.2V สีส้มเป็นสัญญาณอินพุต หมุนได้ 180 องศา ส่วนใหญ่ต่อเข้ากับ Pin ดิจิตอล (Digital) ของ Arduino UNO ที่เป็น Pin ที่สามารถใช้งาน PWM Signal ได้ เช่น 3 , 5 , 6 , 9 , 10 , 11

ส่วนประกอบภายใน Servo Motor




1. ELECTRIC MOTOR เป็นส่วนของตัวมอเตอร์

2. MOTOR CONTROL UNIT เป็นส่วนที่ควบคุมและประมวลผล

3. CONNETION CABLE เป็นส่วนเชื่อมต่อสายสัญญาณพัลซ์ควบคุมและสายไฟเลี้ยง 


4. POTENTIOMETER TO CONTROL THE ANGLE เป็นส่วนควบคุมองศาในการหมุน

5. GEAR เป็นส่วนชุดเกียร์ทดแรง


อุปกรณ์ที่ใช้ในโปรเจค


5. SG90 Tower Pro Micro Servo motor


6 . ตัวต้านทานปรับค่าได้ 10k ohm



*** การใช้งานแบบไม่ต้องการเชื่อมต่อสาย USB กับ คอมพิวเตอร์ ให้ใช้ Adapter DC 9V 1A Power Supply เป็นแหล่งจ่ายไฟ เสียบเข้ากับ DC Power Jack ของ  บอร์ด Arduino ***


ขั้นตอนการทำโปรเจค

1. ต่อใช้งาน จอ LCD กับ Arduino




1.1 ยึดบอร์ด Arduino UNO



1.2 ประกอบ Sensor Shield V 5.0



1.3 เชื่อมต่อสาย LCD








1.4 ดาวน์โหลด Arduino I2C Library สำหรับ LCD

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library


1.5 ติดตั้ง I2C Library สำหรับ LCD


1.5.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino




1.5.2 เปิดโปรแกรม Arduino IDE


1.5.3 ไปที่ Skecth -> Include Library -> Add .ZIP Library...




1.5.4 ไปที่ ไลบรารี Arduino-LiquidCrystal-I2C-library-master.zip ที่เรา ดาวน์โหลด มา -> Open


1.5.5 ตรวจสอบที่ Skecth -> Include Library  จะพบ ไลบรารี Arduino-LiquidCrystal-I2C-library-master เพิ่มเข้ามาใน Arduino IDE ของเรา



1.6 อัพโหลดโค้ด


1.6.1 เขียนโค้ดดังนี้


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
void setup()
{
  
  lcd.begin();
 
  lcd.backlight();
  lcd.print("Hello, world!");
}
 
void loop()
{
  
}

1.6.2 ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO




1.6.3 ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง  ให้เลือกตัวอื่นที่ไม่ใช่ COM1)

ในตัวอย่างเลือกเป็น "COM6"

(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)



1.6.4 กดปุ่ม  เพื่ออัพโหลด




1.6.5 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง




1.7 ปรับความสว่างหน้าจอ LCD





2. เชื่อมต่อสาย ตัวต้านทานปรับค่าได้ 10k Ohm (VR)




3. เชื่อมต่อสาย Servo Motor



4. อัพโหลดโค้ด


/*
    Servo Motor Control with Potentiometer Arduino.

    For more details visit:

    https://miniarduino.blogspot.com/2019/03/arduino-servo-motor-potentiometer.html

*/


// include the library code:

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Servo.h>

// Set the LCD address to 0x27 or 0x3F for a 16 chars and 2 line display

LiquidCrystal_I2C lcd(0x27, 16, 2);


Servo myservo; // create servo object to control a servo

int potpin = A0; // analog pin used to connect the potentiometer

int val; // variable to read the value from the analog pin



void setup() {


  lcd.begin(); // initialize the LCD

  lcd.backlight(); // Turn on the blacklight and print a message.

  myservo.attach(9); // attaches the servo on pin 9 to the servo object

}

void loop() {

  val = analogRead(potpin); // reads the value of the potentiometer (value // between 0 and 1023)

  lcd.setCursor(0, 0); // set the cursor to column 0, line 0

  lcd.print("ADC = " + String(val)); // print (value // between 0 and 1023) to the LCD.

  val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo value

  lcd.setCursor(0, 1); // set the cursor to column 0, line 1

  lcd.print("Servo = " + String(val)); // print (value // between 0 and 180) to the LCD.


  // between 0 and 180)

  myservo.write(val); // sets the servo position according to the

  // scaled value

  delay(15); // waits for the servo to get there

}




4.1 อธิบายโค้ด

val = analogRead(potpin); 
         
อ่านค่า Analog จาก Potentiometer ที่ต่ออยู่ที่ขา A0 เก็บไว้ในตัวแปร val

lcd.print("ADC = " + String(val));

แสดงค่า 0 – 1023 ที่จอ LCD

val = map(val, 0, 1023, 0, 180);
         
 เนื่องจาก ADC ภายใน Arduino เป็น ADC ขนาด 10-bit จึงอ่านค่า Analog ได้ตั้งแต่ 0 – 1023 แต่ RC Servo Motor สามารถหมุนได้เพียงแค่ 0 - 180 องศา จึงต้องใช้ Function map เพื่อทำการสเกลค่าลงจาก 0 - 1023 เป็น 0 - 180 แล้วนำไปเก็บไว้ในตัวแปร val

lcd.print("Servo = " + String(val));

แสดงค่า 0 – 180 ที่จอ LCD

myservo.write(val);

เมื่อสเกลค่า จาก 0-1023 ลงเหลือ 0-180 แล้วก็นำมาสั่งให้ Servo Motor หมุนไปยังตำแหน่งในค่าตัวแปร val

delay(15); 

หน่วงเวลา 15 มิลลิวินาที.

ผลของการทำงานทำให้สามารถปรับตำแหน่งองศาของ Servo Motor ได้โดยการหมุนปรับค่า Potentiometer และแสดงค่าที่จอ LCD



5. ปัญหาที่พบในโปรเจคนี้

การปรับค่า Potentiometer ให้ Servo Motor หมุนได้ 180 องศาไม่มีปัญหา แต่ในการปรับค่า Potentiometer ให้ Servo Motor หมุนได้จนถึง 0 องศานั้นไม่สามารถทำได้ในบางครั้ง น่าจะเกิดจาก คุณสมบัติหรือคุณภาพ ของ Potentiometer  ตัวที่เลือกใช้งาน