`LcdProgressBar` คืออะไร?
`LcdProgressBar` คือไลบรารีของ `Arduino` สำหรับแสดงแถบความคืบหน้า (`progress bar`) บนจอแสดงผล `LCD`
การพึ่งพิง (`Dependencies`)
จอแสดงผล `LCD` จะต้องได้รับการเริ่มต้น (`initialize`) มาก่อน ไลบรารีนี้ใช้ไลบรารี `LiquidCrystal` ในการแสดงผล
ผลลัพธ์ที่คาดหวัง
แถบความคืบหน้า 2 วินาที, วนซ้ำ
ตัวอย่าง
ดูตัวอย่างฉบับเต็มได้ที่: examples/Timer/Timer.ino.
การรวมไลบรารี (`Includes`)
#include <LiquidCrystal.h>
#include <LcdProgressBar.h> //## รวมไลบรารีนี้
การเริ่มต้น (`Initialization`): การสร้างอินสแตนซ์ (`instantiations`)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LcdProgressBar lpg(&lcd, 1, 16);
การเริ่มต้นแถบความคืบหน้า (`Initializing the progress bar`)
void initLpg()
{
//-- เริ่มต้นเวลา
startedMillis = millis();
//-- กำหนดค่าต่ำสุดและสูงสุด
lpg.setMinValue(startedMillis);
lpg.setMaxValue(startedMillis + duration);
}
การวาดแถบความคืบหน้า (`Drawing the progress bar`)
//-- วาดแถบความคืบหน้า
lpg.draw(currentMillis);
หรือผ่านชื่อเรียกแทน drawValue (ในแบบ `LcdBarGraph` :wink:):
//-- วาดแถบความคืบหน้า
lpg.drawValue(currentMillis);
รายละเอียดทางเทคนิคเพิ่มเติม
ระบบวัดและส่งข้อมูลความคืบหน้าทางภาพ
LcdProgressBar มอบอินเทอร์เฟซกราฟิกคุณภาพระดับมืออาชีพสำหรับการติดตามกระบวนการของฮาร์ดแวร์, การอัปโหลดไฟล์ หรือการปรับเทียบเซ็นเซอร์บนจอ LCD แบบอักขระมาตรฐาน
- การกำหนดอักขระแบบกำหนดเอง (
Custom Character Definition): จอLCDมาตรฐาน (เช่นHD44780) แสดงได้แค่ข้อความเท่านั้น โปรเจกต์นี้ใช้ฟังก์ชันcreateChar()ของArduinoเพื่อกำหนดบิตแมปแบบกำหนดเอง 5 ถึง 8 แบบ ซึ่งแสดงถึง "ระดับ" ที่แตกต่างกันของส่วนแถบเดี่ยว (เช่น 20%, 40%, 60% เต็ม) - อัลกอริทึมการแมปแบบไดนามิก (
Dynamic Mapping Algorithm): เฟิร์มแวร์ใช้ฟังก์ชันmap()เพื่อแปลงค่ากระบวนการดิบ (0-100) ให้เป็นชุดของอักขระแบบกำหนดเองทั้งแบบเต็มและแบบบางส่วน ซึ่งสร้างแถบความคืบหน้าแบบภาพที่ราบรื่นและมีความละเอียดสูง
ความหลากหลายของ UI
- การอัปเดตแบบไร้การกระพริบ (
Flicker-Free Updates): โค้ดได้ปรับปรุงรอบการเขียนให้เหมาะสม; แทนที่จะล้างจอLCDทั้งหมด มันจะเขียนทับเฉพาะอักขระที่เปลี่ยนไปเท่านั้น เพื่อให้แน่ใจว่าการแสดงผลสะอาดและเสถียรในระหว่างกระบวนการที่เคลื่อนที่รวดเร็ว