The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

IPST-MicoBOX (SE) Starter Manual
คู่ มือเริ่มต้นใช้งานกล่องสมองกล IPST-MicroBOX (SE) กับ Arduino IDE

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Kritsada Jaiyen, 2021-04-25 06:20:25

คู่มือเริ่มต้นใช้งานกล่องสมองกล IPST-MicroBOX SE

IPST-MicoBOX (SE) Starter Manual
คู่ มือเริ่มต้นใช้งานกล่องสมองกล IPST-MicroBOX (SE) กับ Arduino IDE

Keywords: IPST-SE,inex,Arduino

     Arduino IDE51

3.9 ตาํ แหนงการเกบ็ ไฟลสเก็ตชของ Arduino IDE

ผพู ฒั นาโปรแกรมบนั ทกึ ไฟลส เกต็ ชไ วท ใี่ ดในพน้ื ทจ่ี ดั เกบ็ แฟม ขอ มลู ของคอมพวิ เตอรก ไ็ ด แต
เพอ่ื อาํ นวยความสะดวกและจดจาํ งา ย Arduino IDE จงึ กาํ หนดคา ตงั้ ตน (default) ของตาํ แหนง จดั เกบ็
โฟลเดอรของไฟลสเก็ตชที่พัฒนาขึ้นไวท่ี C:\Documents and Settings\Admin (หรือช่ือผูใช) \My
Documents\Arduino สามารถตรวจสอบรวมถงึ กาํ หนดตาํ แหนง ใหมไ ดโดยไปทเ่ี มนูFile> Preference

จะปรากฏหนาตาง Preference ข้ึนมาดังรปู หากตองการเปลีย่ นแปลงตําแหนง โฟลเดอรท ี่จดั
เกบ็ ไฟลส เกต็ ชท ชี่ อ ง Sketchbook location โดยใชเ มาสค ลกิ ทปี่ มุ คน หาทางดา นขวามอื หรอื จะพมิ พ
ตําแหนงลงไปในชอง Sketchbook location โดยตรงกไ็ ด จากน้ันคลิกปุม OK เพอ่ื ตอบตกลงและ
ยืนยันการเปลี่ยนแปลง

สว นพารามเิ ตอรห รอื ขอ กาํ หนดอน่ื ๆ แนะนาํ ใหใ ชต ามคา ทก่ี าํ หนดมา ทง้ั นเ้ี พอ่ื ลดขน้ั ตอนการ
พฒั นาโปรแกรมและความผิดพลาดทอ่ี าจเกิดขน้ึ ไดส ําหรบั นกั พฒั นาโปรแกรมมอื ใหมห รอื ผูเ รม่ิ ตน

52      Arduino IDE

    Arduino IDE53

 

   

หลังจากการแนะนําข้ันตอนแนวทางการพัฒนาโปรแกรมภาษา C/C++ ดวยซอฟตแวร
Arduino IDE 1.7.10 ไปแลวในบทที่ 3 เพ่ือใหการเรียนรูเปนไปอยางตอเนื่อง ในบทนี้จึงนําเสนอ
ตวั อยา งการทดสอบการทาํ งานในสว นตา งๆ ทสี่ าํ คญั ของแผงวงจร IPST-SE อนั เปน แผงวงจรควบคมุ
หลักของชุดกลองสมองกล IPST-MicroBOX (SE) เพ่ือเปนแนวทางในการตอยอดสูการพัฒนา
โปรแกรมเพอื่ สรางโครงงานและหุน ยนตอตั โนมัติอยางเต็มรูปแบบตอไป

หวั ขอ กิจกรรมสําหรบั ทดสอบเบอ้ื งตน มที ัง้ ส้ิน 4 กิจกรรม ประกอบดวย

กิจกรรมที่ 1 แสดงผลขอความทหี่ นา จอภาพกราฟก LCD (มกี ิจกรรมยอย 5 กิจกรรม)

กิจกรรมที่ 2 อานคา จากปมุ KNOB และสวิตช OK บนแผงวงจร IPST-SE

กิจกรรมท่ี 3 ขับอปุ กรณเอาตพตุ อยางงา ย

กิจกรรมที่ 4 ขับเสียงออกลําโพงเปย โซ

ขั้นตอนการพฒั นาโปรแกรมในแตล ะกิจกรรมจะเหมือนกนั นน่ั คือ เปดซอฟตแวร Arduino
IDE 1.7.10 ทาํ การเขยี นโปรแกรม คอมไพล และอปั โหลดลงบนแผงวงจร IPST-SE ของชดุ กลอ งสมอง
กล IPST-MicroBOX (SE) จากนั้นทดสอบการทาํ งาน

สงิ่ สาํ คญั ทตี่ อ งเนน ยาํ้ คอื ทกุ ครงั้ ทเ่ี ปด สวติ ชจ า ยไฟแกแ ผงวงจร IPST-SE ตอ งรอ
ใหตวั ควบคมุ พรอมทํางานเสียกอน ซึง่ ใชเ วลาประมาณ 3 ถึง 5 วินาทหี ลงั จากเปด
ไฟเลี้ยงหรือหลงั จากการกดสวิตช RESET หากมีการอปั โหลดกอนทแ่ี ผงวงจร IPST-SEจะ

พรอ มทาํ งาน อาจทาํ ใหเกิดความผิดพลาดในการเช่ือมตอ หรอื โคดทอ่ี ปั โหลดลงไปไมท ํางานตามที่
ควรจะเปน แตจะไมส ง ผลจนทําใหแผงวงจรเกิดความเสียหาย สิ่งที่เกิดขึ้นมเี พยี งแผงวงจรไมทํางาน
หรอื ทํางานไมถกู ตองเทา นน้ั

54      Arduino IDE

   

  

(A1.1.1) เปดซอฟตแ วร Arduino IDE 1.7.10 พิมพโปรแกรมท่ี A1-1 แลว บันทกึ ไฟล
(A1.1.2) เปดสวติ ชจ า ยไฟแกแผงวงจร IPST-SE แลว เชอ่ื มตอ สาย USB เขากบั คอมพิวเตอร

2   

1    3

28 A4 25 A1 USB 8 SCL 9 SDA  
29 A5 26 A2 D
24 A0 30 A6 27 A3 ON
000000000000000000000
 KNOB 000000000000000000000 DC MOTOR G
4   OK 000000000000000000000 6V
SW1 000000000000000000000 15 SV0 14 SV1 13 SV2 12 SV312
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000 SERVO
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

(A1.1.3) เลือกชนิดหรือรุนของฮารดแวรใหถูกตอง โดยเลอื กท่เี มนู Tools > Board > IPST-SE >
ATmega644P @16MHz ดงั รูป

     Arduino IDE55

#include <ipst.h> // ผนวกไลบรารหี ลกั
void setup() // แสดงขอ ความบนจอแสดงผล
{
glcd(1,0,"Hello World");
}
void loop()
{}
คําอธิบายโปรแกรม

โปรแกรมน้ีจะทาํ งานโดยสงขอ ความ Hello World ออกไปแสดงผลทบ่ี รรทดั 1 คอลัมน 0 ของจอ
แสดงผล จะทาํ งานเพยี งครงั้ เดยี ว จงึ เขียนโปรแกรมไวทตี่ ําแหนงของ void setup() เทานั้น

โปรแกรมที่ A1-1 ไฟล microbox_HelloGLCD.ino สาํ หรบั ทดสอบการแสดงผลของแผงวงจร IPST-SE

(A1.1.4) เลอื กพอรตสําหรับตดิ ตอ กบั แผงวงจร IPST-SE โดยเลอื กทเี่ มนู Tools > Serial Port ดงั รูป
(ตาํ แหนง ของพอรต ทใี่ ชเ ชอ่ื มตอ อาจแตกตา งกนั ในคอมพวิ เตอรแ ตล ะเครอ่ื ง)

(A1.1.5) คอมไพลแ ละอปั โหลดโปรแกรมไปยงั แผงวงจร IPST-SE โดยคลกิ ทป่ี มุ หรอื เลอื กทเ่ี มนู
File > Upload to Wiring Hardware

ทห่ี นา จอแสดงผลกราฟก LCD ของแผงวงจร IPST-SE แสดงขอความ Hello World

28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
24 A0 30 A6 27 A3
D
KNOB DC MOTOR ON
OK Hello0World0000000000
SW1 15 SV0 14 SV1 13 SV2 12 SV3 G
000000000000000000000 6V
000000000000000000000 12
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

56      Arduino IDE

   

จอแสดงผลของแผงวงจร IPST-SE มขี นาด 128 x 160 พิกเซล แสดงตวั อกั ษรความละเอยี ด
5 x 7 จดุ จาํ นวน 21 ตวั อักษร 16 บรรทัด ผใู ชง านสามารถระบุตาํ แหนงบรรทดั และตาํ แหนง คอลมั น
ทต่ี อ งการแสดงผลได โดยกําหนดผา นคาํ สงั่ glcd ซง่ึ มอี ยใู นไฟลไ ลบรารี ipst.h

นอกจากน้ันคําสงั่ glcd ยงั มอี กั ขระพเิ ศษเพ่ือระบุตาํ แหนง แทนการใชคา ตวั เลข ดงั แสดงใน
โปรแกรมที่ A1-2

#include <ipst.h> // ผนวกไฟลไ ลบรารหี ลกั

int i,j;

void setup()

{

glcdFillScreen(GLCD_WHITE); // กาํ หนดใหส ีของพนื้ หลงั ของจอแสดงผลเปน สขี าว

setTextColor(GLCD_BLACK); // กาํ หนดสีตัวอักษรเปน สดี าํ

setTextBackgroundColor(GLCD_WHITE); // กาํ หนดสพี นื้ หลงั ของตวั อกั ษรเปน สขี าว

for (i=0;i<16;i++) // วนลปู 16 รอบเพื่อแสดงขอ ความ

{

glcd(i,i,"Row %d ",i); // แสดงขอ ความที่จอแสดงผล

}

}

void loop()

{}

คําอธิบายโปรแกรม

ในโปรแกรมนี้เพมิ่ เติมคําสั่งสําหรับการใชงานจอแสดงผลอีก 3 คาํ สั่งคอื

1. glcdFillScreen เปนคาํ ส่ังกาํ หนดสีพื้นหลังของจอแสดงผล

2. setTextColor สําหรับกําหนดสีใหแ กตัวอักษร

3. setTextBackground สําหรับกําหนดสีพื้นหลังของตัวอกั ษร

เมื่อตั้งคา ของจอแสดงผลแลว จงึ ทาํ การสงขอ ความ Row ตามดว ยหมายเลขบรรทดั ซ่ึงมาจากการ
เพม่ิ คา ของตวั แปร i และมกี ารเลอ่ื นตาํ แหนง ตามคา ของ i ดว ย ดงั นน้ั ทบ่ี รรทดั แรก ขอ ความ Row0 ถกู แสดง
ทค่ี อลัมน 0 ทบ่ี รรทดั 2 แสดงขอความ Row 1 ทคี่ อลัมน 1 ไลไปตามลําดบั จนถงึ บรรทัด 15 (บรรทัดท่ี 16)
จะแสดงเปน Row 15 ทคี่ อลัมน 15

โปรแกรมที่A1-2ไฟลmicrobox_GLCDmultipleLine.inoสาํ หรบั ทดสอบการแสดงผลของแผงวงจรIPST-SE

      Arduino IDE57

(A1.2.1) เปดซอฟตแ วร Arduino IDE 1.7.10 พิมพโปรแกรมที่ A1-2 แลวบันทกึ ไฟล
(A1.2.2) เปดสวติ ชจ า ยไฟแกแ ผงวงจร IPST-SE แลว เชอ่ื มตอ สาย USB เขากบั คอมพิวเตอร

(A1.2.3) คอมไพลแ ละอปั โหลดโปรแกรมไปยงั แผงวงจร IPST-SE โดยคลกิ ทปี่ มุ หรอื เลอื กทเี่ มนู
File > Upload to Wiring Hardware

