GLCD-XT 1
การพัฒนาโปรแกรมภาษา C/C++ ดวย Arduino เพือใช ่ งานบอรดแสดงผลกราฟก LCD สีรุน GLCD-XT ดําเนินการภายใตการสนับสนุนของไฟลไลบรารี glcd.h หรือ popxt.h ทังนี ้ เพื ้ อช ่ วยลดขันตอน ้ และความซับซอนในการเขียนโปรแกรมติดตอกับตัวควบคุมของจอแสดงผลลง เนืองจากต ่ องการให ความสําคัญของการพัฒนาโปรแกรมไปอยูที การเขี ่ ยนโปรแกรมสําหรับรองรับการสรางแอปพลิเคชัน่ หรือทําโครงงาน ในการประกาศเพือผนวกไฟล ่ ไลบรารีนีในโปรแกรมหรื ้ อสเก็ตชของ Arduino1.0 ทําไดดังนี้ #include <glcd.h> หรือ #include <popxt.h>
รายละเอียดของฟงกชันหรื ่ อคําสังหลั ่ กในไฟลไลบรารี popxt.h หรือ glcd.h ของบอรด GLCDXT มีดังนี้
2 GLCD-XT
1. glcd เปนฟงกชันแสดงข ่ อความทีหน ่ าจอแสดงผลกราฟก LCD สี โดยแสดงตัวอักษรขนาดปกติได 21 ตัวอักษร 16 บรรทัด รูปแบบ
void glcd(unsigned char x, unsigned char y ,char *p,...) พารามิเตอร x คือตําแหนงบรรทัดมีคาตั้งแต 0 ถึง 15 y คือตําแหนงตัวอักษรมีคาตั้งแต 0 ถึง 20 *p คือขอความที่ตองการนํามาแสดงรวมถึงรหัสทีใช ่ กําหนดรูปแบบพิเศษเพือร ่ วมแสดงผลขอมูลตัวเลขใน รูปแบบอืนๆ ่ ประกอบดวย %c หรือ %C - รับคาแสดงผลตัวอักษร 1 ตัวอักษร %d หรือ %D - รับคาแสดงผลตัวเลขจํานวนเต็มในชวง -32,768 ถึง 32,767 %l หรือ %L - รับคาแสดงผลตัวเลขจํานวนเต็มในชวง -2,147,483,648 ถึง 2,147,483,647 %f หรือ %F - รับคาเพือแสดงผลตั ่ วเลขจํานวนจริง (แสดงทศนิยม 3 หลัก) ตัวอยางที่ 1 glcd(2,0,“Hello World“); // แสดงขอความ Hello World ทีตํ่ าแหนงซายสุดของบรรทัด 2 (บรรทัดที่ 3) 100 F HelloRWorld RRRRow03 RRRRRow04 RRRRRRow05 RRRRRRRow06 RRRRRRRRow07
ตัวอยางที่ 2 int x=20; glcd(1,2,”Value = %d”,x);
Row00 RRValueR=R20 RRRow02 RRRRow03 RRRRRow04 RRRRRRow05 RRRRRRRow06 RRRRRRRRow07
// แสดงตัวอักษรและตัวเลขบนบรรทัดเดียวกัน // เริ่มตนที่คอลัมน 2 ของบรรทัด 1 (บรรทัดที่ 2) 100 F
GLCD-XT 3
2. colorRGB เปนฟงกชั่นเปลียนค ่ าสีในรูปแบบ RGB (แดง เขียว นําเงิ ้ น) ใหอยูในรูปของตัวเลข 16 บิต โดยแบงเปน คาของสีแดง 5 บิต ตอดวยสีเขียว 6 บิต และปดทายดวยคาของสีนําเงิ ้ น 5 บิต รูปแบบ
unsigned int colorRGB(uint red,uint green,uint blue) พารามิเตอร red - เปนคาของสีแดง มีคาระหวาง 0 ถึง 31 ถาคาที่ปอนมากกวา 31 จะปรับลดใหเทากับ 31 green - คาของสีเขียว มีคาระหวาง 0 ถึง 63 ถาคาที่ปอนมากกวา 63 จะถูกปรับลดใหเทากับ 63 blue - คาของสีนํ้าเงิน มีคาระหวาง0 ถึง 31 ถาคาที่ปอนมากกวา 31 จะปรับลดใหเทากับ 31 ตัวอยางที่ 3 #include <popxt.h> int colors; void setup() { int colors; colors=colorRGB(31,0,0); // สงคาสี 16 บิตของสีแดงใหตัวแปร colors glcdFillScreen(colors); // นําคาไปแสดงเปนสีพืนของจอแสดงผล ้ } void loop() {}
4 GLCD-XT
3. color[ ] เปนตัวแปรอะเรยที่ใชกําหนดสีจํานวน 8 สีที่เปนสีพื้นฐาน ผูพัฒนาโปรแกรมสามารถเรียกใชตัวแปร color[] หรือเรียกใชชื่อสีตรงๆ ก็ได รูปแบบ
unsigned int color[]= { GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, GLCD_BLACK, GLCD_WHITE, GLCD_SKY, GLCD_MAGENTA}; พารามิเตอร GLCD_RED - ใชกําหนดสีแดง GLCD_GREEN - ใชกําหนดสีเขียว GLCD_BLUE - ใชกําหนดสีนํ้าเงิน GLCD_YELLOW - ใชกําหนดสีเหลือง GLCD_BLACK - ใชกําหนดสีดํา GLCD_WHITE - ใชกําหนดสีขาว GLCD_SKY - ใชกําหนดสีฟา GLCD_MAGENTA - ใชกําหนดสีบานเย็น ตัวอยาง 4 glcdFillScreen(color[5]) // กําหนดใหพืนหลั ้ งเปนสีขาว ตัวอยาง 5 glcdFillScreen(GLCD_BLUE) // กําหนดใหพืนหลั ้ งเปนสีนํ้าเงิน
GLCD-XT 5
4. setTextColor เปนการกําหนดคาสีของตัวอักษรที่แสดงดวยฟงกชั่น glcd() โดยคาตังต ้ นกําหนดเปนสีขาว รูปแบบ
void setTextColor(unsigned int newColor) พารามิเตอร newColor คือสีทีต่ องการ เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ตัวอยางที่ 6 setTextColor(GLCD_YELLOW); // กําหนดใหสีของตัวอักษรเปนสีเหลือง
5. setTextBackgroundColor เปนฟงกชันกํ ่ าหนดสีของพืนหลั ้ งตัวอักษร โดยคาตังต ้ นเปนสีดํา สีของพื้นหลังตัวอักษรจะเปนคนละสวน กับสีของพื้นจอภาพ (screen background) ซึงต ่ องกําหนดคาผานฟงกชั่น glcdFillScreen รูปแบบ
void setTextBackgroundColor(unsigned int newColor) พารามิเตอร newColor คือสีทีต่ องการ เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ตัวอยางที่ 7 setTextBackgroundColor(GLCD_GREEN); // กําหนดใหสีพืนหลั ้ งตัวอักษรเปนสีเขียว
6 GLCD-XT
6. glcdClear เปนการเคลียรหนาจอแสดงผล โดยสีของพืนหลั ้ งจะเปนสีพืนหลั ้ งของตัวอักษรลาสุด โดยถาไมไดกําหนด ดวยคําสั่ง setTextBackGroundColor() มากอนหนานีหลั ้ งจากทําคําสั่ง glcdClear() แลวพื้นหลังจะเปนสีดํา รูปแบบ
void glcdClear() ตัวอยางที่ 8 glcdClear();
// เคลียรหนาจอแสดงผล
7. glcdFillScreen เปนการเคลียรหนาจอแสดงผล แลวเปลียนสี ่ พื้นหลังของจอแสดงผลดวยสีที่ระบุ รูปแบบ
void glcdFillScreen(unsigned int color) พารามิเตอร color คือสีทีต่ องการ เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ตัวอยางที่ 9 glcdFillScreen(GLCD_BLUE); // กําหนดสีพืนหลั ้ งของจอภาพเปนสีนํ้าเงิน
[จอภาพสีดํา]
[จอภาพสีนําเงิ ้ น]
GLCD-XT 7
8. glcdMode เป นการกําหนดทิศทางแสดงผลใหขอความหรือภาพหนาจอหมุนจอภาพใหแสดงภาพตังฉากตรงหน ้ า (โหมด 0), หมุนขวา 90 ศา (โหมด 1), หมุน 180 องศาหรือกลับหัว (โหมด 2) และหมุน 270 องศา (โหมด 3) รูปแบบ
glcdMode(unsigned int modeset) พารามิเตอร modeset คือคาทิศทางของการหมุนมีคา 0 ถึง 3 โดยใชแทนทิศทาง 0 องศา 90 องศา 180 องศา หรือ 270 องศา โดยเมื่อเริมต ่ นคาทิศทางคือ 0 องศา ทํางานอยูในแนวตั้ง
ตัวอยางที่ 10 #include <popxt.h> void setup() { setTextSize(2); } void loop() { glcdClear(); glcdMode(0); glcd(0,0,”POP-BOTXT”); sw_ok_press(); glcdClear(); glcdMode(1); glcd(0,0,”POP-BOTXT”); sw_ok_press(); glcdClear(); glcdMode(2); glcd(0,0,”POP-BOTXT”); sw_ok_press(); glcdClear(); glcdMode(3); glcd(0,0,”POP-BOTXT”); sw_ok_press(); }
// ขนาดตัวอักษร 2 เทา // เคลียรหนาจอ // โหมด 0 องศา // แสดงขอความ // รอกดสวิตชเขาโหมดตอไป
8 GLCD-XT
9. setTextSize เป นการกําหนดขนาดตัวอักษรโดยระบุเปนจํานวนเทาของขนาดปกติ คาตังต ้ นเมื่อเริ่มทํางานทุกครั้งคือ ขนาดตัวอักษรปกติ ใชพื้นทีรวมระยะช ่ องไฟคือ 6x10 พิกเซลตอ 1 ตัวอักษร จึงแสดงได 21 ตัวอักษร 16 บรรทัด ในแนวตั้ง รูปแบบ
setTextSize(unsigned int newSize) พารามิเตอร newSize คือคาขนาดจํานวนเทาของขนาดปกติ มีคา 1 ถึง 16 เพือให ่ ตัวอักษรทีแสดงไม ่ ลนหนาจอ ตัวอยางที่ 11 #include <popxt.h> void setup() { setTextSize(1); // กําหนดขนาดขอความ 1 เทา setTextColor(GLCD_GREEN); // สีตัวอักษรเปนสีเขียว glcd(0,0,"Size1"); // แสดงขอความ setTextSize(2); glcd(1,0,"Size2"); // กําหนดขนาดขอความ 2 เทา setTextSize(3); glcd(2,0,"Size3"); // กําหนดขนาดขอความ 3 เทา setTextSize(4); glcd(3,0,"Size4"); // กําหนดขนาดขอความ 4 เทา } void loop() {}
GLCD-XT 9
10. getTextColor เปนคําสั่งคืนคาสีปจจุบันของตัวอักษร รูปแบบ
unsigned int getTextColor() การคืนคา textColor เปนคาสีแสดงอยูในรูปของตัวเลข 16 บิต ดูรูปแบบไดจากฟงกชัน่ colorRGB() ตัวอยางที่ 12 unsigned int color; color=getTextColor(); // นําคาสีของตัวอักษรเก็บไวทีตั่ วแปร color
11. getTextBackgroundColor เปนคําสั่งคืนคาสีพื้นหลังของตัวอักษรในปจจุบัน รูปแบบ
unsigned int getTextBackgroundColor() การคืนคา textBackgroundColor เปนคาสีแสดงอยูในรูปของตัวเลข 16 บิต ดูรูปแบบไดจากฟงกชัน่ colorRGB() ตัวอยางที่ 13 unsigned int color; color=getTextBackgroundColor(); // นําคาสีพืนหลั ้ งของตัวอักษรเก็บในตัวแปร color
12. getTextSize คืนคาขนาดของตัวอักษรออกมาเปนจํานวนเทาของคาปกติ รูปแบบ
unsigned int getTextSize() การคืนคา textSize เปนคาจํานวนเทาของขนาดตัวอักษร ตัวอยางที่ 14 unsigned int textSize; textSize=getTextSize(); // นําคาจํานวนเทาของขนาดของตัวอักษรเก็บในตัวแปร textSize
10 GLCD-XT
13. glcdGetMode เปนคําสั่งคืนคาของโหมดทิศทางการแสดงผลในปจจุบัน รูปแบบ
unsigned int glcdGetMode() การคืนคา mode เปนคาของโหมดทิศทางการแสดงผล เปนตัวเลข 0 ถึง 3 เพือแสดงผลในทิ ่ ศทาง 0 องศา, หมุน 90 องศา, หมุน 180 องศา และหมุน 270 องศาตามลําดับ ตัวอยางที่ 15 unsigned int Mode; Mode=glcdGetMode(); // คืนคาทิศทางการแสดงผลของหนาจอ GLCD
14. glcdPixel เปนคําสั่งพล็อตจุดบนจอภาพตามพิกัดทีกํ่ าหนด โดยอางอิงจอภาพขนาด 128 x 160 พิกเซล รูปแบบ
void glcdPixel(unsigned int x,unsigned int y,unsigned int color) พารามิเตอร x คือคาพิกัดในแนวนอนหรือแกน x มีคาระหวาง 0 ถึง 127 y คือคาพิกัดในแนวตั้งหรือแกน y มีคาระหวาง 0 ถึง 159 color คือคาของสีทีต่ องการ เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ตัวอยางที่ 16 #include <popxt.h> int i; void setup() { for (i=0;i<128;i+=4) { glcdPixel(i,80,GLCD_RED); // พล็อตจุดทุกๆ 4 พิกเซลในแนวแกน x กลางจอ } for (i=0;i<160;i+=4) { glcdPixel(64,i,GLCD_RED); // พล็อตจุดทุกๆ 4 พิกเซลในแนวแกน y กลางจอ } } void loop() {}
GLCD-XT 11
15. glcdRect เปนฟงกชั่นลากเสนจากพิกัดทีกํ่ าหนดมายังพิกัดปลายทาง รูปแบบ
void glcdRect(unsigned int x1,unsigned int y1,unsigned int width,unsigned int height,unsigned int color) พารามิเตอร x1 คือ คาตําแหนงเริ่มตนของรูปสีเหลี ่ ่ยมในแกน x มีคาระหวาง 0 ถึง 127 y1 คือ คาตําแหนงเริ่มตนของรูปสีเหลี ่ ่ยมในแกน y มีคาระหวาง 0 ถึง 159 width คือ คาความกวางของรูปสีเหลี ่ ่ยม (แนวนอน) มีคาระหวาง 1 ถึง 128 height คือ คาความสูงของรูปสีเหลี ่ ่ยม (แนวตัง)้ มีคาระหวาง 1 ถึง 158 color คือ สีของเสน เปนคาตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ก็ได ตัวอยางที่ 17 #include <popxt.h> void setup() { glcdRect(32,40,64,80,GLCD_RED); // วาดรูปสีเหลี ่ ่ยมเสนสีแดง ขนาด 64 x 80 พิกเซล } void loop() {}
12 GLCD-XT
16. glcdFillRect เปนการระบายสีพื้นของรูปสี่เหลี่ยม โดยกําหนดจุดเริมต ่ นและความกวางยาวของรูปสี่เหลี่ยมที่ตองการ ฟงกชั่นนี้เปนการสรางรูปสี่เหลี่ยมที่มีสีพื้นแตไมมีเสนกรอบ ในขณะที่ฟงกชั่น glcdRect เปนการวาดรูปกรอบสี่ เหลี่ยมที่กําหนดสีของเสนกรอบได แตภายในกรอบไมมีสี รูปแบบ
void glcdFillRect(unsigned int x1, unsigned int y1, unsigned int width, unsigned int height,unsigned int color) พารามิเตอร x1 คือ คาตําแหนงเริ่มตนของรูปสีเหลี ่ ่ยมในแกน x มีคาระหวาง 0 ถึง 127 y1 คือ คาตําแหนงเริ่มตนของรูปสีเหลี ่ ่ยมในแกน y มีคาระหวาง 0 ถึง 159 width คือ คาความกวางของรูปสีเหลี ่ ่ยม (แนวนอน) มีคาระหวาง 1 ถึง 128 height คือ คาความสูงของรูปสีเหลี ่ ่ยม (แนวตัง)้ มีคาระหวาง 1 ถึง 158 color คือ สีของเสน เปนคาตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ก็ได ตัวอยางที่ 18 #include <popxt.h> void setup() { glcdFillRect(32,40,64,80,GLCD_RED); // สรางภาพสีเหลี ่ ่ยมพื้นสีแดง ขนาด 64 x 80 พิกเซล } void loop() {}
GLCD-XT 13
17. glcdLine เปนฟงกชั่นลากเสนจากจุดหนึ่งไปยังอีกจุดหนึ่ง กําหนดเปนพิกัดในแนวแกนนอน (x) และแกนตัง้ (y) รูปแบบ
void glcdLine(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2,unsigned int
color) พารามิเตอร x1 คือคาตําแหนงเริ่มตนของเสนบนแกน x มีคาระหวาง 0 ถึง 127 y1 คือคาตําแหนงเริ่มตนของเสนบนแกน y มีคาระหวาง 0 ถึง 159 x2 คือคาตําแหนงสิ้นสุดของเสนบนแกน x มีคาระหวาง 0 ถึง 127 y2 คือคาตําแหนงสิ้นสุดของเสนบนแกน y มีคาระหวาง 0 ถึง 159 color คือ คาสีของเสน เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ก็ได ตัวอยางที่ 19 #include <popxt.h> void setup() { glcdLine(0,0,127,159,GLCD_RED); // ลากเสนสีแดงทแยงมุมจากดานบนซายลงมาดานลางขวา } void loop() {}
14 GLCD-XT
18. glcdCircle เปนฟงกชั่นวาดเสนรูปวงกลมจากการกําหนดจุดกึงกลางของวงกลมและความยาวของรั ่ ศมี รูปแบบ
void glcdCircle(unsgined int x, unsgined int y, unsgined int radius,unsgined int color) พารามิเตอร x คือ พิกัดจุดศูนยกลางของวงกลมบนแกน x มีคาระหวาง 0 ถึง 127 y คือ พิกัดจุดศูนยกลางของวงกลมบนแกน y มีคาระหวาง 0 ถึง 159 radius คือ คารัศมีของวงกลม color คือ คาสีของเสน เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ก็ได ตัวอยางที่ 20 #include <popxt.h> void setup() { glcdCircle(32,120,31,GLCD_MAGENTA); // สรางเสนวงกลมสีบานเย็น มีรัศมี 31 พิกเซล } void loop() {}
GLCD-XT 15
19. glcdFillCircle เปนฟงกชันวาดรู ่ ปวงกลมทีมี่ สีพืนจากการกํ ้ าหนดจุดศูนยกลางของวงกลมและความยาวของรัศมี ฟงกชัน่ นีเป ้ นการสรางรูปวงกลมที่มีสีพื้นแตไมมีเสนกรอบ ในขณะที่ฟงกชั่น glcdCircle เปนการวาดรูปวงกลมที่กําหนด สีของเสนรอบวงได แตภายในวงกลมไมมีสี รูปแบบ
void glcdFillCircle(unsigned int x,unsigned int y,unsigned int radius,unsigned int color) พารามิเตอร x คือ พิกัดจุดศูนยกลางของวงกลมบนแกน x มีคาระหวาง 0 ถึง 127 y คือ พิกัดจุดศูนยกลางของวงกลมบนแกน y มีคาระหวาง 0 ถึง 159 radius คือ คารัศมีของวงกลม color คือ คาสีของพืนวงกลม ้ เปนตัวเลข 16 บิต หรือเปนคาตัวแปรทีกํ่ าหนดคาไวแลวจากตัวแปร color[] ตัวอยางที่ 21 #include <popxt.h> void setup() { glcdFillCircle(32,120,31,GLCD_MAGENTA); // สรางรูปวงกลมพื้นสีบานเย็น รัศมี 31 พิกเซล } void loop() {}
16 GLCD-XT
20. glcdArc เปนฟงกชั่นวาดสวนโคงของวงกลม โดยระบุตําแหนงจุดกึ่งกลาง รัศมี ตําแหนงจุดเริม่ จุดสินสุ ้ ดและสี ของเสน รูปแบบ
void glcdArc(unsigned int x,unsigned int y,unsigned int r,int start_angle,int end_angle,uint color) พารามิเตอร x คือตําแหนงจุดกึ่งกลางในแนวแกน x y คือตําแหนงจุดกึ่งกลางในแนวแกน y r คือรัศมีของเสนโคง start_angle คือตําแหนงมุมของจุดเริ่มตนของวงกลม end_angle คือตําแหนงมุมจุดสิ้นสุดของวงกลม color คือสีของเสนวงกลม ตัวอยางที่ 22 #include <popxt.h> void setup() { glcdArc(48,80,16,30,150,GLCD_RED); glcdCircle(48,75,5,GLCD_BLUE); glcdCircle(80,75,5,GLCD_BLUE); glcdArc(80,80,16,30,150,GLCD_RED); glcdFillCircle(64,90,7,GLCD_GREEN); glcdArc(64,100,30,220,320,GLCD_RED); } void loop() {}