ประโยชน์และการนำโปรเจคไปพัฒนาต่อ
การปรับความสว่าง LED ด้วย R ปรับค่าได้ นั้น เป็นการควบคุมค่า PWM ให้สามารถปรับความสว่าง ของ LED ให้เหมาะสมกับการใช้งาน และยังเป็นการใช้พลังงานอย่างประหยัดและคุ้มค่าโดยการสร้างค่านิยมและจิตใต้สำนึกการใช้พลังงาน ตัวอย่าง เช่น ห้องนอน , ห้องที่ไม่ต้องการแสงสว่างมากเกินไป และยังสามารถปรับความสว่างเพิ่มมากขึ้น หรือลดลง ตามความต้องการได้อีกด้วย
เป้าหมายและหลักการทำงานของโปรเจค
ผลของการทำงานทำให้สามารถปรับความสว่าง LED ได้โดยการหมุนปรับค่า Potentiometer
ทดสอบโดย หมุน โพเทนซิโอมิเตอร์ Adjustable Potentiometer หรืออาจจะเรียกสั้นๆว่า “pot” ซึ่งเป็นอุปกรณ์ที่มีสามขา ปรับค่าได้ ที่ต่ออยู่ที่ Pin อนาล็อก A0 ของ Arduino เมื่ออ่านค่าอินพุท (input) แบบ อนาล็อก (Analog) แล้วเก็บค่าไว้ในตัวแปร
แต่เนื่องจาก การแปลงค่าจาก อนาล็อก เป็น ดิจิตอล (Analog to Digital Converter) หรือเรียกสั้นๆว่า ADC ของ Arduino นั้นเป็น ADC ขนาด 10-bit จึงอ่านค่า Analog ได้ตั้งแต่ 0 – 1024 แต่ PWM หรือการหรี่ไฟ ต้องการค่าตั้งแต่ 0 - 255 จึงต้องแปลงค่า เพื่อทำการสเกลค่าลงจาก 0 - 1024 ให้เป็น 0 - 255 แล้วนำไปเก็บไว้ในตัวแปร PWM
ส่วนที่ Pin ดิจิตอล (Digital) หมายเลข 5 เป็นเอาท์พุท (output) ที่สั่งให้ LED ปรับความสว่าง ตามค่า PWM ที่ส่งออกมา
รู้จัก PWM(Pulse Width Modulation)
PWM คือเทคนิดการส่งสัญญาณแบบสวิต หรือ ส่งค่าดิจิตอล 0-1 โดยให้สัญญาณความถี่คงที่ การควบคุมระยะเวลาสัญญาณสูงและสัญญาณต่ำ ที่ต่างกัน ก็จะทำให้ค่าแรงดันเฉลี่ยของสัญญาณสวิต ต่างกันด้วย
สำหรับโมดุล PWM ของ Arduino มีความละเอียด 8 bit หรือ ปรับได้ 255 ระดับ ดังนั้นค่าสัญญาณ 0 โวลต์ถึง 5 โวลต์ จะถูกแสดงเป็นสัญญาณแบบดิจิตอล จะได้ 0 ถึง 255 ซึ่งเราสามารถเทียบสัดส่วนคำนวนจากเลขจริง เป็น เลขทางดิจิตอลได้
อุปกรณ์ที่ใช้ในโปรเจค
ขั้นตอนการทำโปรเจค
1. เชื่อมต่อ Arduino UNO R3 กับ Adjustable Potentiometer Module (5V ลงใน Mini Breadboard)
2. เชื่อมต่ออุปกรณ์ที่เหลือ ลงใน Mini Breadboard
3. ตัดแจ๊กขั้วถ่านออก แล้วเชื่อมต่อ แจ๊ก เข้ากับ รางถ่าน แล้วจึงเสียบเข้า บอร์ด Arduino เพื่อเป็นไฟเลี้ยงบอร์ด
4. ภาพรวมการต่อโปรเจค
5. อัพโหลดโค้ด
5.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino
5.2 เปิดโปรแกรม Arduino IDE เขียนโค้ดดังนี้
int POT_PIN = A0;
int VAL;
int PWM;
int LED_PIN = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
VAL = analogRead(POT_PIN);
PWM = map(VAL, 0, 1024, 0, 255);
analogWrite(LED_PIN, PWM);
delay(15);
}
5.3 ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO
5.4 ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง ให้เลือกตัวอื่นที่ไม่ใช่ COM1)
ในตัวอย่างเลือกเป็น "COM8"
(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)
5.6 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง
6. อธิบายโค้ด
int POT_PIN = A0; // ประกาศให้พินอนาล็อก A0 เป็นตัวแปรชื่อ POT_PIN มีชนิดของข้อมูลเป็น int คือ เลขจำนวนเต็ม
int VAL; // ประกาศตัวแปรชื่อ VAL มีชนิดของข้อมูลเป็น int คือ เลขจำนวนเต็ม
int PWM; // // ประกาศตัวแปรชื่อ PWM มีชนิดของข้อมูลเป็น int คือ เลขจำนวนเต็ม
int LED_PIN = 5; // ประกาศให้พินดิจิตอล 5 เป็นตัวแปรชื่อ LED_PIN มีชนิดของข้อมูลเป็น int คือ เลขจำนวนเต็ม
void setup() { // ฟังก์ชัน setup จะทำงานครั้งแรก เพียงครั้งเดียวเท่านั้น
pinMode(LED_PIN, OUTPUT); // ให้ LED_PIN พินดิจิตอล 5 เป็นพินโหมด แบบเอาท์พุท
} // สิ้นสุดการทำงานของฟังก์ชัน setup
void loop() { // ฟังก์ชัน loop จะทำงานซ้ำ วนลูป ไปเรื่อยๆ
VAL = analogRead(POT_PIN); // อ่านค่าจากขา A0 เก็บไว้ที่ตัวแปร VAL
PWM = map(VAL, 0, 1024, 0, 255); // เนื่องจาก ADC ภายใน Arduino เป็น ADC ขนาด 10-bit จึงอ่านค่า Analog ได้ตั้งแต่ 0 – 1024 แต่ PWM หรือการหรี่ไฟ ต้องการค่าตั้งแต่ 0 - 255 จึงต้องแปลงค่า เพื่อทำการสเกลค่าลงจาก 0 - 1024 ให้เป็น 0 - 255 แล้วนำไปเก็บไว้ในตัวแปร PWM
analogWrite(LED_PIN, PWM); // ให้พินดิจิตอล 5 LED_PIN ส่งค่า PWM หรือค่าอนาล็อก 0 - 255 ออกไป
delay(15); // หน่วงเวลา 15 มิลลิวินาที
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น