ทหี่ นา จอแสดงผลกราฟก LCD ของแผงวงจร IPST-SE แสดงขอความ Row 0 ถงึ Row 15
เรียงไปบรรทัดละขอความ

28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
24 A0 30 A6 27 A3
D
KNOB DC MOTOR ON
Rowl00World0000000000
OK 0Row01000000000000000 15 SV0 14 SV1 13 SV2 12 SV3 G
00Row0200000000000000 6V
SW1 000Row030000000000000 12
0000Row04000000000000 G
00000Row0500000000000 6V
000000R00060000000000 13
0000000R0007000000000 G
00000000Row0800000000 6V
000000000Row090000000 14
0000000000Row01000000 G
00000000000Row0110000 6V
000000000000Row012000 15
0000000000000Row01300
00000000000000Row0140 SERVO
000000000000000Row015

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

58     Arduino IDE

  

ขนาดตวั อกั ษรปกตทิ แี่ สดงบนจอแสดงผลของแผงวงจร IPST-SE เมอ่ื เรม่ิ ตน ทาํ งานเปน ขนาด
เลก็ สุด ใชจาํ นวนจดุ ตอ ตัวอักษรคือ 6 x 10 จดุ (อกั ษรจริงมขี นาด 5 x 7 จดุ ) ถา ตอ งการปรับขนาด
ตวั อกั ษรใหใ หญขนึ้ จะมคี าํ สง่ั setTextSize ไวส าํ หรับปรบั ขนาด โดยคา ท่ีกําหนดจะเปน จํานวนเทา
ของตัวอักษรปกติ เชน

setTextSize(2) หมายถงึ ขนาดตวั อกั ษรใหญข ้ึนเปน 2 เทา ใช 12 x 20 พิกเซลตอ 1
ตัวอักษร

setTextSize(3) หมายถงึ ขนาดตวั อกั ษรใหญข ้ึนเปน 3 เทา ใช 18 x 30 พิกเซลตอ 1
ตัวอกั ษร

เมอื่ ปรับขนาดตวั อักษรมีขนาดใหญขึ้น จาํ นวนตวั อกั ษรตอบรรทดั กต็ อ งลดลง จากเดมิ 21
ตวั อกั ษร 16 บรรทดั เม่อื ขนาดของตวั อักษรเพิ่มข้ึนเปนสองเทา กจ็ ะทาํ ใหแ สดงได 10 ตวั อักษร 8
บรรทดั แทน ดงั นนั้ เมอื่ เขียนโปรแกรมจะตอ งคาํ นงึ ถึงคาเหลา นด้ี ว ย

#include <ipst.h> // หากสขี องการแสดงผลผดิ ใหเ ปด ใชฟง กช ั่นนี้
int x,m; // กาํ หนดสตี ัวอักษรเปน สแี ดง
void setup()
{ // กาํ หนดขนาดตัวอกั ษร

//glcdSetColorWordRGB(); // เคลยี รห นาจอ
setTextColor(GLCD_RED); // กาํ หนดทศิ ทาง
} // แสดงขนาดตวั อกั ษร
void loop() // แสดงโหมดทศิ ทาง
{
for (x=1;x<6;x++)
{

setTextSize(x);
for(m=0;m<4;m++)
{

glcdClear();
glcdMode(m);
glcd(0,0,"%dX",x);
glcd(1,0,"M=%d",m);
sleep(500);
}
}
}

โปรแกรมที่ A1-3 ไฟล microbox_GLCDtextFlip.ino สาํ หรบั ทดสอบการเพมิ่ ขนาดตวั อกั ษรในการแสดงผล
และการเปลยี่ นทิศทางของการแสดงผลของแผงวงจร IPST-SE

     Arduino IDE59

นอกจากขนาดตวั อกั ษรแลว ยงั กําหนดทศิ ทางการแสดงผลของจอแสดงผลได โดยใชค าํ สง่ั
glcdMode() โดยมคี า ตง้ั ตน คอื โหมด 0 (glcdMode(0)) นน่ั คอื แสดงผลในแนวตงั้ สาํ หรับอกี 3
โหมดคอื โหมด 1, 2 และ 3 ใชปรบั ใหก ารแสดงผลหมถนไปโหมดละ 90 องศา นน่ั คือ โหมด 1 หมุน
ไป 90 องศา, โหมด 2 หมุนไป 180 องศา และโหมด 3 หมุนไป 270 องศา

(A1.3.1) เปดซอฟตแ วร Aruino IDE 1.7.10 พิมพโปรแกรมท่ี A1-3 แลวบันทกึ ไฟล

(A1.3.2) เปดสวติ ชจ า ยไฟแกแ ผงวงจร IPST-SE แลว เชอ่ื มตอ สาย USB เขากับคอมพิวเตอร

(A1.3.3) คอมไพลแ ละอปั โหลดโปรแกรมไปยงั แผงวงจร IPST-SE โดยคลกิ ทปี่ มุ หรอื เลอื กทเ่ี มนู

File > Upload to Wiring Hardware

ทห่ี นา จอแสดงผลของแผงวงจร IPST-SE แสดงขอ ความแจง ขนาดของตวั อกั ษรและโหมดการ
แสดงผลในทศิ ทางทต่ี า งกนั เรม่ิ จากมมุ บนซา ย, มมุ บนขวา, มมุ ลา งขวา และมมุ ลา งซา ย โดยรอบการ
แสดงผลจะเรม่ิ จาก 1X, 2X, 3X , 4X และ 5X แตล ะรอบมกี ารแสดงผล 4 ทศิ ทาง โดยดจู ากคา M

M = 0 จอแสดงขอ ความแนวตงั้ M = 1 หมุนการแสดงผลไป 90 องศาทางขวา
ตวั อกั ษรขนาด 3 เทา ตวั อกั ษรขนาด 4 เทา

M = 2 หมุนการการแสดงผลไป 180 องศา M = 3 หมนุ การแสดงผลไป 270 องศา

จะไดภาพที่กลบั หวั เม่ือเทยี บกบั M = 0 ตวั อกั ษรขนาด 5 เทา

ตวั อกั ษรขนาด 4 เทา

60     Arduino IDE

   

ฟง กช น่ั glcd เปน ฟง กช น่ั หลกั ในการตดิ ตอ กบั จอแสดงผลกราฟก LCD นอกจากมคี าํ สง่ั แสดง
ขอความแลว ยงั มคี าํ สง่ั ในการวาดลายเสน กราฟก อกี หลายคาํ สง่ั ประกอบดวย

glcdRect(int x1,int y1,int width,int height,uint color) เปน คาํ สง่ั สรา ง
รูปส่ีเหลย่ี ม

glcdFillRect(int x1,int y1,int width,int height,uint color) เปน คาํ สง่ั
สรา งพนื้ สเี่ หลยี่ ม

glcdLine(int x1, int y1, int x2, int y2,uint color) เปนคาํ สงั่ ลากเสน

glcdCircle(int x, int y, int radius,uint color) เปน คําสง่ั วาดเสนวงกลม

glcdFillCircle(int x, int y, int radius,uint color) เปน คาํ สง่ั สรา งพื้นท่ี
วงกลม

glcdClear(uint color) เปนการเคลยี รหนาจอแสดงผล

โดยทดสอบเขียนโปรแกรมไดด งั โปรแกรมท่ี A1-4 แลว อปั โหลดเพ่ือทดสอบการทาํ งานไปยงั
แผงวงจร IPST-SE จะไดผ ลดงั รูป

ถา หากสขี องการแสดงผลไมถ กู ตอ ง อาจเกดิ จากรุนของจอแสดงผลเนอ่ื งจากจอภาพแบบนี้
มี 2 รุน มกี ารเรียงขอมูลทสี่ รางสีแตกตางกนั เลก็ นอ ย ทางแกไ ขคือ นาํ เครื่องหมาย // ทห่ี นา ฟงกชนั่
glcdSetColorWordRGB(); ออก เพื่อเปล่ียนรูปแบบการเรียงขอ มลู สี

     Arduino IDE61

#include <ipst.h> // ผนวกไฟลไลบรารหี ลกั
int i,j;
void setup() // หากสขี องการแสดงผลผดิ ใหเ ปด ใชฟง กช ั่นน้ี
{
// เคลยี รหนาจอและพ้ืนหลงั เปน สดี าํ
//glcdSetColorWordRGB();
} // วาดเสนสขี าวจากพิกดั 0,0 ไปยงั จุดทกี่ าํ หนด
void loop()
{ // วาดเสน สแี ดงจากพกิ ดั 0,0 ไปยงั จุดทก่ี าํ หนด

glcdClear; // วาดเสนกรอบสเี่ หลยี่ มสีนํ้าเงนิ
sleep(300); // สรา งวงกลมพน้ื สเี ขยี ว
for (i=0;i<160;i+=4) // สรา งวงกลมพนื้ สเี หลอื ง
{ // สรา งวงกลมพนื้ สบี านเยน็
// สรา งวงกลมพน้ื สฟี า
glcdLine(0,0,128,i,GLCD_WHITE); // วาดเสนรอบวงกลมสเี ขยี ว
} // วาดเสน รอบวงกลมสีน้ําเงนิ
for (i=0;i<128;i+=4) // วาดเสน รอบวงกลมสีเหลอื ง
{ // วาดเสน รอบวงกลมเสนสฟี า
// สรา งรปู สเ่ี หลย่ี มสเี หลอื ง
glcdLine(0,0,i,160,GLCD_RED);
}
delay(2000);
glcdRect(32,40,64,80,GLCD_BLUE);
delay(300);
glcdFillCircle(32,40,31,GLCD_GREEN);
glcdFillCircle(96,40,31,GLCD_YELLOW);
glcdFillCircle(32,120,31,GLCD_MAGENTA);
glcdFillCircle(96,120,31,GLCD_SKY);
delay(1000);
glcdCircle(64,40,31,GLCD_GREEN);
glcdCircle(32,80,31,GLCD_BLUE);
glcdCircle(64,120,31,GLCD_YELLOW);
glcdCircle(96,80,31,GLCD_SKY);
delay(1000);
glcdFillRect(0,0,128,160,GLCD_YELLOW);
delay(1000);
}

โปรแกรมท่ีA1-4ไฟลmicrobox_GLCDsimpleGraphic.inoสาํ หรบั ทดสอบการแสดงผลของแผงวงจรIPST-SE

62     Arduino IDE



นอกจากวงกลมและสเ่ี หลยี่ มแลว เสน โคง กเ็ ปนสว นประกอบสาํ คญั ในการสรา งภาพกราฟก
ในชดุ คาํ สง่ั เก่ียวกบั การแสดงผลจอภาพแบบกราฟกสขี องแผงวงจร IPST-SE ยังมคี าํ สงั่ glcdArc()
สาํ หรบั สรา งเสน โคง โดยมพี ารามเิ ตอรห รอื ตวั แปรทต่ี อ งกาํ หนดอยพู อสมควร ดรู ายละเอยี ดเพม่ิ เตมิ
ในบทท่ี 6 เกย่ี วกบั การใชง านจอแสดงผลแบบกราฟก LCD สีตวั น้ี

(A1.5.1) เปดซอฟตแ วร Aruino IDE 1.7.10 พิมพโปรแกรมที่ A1-5 แลวบันทกึ ไฟล

(A1.5.2) เปดสวติ ชจ า ยไฟแกแ ผงวงจร IPST-SE แลว เชอื่ มตอ สาย USB เขากับคอมพิวเตอร

#include <ipst.h>

int i;

// ฟง กช ั่นสรางรปู หนา ยม้ิ

void face()

{

glcdFillCircle(64,70,50,GLCD_WHITE);

glcdArc(48,60,16,30,150,GLCD_RED);

glcdCircle(48,55,5,GLCD_BLUE);

glcdCircle(80,55,5,GLCD_BLUE);

glcdArc(80,60,16,30,150,GLCD_RED);

glcdFillCircle(64,70,7,GLCD_YELLOW);

glcdArc(64,80,30,220,320,GLCD_RED);

glcdArc(64,80,29,220,320,GLCD_RED);
}
void setup()
{

//glcdSetColorWordRGB(); // หากสขี องการแสดงผลผดิ ใหเ ปด ใชฟง กช ั่นน้ี

}
void loop()
{

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

glcdClear();
glcdMode(i); // สงั่ หมนุ การแสดงผล

face();
sleep(1000);
}
}

โปรแกรมท่ีA1-5ไฟลmicrobbox_GLCDarcTest.inoสาํ หรบั ทดสอบการวาดเสน โคง ของแผงวงจรIPST-SE

     Arduino IDE63

(A1.5.3) คอมไพลแ ละอปั โหลดโปรแกรมไปยงั แผงวงจร IPST-SE โดยคลกิ ทป่ี มุ หรอื เลอื กทเี่ มนู
File > Upload to Wiring Hardware

(A1.5.4) รันโปรแกรม ดผู ลการทาํ งานทจ่ี อแสดงผลของแผงวงจร IPST-SE

ทจ่ี อแสดงผลแสดงเปนรูปการตนู หนา ยม้ิ นาน 1 วนิ าที แลวหมนุ ไปครั้งละ 90 องศา แลววน
กลบั มาท่หี นา เรม่ิ ตน จะวนแสดงผลไปตลอดเวลา

64      Arduino IDE

       

ในระบบควบคมุ พน้ื ฐานจะตอ งมกี ารปรบั ตงั้ คา มเี มนู มสี วติ ชใ นการสง่ั งานตา งๆ บนแผงวงจร
IPST-SE กม็ สี วนตดิ ตตอ กับผูใ ชง านดว ยเชน กัน ประกอบดว ยปุม KNOB สําหรับปรับเลือกรายการ
และสวติ ช OK กับ SW1 สาํ หรับยืนยนั การเขาสรู ายการทางเลอื กนน้ั ๆ

   28 A4 25 A1 8 SCL 9 SDA
   29 A5 26 A2 USB
24 A0   30 A6 27 A3
 D
DC MOTOR ON
KNOB Hello0World0000000000
15 SV0 14 SV1 13 SV2 12 SV3 G
OK 000000000000000000000 6V
000000000000000000000 12
SW1 000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

เขียนโปรแกรมท่ี A2-1 แลวบันทกึ ไฟลช อื่ microbox_KnobSwitchTest.ino ทาํ การคอมไพล
และอปั โหลดไปยงั แผงวงจร IPST-SE แลว รันโปรแกรมทดสอบการทาํ งาน

เมอ่ื โปรแกรมเร่ิมทาํ งาน ทห่ี นา จอแสดงผลของแผงวงจร IPST-SE แสดงขอความ

Press OK (ขนาดตวั อกั ษรใหญข นาด 2x)

ใหก ดสวติ ช OK เพอื่ ทาํ งานตอ
หนาจอแสดงรปู วงกลมสีเหลอื ง 1 วนิ าที จากนนั้ แสดงขอความ

Knob value (ขนาดตวั อกั ษรใหญข นาด 2x)

XXXX (ขนาดตวั อกั ษรใหญข ้ึนเปนขนาด 3x)
โดยท่ี xxxx มคี า ไดต ง้ั แต 94 ถึง 1023
ทดลองปรับปุม KNOB บนแผงวงจร IPST-SE
คา ของ Knob ทจ่ี อแสดงผลจะตอ งเปล่ียนแปลงตามการปรับทป่ี ุม KNOB
จากน้นั กดสวติ ช OK แลวปลอย
หนา จอแสดงรปู วงกลมสเี ขยี ว 1 วนิ าที แลว กลบั ไปแสดงขอ ความและคา ของ KNOB

    Arduino IDE65

ทดลองกดสวติ ช SW1 แลวปลอย
หนาจอแสดงรปู วงกลมสีแดง 1 วนิ าที แลวกลบั ไปแสดงขอ ความและคา ของ KNOB

#include <ipst.h> // ผนวกไฟลไ ลบรารหี ลกั
void setup()
{
//glcdSetColorWordRGB(); // หากสขี องการแสดงผลผดิ ใหใ ชฟง กช ่ันนี้
glcdClear(); // เคลยี รหนาจอแสดงผล กาํ หนดพนื้ หลงั เปน สดี าํ
setTextSize(2); // เลอื กขนาดตัวอักษรใหญเ ปน 2 เทา จากขนาดปกติ
glcd(1,1,"Press OK"); // แสดงขอ ความออกหนา จอแสดงผล
sw_OK_press(); // วนรอจนกระทงั่ กดสวติ ช OK
glcdClear(); // เคลยี รหนาจอแสดงผล กาํ หนดพน้ื หลงั เปนสดี าํ
glcdFillCircle(64,70,50,GLCD_YELLOW); // วาดวงกลมสเี หลอื ง
delay(1000); // แสดงผลวงกลมสเี หลอื ง 1 วนิ าที
glcdClear(); // เคลยี รหนาจอแสดงผล กาํ หนดพน้ื หลงั เปน สดี าํ
}
void loop()
{
if (sw_OK()) // ตรวจสอบการกดสวติ ช OK
{
glcdClear(); // เคลยี รห นาจอแสดงผล กาํ หนดพนื้ หลงั เปนสดี าํ
glcdFillCircle(64,70,50,GLCD_GREEN); // วาดวงกลมสเี ขยี ว
delay(1000); // แสดงผลวงกลมสเี ขยี ว 1 วนิ าที
glcdClear(); // เคลยี รหนาจอแสดงผล กาํ หนดพน้ื หลงั เปน สดี าํ
}
if(sw1()) // ตรวจสอบสวติ ช SW1 วา มีการกดหรอื ไม
{
glcdClear(); // เคลยี รห นาจอแสดงผล กาํ หนดพน้ื หลงั เปน สดี าํ
glcdFillCircle(64,70,50,GLCD_RED); // วาดวงกลมสีแดง
delay(1000); // แสดงผลวงกลมสแี ดง 1 วนิ าที
glcdClear(); // เคลยี รห นาจอแสดงผล กาํ หนดพนื้ หลงั เปน สดี าํ
}
glcd(1,0,"Knob value"); // แสดงขอ ความที่จอแสดงผล
setTextSize(3); // เลอื กขนาดตัวอกั ษรใหญเ ปน 3 เทา จากขนาดปกติ
glcd(2,2,"%d ",knob()); // แสดงคา ท่ีอา นไดจ ากการปรับปุม KNOB ทห่ี นาจอแสดงผล
setTextSize(2); // เลอื กขนาดตัวอักษรใหญเปน 2 เทา จากขนาดปกติ
}

โปรแกรมท่ี A2-1 ไฟล microbox_KnobSwitchTest.ino สาํ หรบั ทดสอบอา นคาจากปุม KNOB, สวติ ช OK
และ SW1

66      Arduino IDE

      

ในไฟลไลบรารี ipst.h มีคําส่ัง out(int num,int _dat) ซงึ่ ชวยใหส ามารถสงลอจกิ
“0” หรอื “1” ออกไปยงั ขาพอรต ทต่ี อ งการได ทาํ ใหน าํ แผงวงจร IPST-SE ไปใชข บั อปุ กรณเ อาตพ ตุ พนื้
ฐานไดง ายขึ้น ยกตวั อยางงายท่ีสดุ คอื ไดโอดเปลงแสงหรือ LED

ในกจิ กรรมนจี้ งึ นาํ แผงวงจร ZX-LED อนั เปนแผงวงจร LED แสดงผลแบบเดยี่ วทจ่ี ะตดิ สวา ง
เมอ่ื ไดร ับลอจกิ “1” และดบั ลงเมอ่ื ไดร ับลอจกิ “0” มาตอ กับแผงวงจร IPST-SE เพ่ือทดลองใชง าน

(A3.1) นาํ ZX-LED ชดุ ท่ี 1 ตอ เขากบั จดุ ตอ พอรต 17 และชดุ ท่ี 2 ตอ กบั จดุ ตอ พอรต 18

28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
24 A0 30 A6 27 A3
D
KNOB DC MOTOR ON
Hello0World0000000000
OK 15 SV0 14 SV1 13 SV2 12 SV3 G
000000000000000000000 6V
SW1 000000000000000000000 12
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

  ZX-LED LED
510
+ KRC102

ZX-LEDS
S
LED

510

KRC102

+

 

     Arduino IDE67

#include <ipst.h> // ผนวกไฟลไลบรารหี ลกั
void setup()
{ // เลอื กขนาดตัวอกั ษรใหญเปน 2 เทา จากขนาดปกติ
// แสดงขอ ความออกหนาจอ GLCD
setTextSize(2); // วนรอการกดสวติ ช OK
glcd(1,1,"Press OK");
sw_ok_press(); // ทาํ ให LED ทตี่ ออยกู บั พอรต 17 ติดสวา ง
} // ทาํ ให LED ทตี่ ออยกู บั พอรต 18 ดบั
void loop() // ทาํ ให LED ทต่ี ออยกู บั พอรต 17 ดบั
{ // ทาํ ให LED ทต่ี ออยกู บั พอรต 18 ติดสวา ง
out(17,1);
out(18,0);
sleep(400);
out(17,0);
out(18,1);
delay(400);
}

โปรแกรมท่ี A3-1 ไฟล microbox_LEDtest.ino สาํ หรบั ทดสอบการขบั อปุ กรณเ อาตพ ตุ อยา งงา ย

(A3..2) เขียนโปรแกรมท่ี A3-1 บันทกึ ไฟลช อื่ microbox_LEDtest.ino

(A3.3) เปด สวติ ชจ า ยไฟแกแ ผงวงจร IPST-SE จากนน้ั ทาํ การคอมไพลแ ละอปั โหลดโปรแกรมไปยงั แผง
วงจร IPST-SE

(A3.4) รันโปรแกรม สังเกตการทาํ งานของ ZX-LED

เมอื่ รันโปรแกรม ทห่ี นา จอแสดงผลของแผงวงจร IPST-SE แสดงขอความ

Press OK

ใหก ดสวติ ช OK เพื่อเร่ิมการทาํ งาน จะเหน็ LED บนแผงวงจร ZX-LED ทง้ั สองชดุ ตดิ และ
ดับสลับกันไปอยางตอเน่ือง

68     Arduino IDE

  

ในชดุ กลอ งสมองกล IPST-MicfoBOX (SE) มแี ผงวงจรขบั เสยี งโดยใชล าํ โพง
เปยโซ (ZX-SPEAKER) โดยตวั ลาํ โพงเปยโซขนาดเลก็ นต้ี อบสนองความถ่เี สียงใน
ชว งความถปี่ ระมาณ 300 ถึง 3,000Hz ในการเขียนโปรแกรมเพ่ือสงั่ งานแผงวงจร
IPST-SE ใหข ับเสียงออกทางแผงวงจร ZX-SPEAKER นท้ี าํ ไดโ ดยใชค าํ สง่ั beep()
และ sound()

ในโปรแกรมท่ี A4-1 เปนตวั อยางการใชค าํ สงั่ beep() เพ่ือขับเสียง “ตดิ้ ” ความถเี่ ดยี วออก
ทางลําโพงทกุ ๆ 1 วนิ าที

สว นในโปรแกรมที่ A4-2 เปนตวั อยางการใชค าํ สงั่ sound() เพื่อขับเสียงท่ีมีความถ่ีตามท่ี
กําหนดออกทางลาํ โพงเปย โซ ตามเวลาทกี่ ําหนดในโปรแกรม

(A4.1) นาํ แผงวงจรขับเสียง ZX-SPEAKER ตอ เขากบั จดุ ตอ พอรต 19 ของแผงวงจร IPST-SE

28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
24 A0 30 A6 27 A3
D
KNOB DC MOTOR ON SPEAKER O
Hello0World0000000000
OK 15 SV0 14 SV1 13 SV2 12 SV3 G +S
000000000000000000000 6V
SW1 000000000000000000000 +12
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1 S

      Arduino IDE69

#include <ipst.h> // ผนวกไฟลไ ลบรารหี ลกั
void setup() // ขบั เสยี ง “ติ้ด” ออกลาํ โพงผานทางจดุ ตอ พอรต 19
{}
void loop()
{

beep(19);
delay(1000);
}

โปรแกรมที่ A4-1 ไฟล microbox_BeepTest.ino สาํ หรบั ทดสอบขบั เสยี งออกลาํ โพงของแผงวงจร IPST-SE

#include <ipst.h> // ผนวกไฟลไ ลบรารหี ลกั
void setup()
{} // ขบั เสยี งความถ่ี 500Hz นาน 0.5 วนิ าที ออกลาํ โพงผานทางจดุ ตอ พอรต 19
void loop() // ขบั เสยี งความถี่ 2500Hz นาน 0.5 วนิ าที ออกลาํ โพงผานทางจดุ ตอ พอรต 19
{

sound(19,500,500);
sound(19,2500,500);
}

โปรแกรมท่ีA4-2 ไฟลmicrobox_SoundTest.ino สาํ หรบั ทดสอบการขบั เสยี งออกลาํ โพงของแผงวงจร IPST-
SE แบบกาํ หนดความถแ่ี ละเวลาได

(A4..2) เขยี นโปรแกรมท่ี A4-1 บนั ทกึ ไฟลชอ่ื microbox_BeepTest.pde

(A4.3) เปด สวติ ชจ า ยไฟแกแ ผงวงจร IPST-SE จากนน้ั ทาํ การคอมไพลแ ละอปั โหลดโปรแกรมไปยงั แผง
วงจร IPST-SE

(A4.4) รนั โปรแกรม

จะไดย นิ เสยี ง “ตด้ิ ” ดงั เปนจงั หวะในทกุ ๆ 1 วนิ าทจี ากลาํ โพงของแผงวงจร ZX-SPEAKER

(A4.5) เขียนโปรแกรมท่ี A4-2 บันทกึ ไฟลชอ่ื microbox_SoundTest.ino แลวอปั โหลดโปรแกรมไป
ยงั แผงวงจร IPST-SE เพื่อทดสอบการทาํ งานอกี ครั้ง

จะไดย นิ สญั ญาณเสียง 2 ความถีด่ งั สลับกันออกจากลําโพงของแผงวงจร ZX-SPEAKER

70      Arduino IDE

     Arduino IDE71

 

    

การพฒั นาโปรแกรมภาษา C/C++ สาํ หรบั ชดุ กลอ งสมองกล IPST-MicroBOX (SE) ดาํ เนนิ การ
ภายใตก ารสนับสนนุ ของไฟลไ ลบรารี ipst.h ทัง้ นี้เพอ่ื ชว ยลดขัน้ ตอนและความซบั ซอนในการเขยี น
โปรแกรมเพื่อควบคุมสวนตางๆ ของฮารดแวรลง โครงสรา งของไฟลไ ลบรารี ipst.h แสดงดงั รปู

  

    
  
 TB6612FNG
  
       
 
M
  
M


 

   
 

 
 



72     Arduino IDE

5.1 ไฟลไ ลบรารี ipst.h

ในการเรยี กใชงานชุดคําสง่ั ยอยตางๆ เพอื่ การพฒั นาโปรแกรมควบคุมสําหรบั ชดุ กลองสมอง
กล IPST-MicroBOX (SE) ผพู ฒั นาตอ งผนวกไฟลไ ลบรารหี ลกั ipst.h ไวใ นตอนตน ของโปรแกรมดว ย
คําสัง่

#include <ipst.h>

เพอ่ื ประกาศใหใ หต วั แปลภาษา C หรอื คอมไพเลอรร จู กั ชดุ คาํ สง่ั ยอ ยทกี่ าํ ลงั จะถกู เรยี กใชง าน
จากไฟลไ ลบรารี ipst.h

ไลบรารยี อยของไฟลไ ลบรารี ipst.h ประกอบดวย

 ipst_glcd.h บรรจุฟงกช่ันและคําสั่งสําหรับแสดงผลขอความ, ตัวเลข และสราง
ภาพกราฟก สที จ่ี อแสดงผลแบบกราฟก LCD สบี นแผงวงจร IPST-SE (ยงั ไมร องรบั การทาํ งานกบั ไฟล
รปู ภาพ) ฟง กชั่นนม้ี กี ารกาํ หนดขาใชงานทเ่ี ฉพาะเจาะจง (มีรายละเอยี ดอธบิ ายในบทที่ 6)

 ipst_sleep.h บรรจฟุ ง กชน่ั และคําสงั่ สําหรบั การหนว งเวลา

 ipst_in_out.h บรรจฟุ ง กช นั่ และคาํ สง่ั สาํ หรบั อา นคา อนิ พตุ ดจิ ติ อลและสง คา ออกทาง
ขาพอรต เอาตพุตดิจติ อล

 ipst_analog.h บรรจุฟงกช่ันและคําส่ังอานคาจากอินพุตอะนาลอกชอง A0 ถึง A6
ท่ีตอกับตัวตรวจจับและปมุ KNOB กับสวติ ช OK

 ipst_sound.h บรรจฟุ ง กชน่ั และคําสัง่ สาํ หรบั สรา งเสียงเพอื่ ขบั ออกลําโพง

 ipst_motor.h บรรจฟุ ง กช น่ั และคาํ สงั่ สาํ หรบั ขบั มอเตอรไ ฟตรง 2 ชอ ง ตอ งทาํ งานรว ม
กับวงจรขับมอเตอรท ่ีใชไอซี TB6612 และใชไฟเลี้ยงอกี สวนหน่ึงสําหรบั เล้ียงมอเตอรไ ฟตรง

ipst_servoMotor.hบรรจฟุ ง กช น่ั และคาํ สง่ั สาํ หรบั ขบั เซอรโ วมอเตอร ตอ งทาํ งานรว ม
กับเซอรโวมอเตอร และตองใชไฟเลี้ยง +6V อีกสวนหน่ึงสําหรับเซอรโวมอเตอร ฟงกช่ันนี้มีการ
กําหนดขาใชง านทเ่ี ฉพาะเจาะจง

ipst_serial.hบรรจฟุ ง กช น่ั และคาํ สง่ั สาํ หรบั สอ่ื สารขอ มลู อนกุ รมผา นทางพอรต USB
และผานทางจดุ ตอพอรต TxD1 และ RxD1 ของแผงวงจร IPST-SE

ipst_led8.hบรรจฟุ ง กช น่ั และคาํ สงั่ สาํ หรบั แสดงผล LED 8 ดวงบนแผงวงจร ZX-LED8
โดยส่งั ให LED ติดทลี ะดวง หรอื หลายดวงก็ได

     Arduino IDE73

5.2 ไฟลไ ลบรารขี อง Arduino 1.x

Arduino1.x มไี ลบรารจี าํ นวนมาก เพอ่ื ชว ยใหก ารเขยี นโปรแกรมเพอื่ ตดิ ตอ และใชง านอปุ กรณ
ฟงกช่ันพิเศษ ตลอดจนตัวตรวจจับแบบตางๆ ทําไดสะดวกและงายข้ึน สรุปไดดังนี้

1. EEPROM.h ไลบรารีสําหรับการจัดการหนวยความจําขอมูลอีอีพรอมภายใน
ไมโครคอนโทรลเลอร ATmega644P ท่ีใชใ นแผงวงจร IPST-SE

2. LiquidCrystal.h ไลบรารตี ิดตอกบั โมดลู LCD แบบตัวอักษร

3. Encoder.h ไลบรารสี าํ หรบั การใชง านวงจรเขา รหสั ขนั้ พน้ื ฐาน (ตอ งการอปุ กรณเฉพาะ)

4. Wire.h ไลบรารสี าํ หรบั ติดตอกบั อปุ กรณร ะบบบสั 2 สายและบัส I2C

5.SoftwareSerial.hไลบรารสี าํ หรบั สอ่ื สารขอ มลู อนกุ รมกบั อปุ กรณภ ายนอกผา นทาง
ขาพอรตดิจิตอลปกติ

6. OneWire.h ไลบรารสี าํ หรบั ติดตอกบั อปุ กรณบ สั หนงึ่ สาย (เปนไลบรารเี สรมิ )

ในการเรียนรูเพื่อใชงานแผงวงจร IPST-SE ในชุดกลองสมองกล IPST-MicroBOX (SE)
จะใชไฟลไ ลบรารที ง้ั แบบมาตรฐานท่ีมากับซอฟตแวร Arduino1.x และไฟลไลบรารี ipst.h รว มกัน
เพอ่ื ชว ยใหก ารพฒั นาโปรแกรมสาํ หรบั การใชง านมปี ระสทิ ธภิ าพสงู สดุ และทาํ ความเขา ใจไดง า ย ทงั้
น้ีเพื่อประโยชนในการตอยอดการเรยี นรูของผูใชงานในวงกวา ง

5.3 การเรียกใชไ ลบรารี ipst.h และไลบรารียอ ย

ไฟลไ ลบรารี ipst.h ประกอบดว ยไลบรารหี ลายไฟล การเรยี กใชง านทาํ ได 2 วธิ คี อื
1. เรยี กใชท ง้ั หมดผา นทาง #include <ipst.h> วธิ นี ง้ี า ย สะดวก และลดโอกาสทผ่ี เู ขยี น

โปรแกรมจะลืมผนวกไฟลไลบรารที ่ีตองใชง าน
2. เรยี กใชเ ฉพาะไลบรารที ต่ี อ งการ ดว ยคาํ สงั่ #include <ipst_xxxx.h> ตวั อกั ษร xxxx

คือชอื่ ใดๆ ของไฟลไ ลบรารภี ายในไฟล ipst.h ดไู ดจ ากหัวขอ 5.1 ในบทน้ี วธิ ีน้มี ีขอดคี ือ ลดขนาด
ของไฟลโ ปรแกรมภาษา C/C++ ลง เนื่องจากมกี ารเรียกใชงานฟง กชัน่ หรอื ชดุ คําสัง่ เทาท่ีจาํ เปน

ในหวั ขอ ตอ ไปนเ้ี ปน การอธบิ ายถงึ ขอ มลู ทผ่ี พู ฒั นาโปรแกรมสาํ หรบั ชดุ กลอ งสมองกล IPST-
MicroBOX (SE) ควรทราบเก่ยี วกับฟง กชนั่ สําคัญทอ่ี ยใู นไฟลไ ลบรารยี อยของไลบรารหี ลกั ipst.h

74     Arduino IDE

5.4 ipst_sleep.h ไฟลไ ลบรารยี อ ยการหนวงเวลา

เปน ไฟลไ ลบรารบี รรจชุ ดุ คาํ สง่ั เกย่ี วกบั การหนว งเวลา กอ นเรยี กใชง านควรผนวกไฟลไ ลบรารี
ไวใ นตอนตน ของโปรแกรมดว ยคาํ สงั่

#include <ipst_sleep.h> หรอื เรยี ก #include <ipst.h>

5.4.1 sleep และ delay

sleep และ delay เปน ฟง กช นั่ หนว งเวลาโดยประมาณในหนว ยมลิ ลวิ นิ าที มรี ายละเอยี ดดงั นี้

รูปแบบ
void sleep(unsigned int ms)

void delay(unsigned int ms)

พารามเิ ตอร
ms - กําหนดคาเวลาที่ตอ งการหนวงในหนว ยมิลลวิ ินาที มคี า 0 ถงึ 65,535

ตัวอยางที่ 5-1 // หนวงเวลาประมาณ 20 มิลลวิ นิ าที
// หนวงเวลาประมาณ 1 วนิ าที
sleep(20);
delay(1000);

5.4.2 delay_us

เปนฟง กชั่นหนว งเวลาโดยประมาณภายในโปรแกรมในหนว ยไมโครวินาที

รูปแบบ
void delay_us(unsigned int us)

พารามเิ ตอร
us - กําหนดคาเวลาท่ีตอ งการหนวงในหนวยไมโครวินาที มคี า 0 ถงึ 65,535

ตัวอยางที่ 5-2

delay_us(100); // หนวงเวลาประมาณ 100 ไมโครวนิ าที

     Arduino IDE75

5.5 ipst_sound.h ไฟลไ ลบรารสี รา งสญั ญาณเสยี ง

เปนไฟลไลบรารีบรรจุชุดคําส่ังเพื่อสรางและขับสัญญาณเสียงไปยังลําโพงหรือแผงวงจร
ลําโพงเปยโซ กอนเรียกใชงานควรผนวกไฟลไลบรารีไวในตอนตนของโปรแกรมดวยคําส่ัง

#include <ipst_sound.h> หรือเรียก #include <ipst.h>

5.5.1 beep

เปนฟง กช่ันกําเนิดเสียง “ต๊ดิ ” มีความถ่ี 500Hz นาน 100 มลิ ลวิ นิ าที เพอื่ ขบั ออกลําโพงเปย
โซ ตองตอวงจรขับลาํ โพงเปยโซหรอื แผงวงจร ZX-SPEAKER เขาทีจ่ ุดตอพอรต ใดๆ ของแผงวงจร
IPST-SE

รูปแบบ
void beep(int pin)

พารามเิ ตอร
pin - ขาพอรต ใดๆ ของแผงวงจร IPST-SE มคี า 0 ถงึ 30 (แนะนาํ ใหใ ชจ ดุ ตอ พอรต 19 หรอื 20)

ตัวอยา งที่ 5-3

beep(19); // กาํ เนดิ เสียงความถ่ี 500Hz นาน 100 มิลลิวนิ าทีออกทางจดุ ตอ พอรต 19

5.5.2 sound

เปนฟงกชั่นกําเนิดสัญญาณเสียงท่ีกําหนดความถี่, ระยะเวลาในการกําเนิดสัญญาณ และจุด
ตอพอรตที่เลือกใชงานได

รูปแบบ
void sound(int pin, int freq, int time)

พารามเิ ตอร
pin - ขาพอรต ใดๆ ของแผงวงจร IPST-SE มคี า 0 ถงึ 30 (แนะนาํ ใหใ ชจ ดุ ตอ พอรต 19 หรอื 20)
freq - กาํ หนดความถสี่ ญั ญาณเสียง มคี า 0 ถงึ 32,767
time - กําหนดคาเวลาในการกาํ เนิดสัญญาณเสียงในหนวย 1 มลิ ลวิ ินาที มีคา 0 ถงึ 32,767

ตัวอยางที่ 5-4

sound(19,1200,500); // กาํ เนิดสัญญาณเสยี งออกทางจุดตอ พอรต 19

// ดว ยความถ่ี 1200Hz นาน 500 มิลลิวนิ าที

76      Arduino IDE

5.6 ipst_in_out.h ไฟลไ ลบรารยี อ ยสาํ หรบั ติดตอ พอรต

เปนไลบรารีท่ีมีคําสั่งเกี่ยวกับการอานและเขียนคากับพอรตของแผงวงจร IPST-SE ใน
ชดุ กลอ งสมองกล IPST-MicroBOX (SE) กอ นเรยี กใชง านฟง กช น่ั ตอ งผนวกไฟลไ ลบรารนี ไี้ วใ นตอน
ตนของโปรแกรมดวยคําสั่ง

#include <ipst_in_out.h> หรอื เรียก #inclue <atx.h>

ฟงกชั่นท่ีสําคัญของไฟลไลบรารีนี้ประกอบดวย

5.6.1 in

เปนฟงกชั่นอานคาสถานะลอจิกของพอรตท่ีกําหนด

รูปแบบ

char in(x)

พารามเิ ตอร
x - กําหนดขาพอรต ท่ีตอ งการอานคา มีคาตงั้ แต 0 ถงึ 50 สําหรบั IPST-SE ใชไ ดถงึ 30

หมายเหตุ : ไมแนะนําใหใชฟงกชัน่ นี้กับจดุ ตอ 19 และ 20 บนแผงวงจร IPST-SE

การคืนคา
เปน 0 หรอื 1

ตัวอยางท่ี 5-5 // ประกาศตวั แปร x เพอื่ เกบ็ คาผลลัพธจ าการอานคาระดบั สญั ญาณ
// อา นคาดจิ ติ อลจากพอรต หมายเลข 16 แลวเกบ็ คาไวท ตี่ ัวแปร x
char x;
x = in(16);

5.6.2 out

เปนฟงกช่ันกําหนดระดับสัญญาณหรือขอมูลดิจิตอลไปยังขาพอรตท่ีกําหนด
รูปแบบ

out(char _bit,char _dat)
พารามเิ ตอร

_bit - กําหนดขาพอรต ท่ีตอ งการ มีคา 0 ถงึ 50 สาํ หรบั IPST-SE ใชไดถงึ 30

_dat - กําหนดขอ มลู ที่ตอ งการสง ออก มคี าเปน 0 หรอื 1

ตัวอยา งที่ 5-6 // กาํ หนดใหข าพอรต 17 เปน “1”
// กาํ หนดใหข าพอรต 18 เปน “0”
out(17,1);
out(18,0);

     Arduino IDE77

5.5.3 sw1_press

เปน ฟง กช่นั วนตรวจสอบการกดสวติ ช SW1 บนแผงวงจร IPST-SE ตองรอจนกระทั่ง SW1
ถูกปลอยหลงั จากมีการกดสวติ ช จึงจะผานพน การทํางานของฟงกช่นั นี้ไป

รูปแบบ
void sw1_press()

ตัวอยา งที่ 5-7 // รอจนกระทั่งสวติ ช SW1 ถูกกดและปลอ ย

............

sw1_press();

................

5.5.4 sw1

เปนฟง กช่ันตรวจสอบการกดสวติ ช SW1 ในขณะใดๆ

รูปแบบ
char sw1()

การคนื คา
เปน “0” เมอ่ื สวิตช SW1 ถกู กด และ เปน “1” เมื่อไมมกี ารกดสวิตช SW1

ตัวอยา งที่ 5-8 // ประกาศตัวแปร x เพอื่ เกบ็ คาผลลพั ธจ ากการอา นคาดจิ ิตอล
// อา นคาสถานะของสวติ ช SW1 มาเกบ็ ไวท ตี่ ัวแปร x
char x;

x = sw1();

   

78      Arduino IDE

5.6 ipst_analog.h ไฟลไ ลบรารจี ัดการสญั ญาณอะนาลอก

เปนไฟลไ ลบรารีท่ีบรรจุชุดคําสั่งที่เก่ียวกับการอา นคาอินพตุ อะนาลอก (A0 ถึง A6 และปุม
KNOB)ของแผงวงจรIPST-SEซง่ึ ใชใ นการเชอื่ มตอ กบั ตวั ตรวจจบั ทใี่ หผ ลการทาํ งานในรปู แรงดนั ไฟฟา
ในยา น 0 ถงึ +5V กอ นเรยี กใชง านตอ งผนวกไฟลไ ลบรารไี วใ นตอนตน ของโปรแกรมดว ยคาํ สง่ั

#include <ipst_analog.h> หรอื #inclue <ipst.h>

     
 

5.6.1 analog

เปน ฟง กช นั่ อา นคา จากการแปลงสญั ญาณอะนาลอกของแผงวงจร IPST-SE ทจ่ี ดุ ตอ A0 ถงึ A6

รูปแบบ
unsigned int analog(unsigned char channel)

พารามเิ ตอร
channel - กําหนดชองอินพุตที่ตอ งการ มคี า 0 ถงึ 6 ซง่ึ ตรงกับขาพอรต A0 ถงึ A6

การคืนคา
เปน ขอ มลู ทไ่ี ดจ ากการแปลงสญั ญาณไฟฟา 0 ถงึ +5V จากชอ งอนิ พตุ ทกี่ าํ หนด มคี า 0 ถงึ 1,023

      Arduino IDE79

ตัวอยา งที่ 5-9

#include <ipst.h> // ผนวกไฟลไ ลบรารหี ลกั

int val=0; // กาํ หนดตวั แปรสาํ หรบั เก็บคาท่ีไดจ ากการแปลงสัญญาณแลว

void setup()

{

glcdClear();

setTextSize(2); // เลอื กขนาดตัวอกั ษรใหญเปน 2 เทา จากขนาดปกติ

}

void loop()

{

glcd(1,0,"AnalogTest"); // แสดงขอ ความท่ีจอแสดงผล

val = analog(2); // อานคาของสัญญาณชอ ง A2 มาเก็บไวท ต่ี ัวแปร val

setTextSize(3); // เลอื กขนาดตัวอักษรใหญเปน 3 เทา จากขนาดปกติ

glcd(2,2,"%d ",val); // แสดงคา ที่อา นไดจากจดุ ตอ A2 ทห่ี นาจอแสดงผล

setTextSize(2); // เลอื กขนาดตัวอักษรใหญเ ปน 2 เทา จากขนาดปกติ

}

POTENTIOMETER

ZX-POTV 28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
A 24 A0 30 A6 27 A3
DC MOTORD
KNOB ON
15 SV0 14 SV1 13 SV2 12 SV3OK0 0000000000
SW1 G
AnalogTest000000000000000000000 6V
12
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
G
543000000000000000000000 6V
14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

80     Arduino IDE

5.6.2 knob( )

เปนฟงกช่ันอานคาขอมูลท่ีไดจากการแปลงสัญญาณไฟฟาที่ขาพอรต A7 ซ่ึงตอกับตัวตาน
ทานปรบั คาไดท ่ตี ําแหนง KNOB

รูปแบบ
unsigned int knob()

การคนื คา
เปน ขอ มลู ทไ่ี ดจ ากการแปลงสญั ญาณไฟฟา ทมี่ าจากการปรบั คา ทป่ี มุ KNOB บนแผงวงจร IPST-

SE มคี า 95 ถงึ 1,023

ตัวอยา งท่ี 5-10 // ผนวกไฟลไ ลบรารหี ลกั

#include <ipst.h> // เลอื กขนาดตัวอกั ษรใหญเปน 2 เทา จากขนาดปกติ
void setup()
{ // แสดงขอ ความที่จอแสดงผล
// เลอื กขนาดตัวอกั ษรใหญเ ปน 3 เทา จากขนาดปกติ
glcdClear(); // แสดงคา ท่ีอานไดจ ากปุม KNOB ทจ่ี อแสดงผล
setTextSize(2); // เลอื กขนาดตัวอักษรใหญเ ปน 2 เทา จากขนาดปกติ
}
void loop()
{
glcd(1,0," KnobTest");
setTextSize(3);
glcd(2,2,"%d ",knob());
setTextSize(2);
}

28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
24 A0 30 A6 27 A3
D
   KNOB DC MOTOR ON
0 0000000000
OK 15 SV0 14 SV1 13 SV2 12 SV3 G
KnobTest000000000000000000000 6V
SW1 12
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 13
G
958000000000000000000000 6V
14
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

    Arduino IDE81

5.6.3 sw_OK()

เปน ฟง กช นั่ ตรวจสอบสถานะสวติ ช OK บนแผงวงจร IPST-SE โดยใหส ถานะ “เปน จรงิ ” เมอ่ื
มีการกดสวติ ชและ “เปนเท็จ” เม่ือไมม ีการกดสวติ ช

รูปแบบ
unsigned char sw_ok()

การคนื คา 0 (เปนเท็จ) เม่ือไมมีการกดสวติ ช
1 (เปนจรงิ ) เมื่อมีการกดสวิตช

หมายเหตุ การกดสวิตช OK มผี ลทาํ ใหค าท่อี านไดจาก knob() เปน 0 ดวย

ตัวอยางท่ี 5-11 // ผนวกไฟลไ ลบรารหี ลกั

#include <ipst.h> // ตรวจสอบการกดสวติ ช OK
void setup() // เปลีย่ นสีพนื้ เปน สเี หลอื ง
{ // แสดงสีพนื้ ใหมน าน 3 วนิ าที
// เคลยี รห นาจอแสดงผล กาํ หนดพน้ื หลงั เปน สดี าํ
glcdClear();
}
void loop()
{

if (sw_OK())
{

glcdFillScreen(GLCD_YELLOW);
delay(3000);
}
glcdClear();
}

5.6.4 sw_OK_press()

เปน ฟง กชนั่ วนตรวจสอบการกดสวติ ช OK บนแผงวงจร IPST-SE ตองรอจนกระทั่งสวติ ชถกู
ปลอยหลังจากการกดสวิตชจึงจะผานฟงกช่ันน้ีไปกระทําคําส่ังอ่ืนๆ

ตัวอยางท่ี 5-12 // รอจนกระทง่ั เกดิ กดสวติ ช OK

............
sw_OK_press();
.............

82     Arduino IDE

5.7 ipst_led8.h ไฟลไ ลบรารขี บั LED 8 ดวง

เปน ไฟลไ ลบรารบี รรจชุ ดุ คาํ สงั่ ทเี่ กย่ี วกบั การติดตอกับแผงวงจร ZX-LED8 เพอ่ื ขับ LED 8 ดวง
ใหแ สดงผลตามตอ งการ กอ นเรยี กใชง านตอ งผนวกไฟลไ ลบรารไี วใ นตอนตน ของโปรแกรมดว ยคาํ สงั่

#include <ipst_led8.h> หรือ #inclue <ipst.h>

5.7.1 การเชอ่ื มตอทางฮารด แวร

ไฟลไลบรารีนี้ใชงานกับจุดตอพอรตดิจิตอลทั้งหมดของแผงวงจร IPST-SE โดยใชเพียง 1
จดุ ตอพอรต ในการติดตอกับแผงวงจร ZX-LED8 ดังในรปู ท่ี 5-1

     

7 6 5 4 3 2 1 0     
      

76 5 4 3 2 10      
MSB LSB

LED8      
+5V  
Serial LED-8 RxD
GND
UART communication DC MOTOR
9600 bps. Baud 15 SV0 14 SV1 13 SV2 12 SV3

Secondary Education

28 A4 25 A1 USB 8 SCL 9 SDA
29 A5 26 A2 D
24 A0 30 A6 27 A3
Rowl00World0000000000
KNOB 0Row01000000000000000 ON
OK 00Row0200000000000000
SW1 000Row030000000000000 G
0000Row04000000000000 6V
00000Row0500000000000 12
G
000000R00060000000000 6V
0000000R0007000000000 13
G
00000000Row0800000000 6V
000000000Row090000000 14
0000000000Row01000000 G
00000000000Row0110000 6V
000000000000Row012000 15
0000000000000Row01300
00000000000000Row0140 SERVO
000000000000000Row015

16 18 UART1 LOW 12
17 19 +5

   20 RESET 2 RxD1 3 TxD1

   
  

รปู ที่ 5-1 การเช่ือมตอ เพื่อใชงานแผงวงจร ZX-LED8 ของแผงวงจร IPST-SE เพ่ือขับ LED 8 ดวง

     Arduino IDE83

5.7.2 pinLED8

เปน ฟง กช นั่ กําหนดจุดตอพอรต ของแผงวงจร IPST-SE ท่ีตองการเชือ่ มตอกับแผงวงจร ZX-
LED8

รูปแบบ
void pinLED8(int pin)

พารามเิ ตอร

pin - ขาพอรต ใดๆ ของแผงวงจร IPST-SE มคี า 0 ถงึ 30 (แนะนําใหใชจ ดุ ตอ พอรต 16 ถงึ 20)

ตัวอยางท่ี 5-13

pinLED8(20); // เลอื กจดุ ตอ พอรต 20 ของแผงวงจร IPST-SE ในการตอ กบั แผงวงจร ZX-LED8

5.7.3 LED8

เปน ฟง กช่ันกําหนดขอมูลสําหรบั แสดงผลบนแผงวงจร ZX-LED8

รูปแบบ
void LED8(unsigned char _dat) (ใชใ นกรณที ี่มกี ารกาํ หนดขาเชื่อมตอ ดวย pinLED8)

void LED8(int pin, unsigned char _dat)

พารามเิ ตอร

pin - ขาพอรต ใดๆ ของแผงวงจร IPST-SE มคี า 0 ถงึ 30 (แนะนําใหใชจ ดุ ตอ พอรต 16 ถงึ 20)

_dat - ขอ มูลสําหรบั นําไปแสดงผล มีคา 0 ถงึ 255

ตัวอยางที่ 5-14

#include <ipst.h> // ผนวกไฟลไลบรารหี ลกั
void setup() // ใชจดุ ตอพอรต 20 ในการตอกบั แผงวงจร ZX-LED8
{
// แสดงคา เลขฐานสอง 8 บิต (00000000 ถึง 11111111)
pinLED8(20); // หนวงเวลา 0.5 วนิ าที
}
void loop()
{

unsigned char i=0;
while(1)
{

LED8(i++);
delay(500);
}
}

84      Arduino IDE

ตวั อยา งที่ 5-15 // ผนวกไฟลไ ลบรารหี ลกั

#include <ipst.h> // เลอื กจุดตอพอรต 20 ในการเช่ือมตอกบั แผงวงจร ZX-LED8
void setup() // แลวแสดงคา เลขฐานสอง 8 บิต (00000000 ถึง 11111111)
{} // หนวงเวลา 0.5 วนิ าที
void loop()
{

unsigned char i=0;
while(1)
{

LED8(20,i++);

delay(500);
}
}

76543210

76543210
MSB LSB

LED8 +5V 
RxD
Serial LED-8 GND
UART communication
9600 bps. Baud

Secondary Education

76543210

76543210
MSB LSB

LED8 +5V   
RxD
Serial LED-8 GND
UART communication
9600 bps. Baud

Secondary Education

76543210

76543210
MSB LSB

LED8 +5V  
RxD
Serial LED-8 GND
UART communication
9600 bps. Baud

Secondary Education

76543210

76543210
MSB LSB

LED8 +5V      
RxD
Serial LED-8 GND
UART communication
9600 bps. Baud

Secondary Education

     Arduino IDE85

5.8 ipst_motor.h ไลบรารขี บั มอเตอรไฟตรง

แผงวงจร IPST-SE ในชดุ กลองสมองกล IPST-MicroBOX (SE) ขับมอเตอรไ ฟตรงได 2 ตัว
โดยตอ มอเตอรไ ฟตรงขนาด 3 ถงึ 9V เขา ทจี่ ดุ ตอ มอเตอรช อ ง 1 และ 2 ฟง กช นั่ ทใ่ี ชใ นการขบั มอเตอร
ไฟตรงมีดังน้ี

5.8.1 motor

เปน ฟงกชั่นขับเคล่ือนมอเตอรไ ฟตรง

รูปแบบ
void motor(char _channel,int _power)

พารามเิ ตอร
_channel - กําหนดชองเอาตพ ุตมอเตอรไ ฟตรง มีคา 1 และ 2

_power - กําหนดกําลงั ขบั มอเตอร มคี าในชว ง -100 ถงึ 100
ถา กําหนดคา _power เปน บวก (1 ถงึ 100) ทําใหม อเตอรห มุนไปในทศิ ทางหนึ่ง
ถา กําหนดคา _power เปนลบ (-1 ถงึ -100) มอเตอรจ ะถกู ขบั ใหหมนุ ไปในทิศทางตรงขา ม
ถา กาํ หนดคา _power เปน 0 มอเตอรห ยดุ หมุน ไมแนะนําใหก ําหนดคาเปน 0 หากตอง

การใหมอเตอรห ยุดหมุนควรเรยี กใชฟ งกช่นั motor_stop

ตัวอยา งที่ 5-16

28 A4 25 A1 8 SCL 9 SDA
#include <ipst.h> // ผนวกไลบรารหี ลกั 29 A5 26 A2 USB
24 A0 30 A6 27 A3
void setup() D

{} Rowl00World0000000000 ON
0Row01000000000000000
void loop() 00Row0200000000000000 DC MOTOR G
000Row030000000000000 6V
{ KNOB 0000Row04000000000000 15 SV0 14 SV1 13 SV2 12 SV312
00000Row0500000000000 G
motor(1,60); // ขบั มอเตอรช องที่ 1 ดว ย OK 000000R00060000000000 6V
0000000R0007000000000 13
00000000Row0800000000 G
000000000Row090000000 6V
0000000000Row01000000 14
00000000000Row0110000 G
000000000000Row012000 6V
0000000000000Row01300 15
00000000000000Row0140
000000000000000Row015 SERVO

// กาํ ลงั 60% SW1

delay(500); // ขบั นาน 0.5 วนิ าที 16 18 UART1 LOW 12
motor(1,-60); // ขบั มอเตอรช องท่ี 1 17 19 +5

20 RESET 2 RxD1 3 TxD1

// กลบั ทิศทางดวยกาํ ลงั 60%   

delay(500); // ขบั นาน 0.5 วนิ าที

}

86     Arduino IDE

5.8.2 motor_stop

เปนฟงกชั่นหยุดขับมอเตอร

รูปแบบ
void motor_stop(char _channel)

พารามเิ ตอร

_channel - กําหนดชองเอาตพ ุตมอเตอรไ ฟตรง มคี า 1, 2 และ ALL
โดย ALLเปนการเลอื กใหมอเตอรท ้ังหมดหยดุ ทาํ งาน

ตัวอยางท่ี 5-17

#include <ipst.h> // ผนวกไลบรารหี ลกั
void setup()
{ // ตรวจสอบการกดสวติ ช OK

sw_OK_press(); // มอเตอร 1 หมุนดว ยกาํ ลงั ไฟฟา 60%
} // หนวงเวลา 0.5 วนิ าที
void loop() // มอเตอร 1 หมุนกลบั ทิศดว ยกาํ ลงั ไฟฟา 60%
{ // หนวงเวลา 0.5 วนิ าที
// ตรวจสอบการกดสวติ ช SW1
motor(1,60); // ถาสวติ ช SW1 ถูกกด มอเตอรชอง 1 หยดุ หมนุ
delay(500);
motor(1,-60);
delay(500);
if (sw1())
{

motor_stop(1);
while (1);
}
}

    Arduino IDE87

ตัวอยางท่ี 5-18 // ผนวกไฟลไ ลบรารหี ลกั

#include <ipst.h> // ขบั มอเตอรช อง 1 ดว ยกาํ ลงั 50% ของกาํ ลงั สงู สดุ
void setup() // ขบั มอเตอรช อง 2 ดว ยกาํ ลงั 50% ของกาํ ลงั สงู สดุ
{} // หนวงเวลา 3 วนิ าที
void loop() // ขบั มอเตอรช อง 1 กลบั ทิศทางดวยกาํ ลงั 50% ของกาํ ลงั สูงสดุ
{ // ขบั มอเตอรช อง 2 กลบั ทิศทางดว ยกาํ ลงั 50% ของกาํ ลงั สูงสดุ
// หนวงเวลา 3 วนิ าที
motor(1,50); // หยดุ ขบั มอเตอรท งั้ สองชอง
motor(2,50); // หนวงเวลา 3 วนิ าที
sleep(3000);
motor(1,-50);
motor(2,-50);
sleep(3000);
motor_stop(ALL);
sleep(3000);
}

28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB
24 A0 30 A6 27 A3
D
KNOB DC MOTOR ON
OK Rowl00World0000000000
SW1 0Row01000000000000000 15 SV0 14 SV1 13 SV2 12 SV3 G
00Row0200000000000000 6V
000Row030000000000000 12
0000Row04000000000000 G
00000Row0500000000000 6V
000000R00060000000000 13
0000000R0007000000000 G
00000000Row0800000000 6V
000000000Row090000000 14
0000000000Row01000000 G
00000000000Row0110000 6V
000000000000Row012000 15
0000000000000Row01300
00000000000000Row0140 SERVO
000000000000000Row015

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

    

88      Arduino IDE

5.9 ipst_servoMotor.h ไฟลไ ลบรารขี บั เซอรโ วมอเตอร

เปนไฟลไลบรารคี วบคุมเซอรโวมอเตอร มีฟง กชั่นสนบั สนนุ การควบคุมตําแหนง แกนหมนุ
ของเซอรโ วมอเตอร โดยแผงวงจร IPST-SE ควบคุมเซอรโ วมอเตอรไ ด 4 ตัวในเวลาเดียวกัน กอนใช
งานตองผนวกไลบรารีไวในตอนตนของโปรแกรมดวยคําส่ัง

#include <ipst_servoMotor.h> หรอื #inclue <atx.h>
ในไฟลไลบรารีน้ีมี 1 ฟงกชั่นคือ servo เปนฟงกชั่นกําหนดตําแหนงแกนหมุนของเซอรโว
มอเตอร

รูปแบบ
void servo(unsigned char _ch, int _angle)

พารามเิ ตอร
_ch - ชองเอาตพ ุตเซอรโ วมอเตอร มคี า 0 ถงึ 3

_pos - กําหนดตาํ แหนง แกนหมนุ ของเซอรโ วมอเตอร มีคาในชว ง 0 ถงึ 180 และ -1

ถา กําหนดเปน -1 หมายถงึ ไมใชง านเซอรโวมอเตอรท ่ีชองนน้ั ๆ

ตัวอยางท่ี 5-19 // ผนวกไฟลไลบรารหี ลกั

#include <ipst.h> // ขบั เซอรโ วมอเตอรช อง 0 ไปยงั ตาํ แหนง 60 องศา
void setup() // หนวงเวลา 5 วนิ าที
{} // ขบั เซอรโ วมอเตอรช อง 0 ไปยงั ตาํ แหนง 120 องศา
void loop() // หนวงเวลา 5 วนิ าที
{

servo(0,60);
delay(5000);
servo(0,120);
delay(5000);
}

     Arduino IDE89

5.10 ipst_serial.h ไลบรารรี บั สงขอ มลู อนุกรม

เปนไฟลไลบรารีท่ีบรรจุชุดคําสั่งเก่ียวกับการรับสงขอมูลอนุกรมผานวงจรสื่อสารขอมูล
อนุกรม (UART) ของไมโครคอนโทรลเลอรบนแผงวงจร IPST-SE ในชุดกลองสมองกล IPST-
MicroBOX (SE) กอนเรยี กใชงานตองผนวกไฟลไลบรารไี วในตอนตน ของโปรแกรมดว ยคาํ สง่ั

#include <ipst_serial.h> หรอื #inclue <atx.h>

5.10.1 การเชอ่ื มตอทางฮารด แวร

เมื่อตอ งการใชงานชอง UART0 (ทาํ งานผา นพอรต USB)

ใหต อ สายจากจดุ ตอ พอรต USBบนแผงวงจร IPST-SE (เปน จดุ ตอ เดยี วกบั ทใี่ ชใ นการอปั โหลด)
เขากับพอรต USB ของคอมพิวเตอร

เม่ือตอ งการใชงานชอง UART1

ตอ สายสญั ญาณเขา กบั จดุ ตอ RXD1 (จดุ ตอ พอรต 2) และ TXD1 (จดุ ตอ พอรต 3) บนแผงวงจร
IPST-SE

   
   

    
     
  

รปู ที่ 5-2 แสดงจดุ ตอ สญั ญาณของแผงวงจร IPST-SE เมอื่ มกี ารใชงานไลบรารี ipst_serial.h

90      Arduino IDE

5.10.2 uart

เปนฟงกชั่นสําหรับสงขอมูลกลุมอักษรหรือสายอักขระหรือสตริง (string) ออกจากโมดูล
UART0 ไปยงั คอมพิวเตอรผ านพอรต USB มอี ตั ราการถา ยทอดขอ มลู เริม่ ตนท่ี 115,200 บิตตอวินาที

รูปแบบ
void uart(char *p,...)

พารามเิ ตอร

p - รบั รหสั ของกลุมขอ ความที่ตองการสงออกจากภาคสงของโมดูล UART0 กาํ หนดรูปแบบการแทรก
สัญลกั ษณพเิ ศษเพื่อใชรว มในการแสดงผลไดด งั นี้

รหสั บงั คบั การทาํ งาน

%c หรอื %C แสดงผลตัวอักษร 1 ตัว

%d หรอื %D แสดงผลตัวเลขฐานสบิ ชวงต้ังแต -32,768 ถึง +32,767

%l หรอื %L แสดงผลตัวเลขฐานสิบชวงต้ังแต -2,147,483,648 ถึง +2,147,483,647

%f หรอื %F แสดงผลขอ มูลแบบจาํ นวนจรงิ (แสดงทศนยิ ม 3 หลกั )

\r กําหนดใหขอ ความชิดไปทางดา นซายของบรรทดั

\n กาํ หนดใหขอ ความขึ้นบรรทัดใหม

ตวั อยางที่ 5-20 // ผนวกไฟลไลบรารหี ลกั

#include <ipst.h> // สง ขอ มลู ไปยงั คอมพวิ เตอรแ บบขนึ้ บรรทดั ใหม
void setup() // หนวงเวลา 2 วนิ าที
{}
void loop()
{

uart("Hello IPST-MicroBOX (SE)!\r\n");
delay(2000);
}

ในการรนั โปรแกรมนตี้ อ งตอ สาย USB ระหวา งแผงวงจร IPST-SE กบั พอรต USB ของคอมพวิ เตอรไ วต ลอด
เวลา จากนั้นเปด หนา ตาง Serial Monitor โดยคลกิ ทปี่ มุ หรอื เลอื กเมนู Tools > Serial Monitor

    Arduino IDE91

จากนั้นรอสักครู หนาตาง Serial Monitor จะปรากฏขน้ึ มา พรอ มกับแสดงขอ ความตามรูป ใหท าํ การ
คลกิ ทาํ เครือ่ งหมายท่ชี อง Auto Scroll และเลอื ก No line ending สวนชอ งสดุ ทา ยเลอื กเปน 9600 Baud

5.10.3 uart_set_baud

เปน ฟง กช นั่ กาํ หนดอตั ราหรอื ความเรว็ ในการสอ่ื สารขอ มลู ของโมดลู UART0 กบั คอมพวิ เตอร

รูปแบบ
void uart_set_baud(unsigned int baud)

พารามเิ ตอร
baud - อตั ราบอดในการสื่อสารของโมดูล UART0 กับคอมพิวเตอร มคี า 2400 ถงึ 115,200

ตัวอยางท่ี 5-21

uart_set_baud(4800); // กาํ หนดอตั ราบอดในการส่อื สารขอมูลเปน 4,800 บิตตอวนิ าที

5.10.4 uart_available

เปน ฟง กชัน่ ตรวจสอบการรบั ขอมลู เขามาของโมดลู UART0 เม่ือตดิ ตอกบั คอมพวิ เตอร

รูปแบบ
unsigned char uart_available(void)

การคืนคา
- เปน “0” เมอื่ ยังไมมขี อ มลู เขา มา
- มากกวา 0 เมอื่ มขี อ มูลเขา มา โดยมีคาเทากับจาํ นวนของอักขระท่ีไดรบั

ตัวอยางท่ี 5-22

char x =uart_available();
// ตรวจสอบวา มีขอ มูลเขา มาทางภาครบั ของโมดลู UART0 หรอื ไม ถา x มีคา มากกวา 0 แสดงวา
// มีขอ มูลเขา มายังภาครบั แลว ควรอานขอ มูลออกดว ยฟง กช ั่น uart_getkey ในลําดบั ถัดไปทนั ที

92    Arduino IDE

5.10.5 uart_getkey

เปนฟงกชั่นอานขอมูลจากบัฟเฟอรต ัวรับของโมดลู UART0

รูปแบบ
char uart_getkey(void)

การคนื คา
- เปน “0” เม่อื ไมมกี ารรบั อักขระใดๆ เขา มายังวงจรภาครบั ของโมดูล UART
- เปนคาของอักขระที่รบั ไดในรปู แบบของรหัสแอสกี้

ตัวอยางท่ี 5-23

#include <ipst.h>
void setup()
{}
void loop() // ลปู การทาํ งานหลกั
{
if(uart_available()) // ตรวจสอบวามีขอ มูลเขามาหรือไม
{
if(uart_getkey()==’a’) // ตรวจจบั การกดคยี  a วา ถูกกดหรอื ไม
{
glcd(3,1,“Key a Active!”); // แสดงขอ ความเพอื่ ตอบสนองตอการตรวจพบวามีการคยี  a
sleep(2000); // หนวงเวลาแสดงขอ ความประมาณ 2 วนิ าที
{}else // เคลยี รข อ ความที่หนาจอแสดงผล
} glcdClear();

} }

หมายเหตุ เมอื่ เรยี กใชฟ ง กช นั่ uart เพอื่ สง ขอ มลู ออกทางโมดลู พอรต อนกุ รมหรอื UART และ uart_getkey เพอื่

ตรวจจบั อกั ขระใดๆ นน้ั อตั ราการส่อื สารขอ มูลจะถกู กาํ หนดเปน 115,200 บติ ตอ วนิ าที ขอ มลู 8 บติ และไมม กี ารตรวจ

สอบพารติ โ้ี ดยอตั โนมตั ิ และเปน คา ตง้ั ตน เพอ่ื ลดความซบั ซอ นในการเขยี นโปรแกรมลง หากตอ งการเปลย่ี นอตั ราเร็วใน

การสอื่ สารขอ มลู ตอ งใชค าํ สง่ั uart_set_baud อยา งไรกต็ าม ตอ งคาํ นงึ ดว ยวา เมอื่ อตั ราการสอ่ื สารสงู ขน้ึ อาจสง ผลกระทบ

ตอ ความถกู ตอ งในการสอ่ื สารขอ มลู ได

ในการรนั โปรแกรมนี้ตองตอสาย USB ระหวา งแผงวงจร IPST-SE กบั พอรต USB ของคอมพวิ เตอรไ วต ลอด
เวลา จากน้ันเปด หนา ตาง Serial Monitor โดยคลกิ ทป่ี มุ หรอื เลอื กเมนู Tools > Serial Monitor

     Arduino IDE93

จากนั้นรอสกั ครู หนาตาง Serial Monitor จะปรากฏขึ้นมา ใหก ดปอ นตัวอักษร a ทชี่ องบนสดุ แลวคลกิ
กดปุม Send ทางขวามือ โดยทช่ี องดา นลางเลอื ก No line ending สวนชองสดุ ทา ยดา นลางขวามือเลอื กเปน 9600
Baud

เม่ือสงตัวอกั ษร a จากคอมพวิ เตอรไ ปยงั แผงวงจร IPST-SE แลว ทแี่ ผงวงจร IPST-SE จะตรวจสอบการเขา
มาของขอมูล หากถูกตอง จะแสดงขอ ความ Key a Active !



28 A4 25 A1 USB 8 SCL 9 SDA
29 A5 26 A2 D
24 A0 30 A6 27 A3
0 0000000000
KNOB DC MOTOR ON
000000000000000000000
OK 000000000000000000000 15 SV0 14 SV1 13 SV2 12 SV3 G
6V
SW1 0K0e0y000a000A0c0t0i0v00e0!00000 12
G
000000000000000000000 6V
000000000000000000000 13
000000000000000000000 G
000000000000000000000 6V
000000000000000000000 14
G
000000000000000000000 6V
000000000000000000000 15
000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000
000000000000000000000

16 18 UART1 LOW 12
17 19 +5

20 RESET 2 RxD1 3 TxD1

94     Arduino IDE

5.10.6 uart1

เปนฟงกชั่นสงขอมูลสายอักขระออกทางภาคสงของโมดูล UART1 มีอัตราการรับสงขอมูล
เริม่ ตนที่ 9,600 บิตตอวินาที โดยการใชงานตองตอสายสญั ญาณเขาที่จุด TXD1

รูปแบบ
void uart1(char *p,...)

พารามเิ ตอร
p - รบั รหสั ของกลมุ ขอ ความทต่ี อ งการสง ออกจากภาคสง ของโมดลู UART1 โดยสามารถกาํ หนด

รปู แบบการแทรกสัญลักษณพ ิเศษเพอื่ ใชร ว มในการแสดงผลเหมือนกับฟงกช่นั uart1

5.10.7 uart1_set_baud

เปน ฟง กชนั่ กําหนดอตั ราการรบั สงขอมลู ของโมดลู UART1 กับอปุ กรณภ ายนอก

รูปแบบ
void uart1_set_baud(unsigned int baud)

พารามเิ ตอร
baud - กําหนดคาอตั ราการรบั สง ขอ มูลในการสือ่ สารขอ มลู ของโมดูล UART1

ตัวอยา งท่ี 5-24 // กาํ หนดอัตราบอดในการสอื่ สารเปน 19,200 บิตตอวนิ าที

uart1_set_baud(19200);

5.10.8 uart1_available

เปนฟงกชั่นตรวจสอบการรบั ขอมลู เขามาของโมดูล UART1 เม่ือติดตอกับอปุ กรณภายนอก
โดยการใชงานตองตอสายสญั ญาณเขาทีจ่ ดุ RXD1 และ TXD1

รูปแบบ
unsigned char uart1_available(void)

การคนื คา
- เปน 0 เมอ่ื ไมมขี อ มูลเขา มา
- มากกวา 0 โดยมคี าเทากับจํานวนของอักขระที่ไดรบั

ตัวอยางที่ 5-25

char x =uart1_available();
// ตรวจสอบวามีขอ มูลเขา มาทางภาครบั ของโมดลู UART1 หรอื ไม
// ถา x มีคา มากกวา 0 แสดงวา มีขอ มูลเขา มาแลว ควรอานออกไปดว ยฟง กช ่ัน uart1_getkey ทนั ที

     Arduino IDE95

5.10.9 uart1_getkey

เปนฟงกชั่นอานขอมูลจากบัฟเฟอรต ัวรับของโมดูล UART1
รูปแบบ

char uart1_getkey(void)

การคืนคา
- เปน 0 เมื่อยังไมม กี ารรบั อกั ขระใดๆ
- เปนคาของอักขระท่ีรบั ไดในรปู แบบของรหัสแอสก้ี



1. เมอ่ื ตอ งการติดตอ กบั อุปกรณส ื่อสารขอมลู ไรส าย อาทิ โมดลู บลทู ูธ, โมดูล XBEE เปนตน

TXD1 Rx  
   
 Tx   
RXD1  



      
  

2. เมอ่ื ตอ งการสื่อสารขอ มลู ระหวางแผงวงจร IPST-SE 2 ชุด

28 A4 25 A1 8 SCL 9 SDA 28 A4 25 A1 8 SCL 9 SDA
29 A5 26 A2 USB 29 A5 26 A2 USB
30 A6 27 A3 30 A6 27 A3 D
24 A0D
24 A0 0 0000000000
0 0000000000
ON 000000000000000000000 ON
000000000000000000000 000000000000000000000
000000000000000000000 000000000000000000000 G
000000000000000000000 000000000000000000000 6V
000000000000000000000 12
000000000000000000000 000000000000000000000 G
000000000000000000000 000000000000000000000 6V
000000000000000000000 000000000000000000000 13
000000000000000000000 000000000000000000000 G
000000000000000000000 000000000000000000000 6V
000000000000000000000 14
000000000000000000000 000000000000000000000 G
000000000000000000000 000000000000000000000 6V
000000000000000000000 000000000000000000000 15
000000000000000000000 000000000000000000000
000000000000000000000 SERVO
000000000000000000000
000000000000000000000
KNOB DC MOTORG KNOB
OK 6V OK
SW1 15 SV0 14 SV1 13 SV2 12 SV312SW1

UART1 DC MOTORG16 18
+5 6V
15 SV0 14 SV1 13 SV2 12 SV313
16 18 LOW 12 UART1 LOW 12
17 19 G +5
6V
14

G
6V
15

20 RESET 2 RxD1 3 TxD1 SERVO 17 19 20 RESET 2 RxD1 3 TxD1

     

3. เมอ่ื ตอ งการตดิ ตอ กบั อปุ กรณภ ายนอกทตี่ อ งการรปู แบบขอ มลู อนกุ รมในการสอ่ื สาร อาทิ แผงวงจรขบั เซอร
โวมอเตอร 16 ชอง (ZX-SERVO16i) , แผงวงจรโมดลู LCD แบบอนุกรม (SLCD16x2), แผงวงจรฐานเวลา
นาฬิกาจรงิ แบบอนุกรม (ZX-17)

96      Arduino IDE

     Arduino IDE97

 

  

ในการพัฒนาโครงงานวิทยาศาสตรสมัยใหม ที่เกี่ยวของกับการเขียนโปรแกรมและตองมี
ระบบควบคุมอัตโนมัติเขามาเก่ียวของ รวมถึงตองมีการติดตอกับตัวตรวจจับ ซึ่งผูใชงานตองการ
ทราบถึงคาที่ตัวตรวจจับวัดหรือตรวจจับได อุปกรณตัวหน่ึงท่ีมีความสําคัญคือ อุปกรณแสดงผล
อุปกรณพ้ืนฐานที่สุดท่ีใชในการแสดงผลคือ LED หากตองการใหมีการแสดงผลเปนตัวเลข ก็๋จะ
เปลย่ี นมาใช LED ตัวเลข 7 สว น หากมคี วามตองการเพม่ิ ขนึ้ ไปอกี นน่ั คอื ตอ งการแสดงเปน ขอ ความ
เปนตัวอกั ษรจาํ นวนมากขึ้น โมดลู LCD แบบอกั ขระ (character LCD module) ก็จะเขามาทาํ หนา ที่
นี้

ในชุดกลองสมองกล IPST-MicroBOX Secondary Education (SE) รองรับทั้งการแสดงผล
ดวยอปุ กรณพ น้ื ฐานอยาง LED และจอแสดงผลแบบกราฟก LCD สี ทําใหช ุดกลองสมองกล IPST-
MicroBOX (SE) นค้ี วามสมบรู ณพรอมในการแสดงผลการทาํ งานอยา งเพยี งพอ ในบทน้ีเปนการนํา
เสนอขอมูลสําหรับการใชงานจอแสดงผลแบบกราฟก LCD สีท่ีเปนอุปกรณแสดงผลหลักของ
ชดุ กลอ งสมองกล IPST-MicroBOX (SE) เพอ่ื ใหน าํ ไปใชงานไดอ ยางเกิดประโยชนส งู สุด

6.1 คณุ สมบัตขิ องจอแสดงผลแบบกราฟก LCD สีของแผงวงจร IPST-SE
ในชดุ กลอ งสมองกล IPST-MicroBOX (SE)

คณุ สมบตั ทิ ส่ี าํ คญั โดยสรปุ ของจอแสดงผลแบบกราฟก LCD สขี องแผงวงจร IPST-SE มดี งั น้ี

 ขนาดจอแสดงผล 1.8 นิ้ว ความละเอยี ด 128 x 160 จุด

 แสดงภาพกราฟก ลายเสน และพนื้ สี 65,536 สี (ไมร องรบั ไฟลร ปู ภาพ) พรอ มไฟสอ งหลงั

 แสดงผลเปนตัวอกั ษรขนาดปกติ (5 x 7 จุด) ได 21 ตัวอกั ษร 16 บรรทดั (หรอื 21 x16)

มไี ฟลไ ลบรารี ipst_glcd.h รองรบั เพอ่ื ชว ยใหก ารเขยี นโปรแกรมเพอื่ กาํ หนดรปู แบบการ
แสดงผลทําไดหลากหลายแบบและสะดวกขึ้นอยางมาก

98      Arduino IDE

  

  0123456789abcdefghijk 
   100000000000000000000 
2000000000d0000000000 
  
300000000000000000000 
400000000000000000000 
500000000000000000000
600000000000000000000
700000000000000000000
800000000000000000000
900000000000000000000

a00000000000000000000
b00000000000000000000
c00000000000000000000

d00000000000000000000
e00000000000000000000
f00000000000000000000

รปู ที่ 6-1 แสดงการกาํ หนดตาํ แหนง ของการแสดงผลสาํ หรบั จอแสดงผลกราฟก LCD สที ใ่ี ชบ นแผงวงจร
IPST-SEในชดุ กลอ งสมองกล IPST-MicroBOX (SE)

6.2 การเรยี กใชไ ฟลไ ลบรารสี าํ หรบั จอแสดงผลแบบกราฟก LCD สี

ไฟลไ ลบรารที ใี่ ชใ นการตดิ ตอ และควบคมุ การทาํ งานของจอแสดงผลกราฟก LCD สจี ะไดร บั
การติดต้ังไปพรอมกับการติดต้ังซอฟตแวร Arduino IDE 1.7.10 แลว ไฟลไลบรารีช่ือ ipst_glcd.h
ไดร บั การคัดลอกลงในโฟลเดอร C:\Arduino17\libraries\IPST

การประกาศเพอ่ื ผนวกไฟลไ ลบรารนี ใี้ นโปรแกรมหรอื สเกต็ ชข อง Arduino 1.7.10 ทาํ ไดด งั น้ี
#include <ipst_glcd.h> หรือ #include <ipst.h>

     Arduino IDE99

6.3 ฟง กชนั่ เกยี่ วกบั การแสดงผลจอภาพแบบกราฟก LCD สี

6.3.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 หลกั )

ตัวอยา งท่ี 6-1

glcd(2,0,“Hello World”); // แสดงขอ ความ Hello World ทต่ี าํ แหนง ซา ยสดุ ของบรรทดั 2 (บรรทดั ท่ี 3)

     0 e10l02l03o04005W06o07r08l09d0a00b00c00d00e00f00g00h00i 00j00k
   1
H
  300000000000000000000

        400000000000000000000
  
500000000000000000000

 600000000000000000000

700000000000000000000

800000000000000000000

900000000000000000000

a00000000000000000000

b00000000000000000000
c00000000000000000000

d00000000000000000000

e00000000000000000000

f00000000000000000000

100       Arduino IDE

ตวั อยา งที่ 6-2

int x=20;
glcd(1,2,”Value = %d”,x);

// แสดงตัวอกั ษรและตัวเลขบนบรรทดั เดยี วกนั เรม่ิ ตนที่คอลมั น 2 ของบรรทดั 1 (บรรทดั ที่ 2)

28 A4 25 A1 USB 8 SCL 9 SDA
29 A5 26 A2 D
24 A0 30 A6 27 A3
Hello0World0000000000
00Value0=020000000000 ON
Hello0World0000000000
000000000000000000000
000000000000000000000

000000000000000000000
000000000000000000000

000000000000000000000

6.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

ตวั อยา งท่ี 6-3 // สง คา สี 16 บิตของสแี ดงใหต ัวแปร colors
// นําคา ไปแสดงเปน สพี น้ื ของจอแสดงผล
#include <ipst.h>
int colors;
void setup()
{

int colors;
colors=colorRGB(31,0,0);
glcdFillScreen(colors);
}
void loop()
{}


Click to View FlipBook Version