unicon05-129140

12
Unicon 129 การพั ฒนาโปรแกรมภาษา C/C++ ดวย Arduino สําหรับบอร ด Unicon ดํ าเนิ นการภายใตการ สนับสนุนของไฟลไลบรารีหลักที่ทาง Arduino จัดเตรียมให ผนวกเขากับไฟลไลบรารีที่พัฒนาขึ้นมาเปนเฉพาะ สําหรับบอรด Unicon นั่นคือไฟล unicon.h ทั้งนี้ เพื่อชวยลดความซับซอนในการเขียนโปรแกรมควบคุมลง Arduino 1.0 ไดบรรจุไฟลไลบรารีที่ชวยใหการเขียนโปรแกรมภาษา C/C++ เพื่อใชงานไมโคร คอนโทรลเลอรทําไดงายขึ้น รวมถึงผูเริ่มตนใหมก็สามารถเรียนรูเพื่อใชงานไมโครคอนโทรลเลอรได โดยไม จําเปนตองศึกษาเพื่อลงลึกในรายละเอียดของสถาปตยกรรมของไมโครคอนโทรลเลอร ไฟลไลบรารีที่สําคัญและใชงานกับบอรด Unicon ได ประกอบดวย EEPROM บรรจุฟงกชั่นและคําสั่งสําหรับติดตอกับหนวยความจําขอมูลอีอีพรอมภายในตัวไมโคร คอนโทรลเลอร เมื่อตองการใชงานตองผนวกไฟลไลบรารีไวในตอนตนของโปรแกรมดวยคําสั่ง #include <EEPROM.h> LiquidCrystal บรรจุฟงกชั่นและคําสั่งสําหรับติดตอกับโมดูล LCD แบบอักขระเพื่อ แสดงผลขอความและตัวเลข รองรับทั้งการติดตอแบบ 4 บิตและ 8 บิต ใชงานไดกับโมดูล LCD 8, 16 และ 20 ตัวอักษร 1, 2 และ 4 บรรทัด เมื่อตองการใชงานตองผนวกไฟลไลบรารีไวในตอนตนของโปรแกรมดวยคําสั่ง #include <LiquidCrystal.h> servo บรรจุฟงกชั่นและคําสั่งสําหรับขับเซอรโวมอเตอร ตองทํางานรวมกับเซอรโวมอเตอร และตองใช ไฟเลี้ยงแยกสําหรับเซอรโวมอเตอร เมื่อตองการใชงานตองผนวกไฟลไลบรารีไวในตอนตนของ โปรแกรมดวยคําสั่ง #include <servo.h> SoftwareSerial บรรจุฟงกชั่นและคําสั่งสําหรับใชงานขาพอรตของ Arduino และ Unicon ในการสื่อสารขอมูลอนุกรม ไลบรารีจะถูกนํามาใชงานเมื่อขาเชื่อมตอพอรตอนุกรมหลัก (RxD และ TxD) ของทั้ง Arduino และ Unicon ถูกใชงานไปแลว และมีความตองการติดตออุปกรณที่ตองใชการสื่อสารขอมูล อนุกรม การใชงานไลบรารีนี้จะชวยใหผูใชงานสามารถใชขาพอรตของ Arduino หรือ Unicon ขาอื่นที่วางมา ทําหนาที่เปนขาพอรตสําหรับสื่อสารขอมูลอนุกรม เมื่อตองการใชงานตองผนวกไฟลไลบรารีไวในตอนตนของ โปรแกรมดวยคําสั่ง #include <SoftwareSerial.h>

Upload: innovative-experiment-coltd

Post on 31-Mar-2016

214 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Unicon05-129140

Unicon 129

การพั ฒนาโปรแกรมภาษา C/C++ ด วย Arduino สํ าหรั บบอร ด Unicon ดํ าเนิ นการภายใต การสนั บสนุ นของไฟล ไลบรารี หล ักที ่ทาง Arduino จ ัดเตร ียมให ผนวกเข าก ับไฟล ไลบราร ีที ่พ ัฒนาขึ ้นมาเป นเฉพาะสํ าหรั บบอร ด Unicon นั่ นคื อไฟล unicon.h ทั้ งนี้ เพื่ อช วยลดความซั บซ อนในการเขี ยนโปรแกรมควบคุ มลง

Arduino 1.0 ได บรรจุ ไฟล ไลบรารี ที่ ช วยให การเขี ยนโปรแกรมภาษา C/C++ เพื่ อใช งานไมโครคอนโทรลเลอร ทํ าได ง ายขึ้ น รวมถึ งผู เริ่ มต นใหม ก็ สามารถเรี ยนรู เพื่ อใช งานไมโครคอนโทรลเลอร ได โดยไม จํ าเป นต องศึ กษาเพื่ อลงลึ กในรายละเอี ยดของสถาป ตยกรรมของไมโครคอนโทรลเลอร

ไฟล ไลบรารี ที่ สํ าคั ญและใช งานกั บบอร ด Unicon ได ประกอบด วย

EEPROM บรรจุ ฟ งก ชั ่นและคํ าสั่ งสํ าหรั บติ ดต อกั บหน วยความจํ าข อมู ลอี อี พรอมภายในตั วไมโครคอนโทรลเลอร เมื่ อต องการใช งานต องผนวกไฟล ไลบรารี ไว ในตอนต นของโปรแกรมด วยคํ าสั่ ง

#include <EEPROM.h>

LiquidCrystal บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บติ ดต อกั บโมดู ล LCD แบบอั กขระเพื่ อแสดงผลข อความและต ัวเลข รองร ับทั ้งการต ิดต อแบบ 4 บ ิตและ 8 บ ิต ใช งานได ก ับโมด ูล LCD 8, 16 และ 20ต ัวอ ักษร 1, 2 และ 4 บรรท ัด เมื ่อต องการใช งานต องผนวกไฟล ไลบราร ีไว ในตอนต นของโปรแกรมด วยคํ าสั ่ง

#include <LiquidCrystal.h>

servo บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บขั บเซอร โวมอเตอร ต องทํ างานร วมกั บเซอร โวมอเตอร และต องใช ไฟเลี้ ยงแยกสํ าหรั บเซอร โวมอเตอร เมื่ อต องการใช งานต องผนวกไฟล ไลบรารี ไว ในตอนต นของโปรแกรมด วยค ําสั ่ง

#include <servo.h>

SoftwareSerial บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บใช งานขาพอร ตของ Arduino และ Uniconในการสื่ อสารข อมู ลอนุ กรม ไลบรารี จะถู กนํ ามาใช งานเมื่ อขาเชื่ อมต อพอร ตอนุ กรมหลั ก (RxD และ TxD)ของทั้ ง Arduino และ Unicon ถู กใช งานไปแล ว และมี ความต องการติ ดต ออุ ปกรณ ที่ ต องใช การสื่ อสารข อมู ลอนุ กรม การใช งานไลบรารี นี้ จะช วยให ผู ใช งานสามารถใช ขาพอร ตของ Arduino หรื อ Unicon ขาอื่ นที่ ว างมาทํ าหน าที ่เป นขาพอร ตสํ าหรั บสื ่อสารข อม ูลอน ุกรม เมื ่อต องการใช งานต องผนวกไฟล ไลบราร ีไว ในตอนต นของโปรแกรมด วยคํ าสั่ ง

#include <SoftwareSerial.h>

Page 2: Unicon05-129140

130 Unicon

C110F

SP1Piezo

TB6612FNG

M

M

รู ปที่ 5-1 โครงสร างไฟล ไลบรารี unicon.h ส ําหรั บพั ฒนาโปรแกรมของบอร ด Unicon

Page 3: Unicon05-129140

Unicon 131

SPI บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บติ ดต อกั บอุ ปกรณ ผ านบั ส SPI (Serial Peripheral Interface)โดยต องใช ขาพอร ต 14 (MISO), 15 (MOSI), 16 (SCK) และ 17 (SS) ในการติ ดต อ อุ ปกรณ ที่ ทํ างานผ านบั สแบบ SPI ประกอบด วย ไอซี หน วยความจํ าอี อี พรอมในอนุ กรม 93Cxxx, ไอซี แปลงสั ญญาณอะนาลอกเป นดิ จิ ตอล, ไอซี แปลงสั ญญาณดิ จิ ตอลเป นอะนาลอก, ไอซี วั ดอุ ณหภู มิ , ไอซี ขั บ LED ตั วเลข 7 ส วน เป นต น เมื่ อต องการใช งานต องผนวกไฟล ไลบรารี ไว ในตอนต นของโปรแกรมด วยคํ าสั่ ง

#include <SPI.h>

Wire บรรจุ ฟ งก ชั ่นและค ําสั ่งส ําหร ับต ิดต อก ับอ ุปกรณ ผ านบ ัส I2C โดยต องใช ขาพอร ต 2 (SDA) และ3 (SCL) ในการต ิดต อ อ ุปกรณ ที ่ท ํางานผ านบ ัส I2C ม ีมากมาย อาท ิ ไอซ ีหน วยความจ ําอ ีอ ีพรอมในอน ุกรม 24Cxxx,ไอซ ีแปลงส ัญญาณอะนาลอกเป นด ิจ ิตอล, ไอซ ีแปลงส ัญญาณด ิจ ิตอลเป นอะนาลอก, ไอซ ีว ัดอ ุณหภ ูม ิ, ไอซ ีขยายพอร ตอ ินพ ุตเอาต พ ุต, โมด ูลว ิทย ุ FM, ต ัวตรวจจ ับความชื ้น, ต ัวตรวจจ ับความด ันบรรยากาศ, ต ัวตรวจจ ับความเร งแบบ 3 แกน ป นต น เมื ่อต องการใช งานต องผนวกไฟล ไลบราร ีไว ในตอนต นของโปรแกรมด วยคํ าสั ่ง

#include <Wire.h>

สํ าหรั บฮาร ดแวร Arduino Leonardo ซึ่ งบอร ด Unicon ก็ เป นฮาร ดแวร แบบหนึ่ งที่ เข ากั นได ยั งมี ไลบรารี พิ เศษที่ เพิ่ มเติ มขึ้ นมานั่ นคื อ ไลบรารี USB ในการใช งานฟ งก ชั่ นของไลบรารี USB นี้ ไม ต องทํ าการผนวกไลบรารี เพิ่ มเติ มแต อย างใด ผู พั ฒนาโปรแกรมสามารถเรี ยกใช งานฟ งก ชั่ นได เลย

ไลบรารี USB มี 2 ไลบรารี ย อยคื อ

Mouse บรรจุ ฟ งก ชั่ นและคํ าสั่ งเพื่ อทํ าให ฮาร ดแวร Arduino Leonardo หรื อบอร ด Unicon ทํ างานเป นเมาส USB

Keyboard บรรจุ ฟ งก ชั่ นและคํ าสั่ งเพื่ อทํ าให ฮาร ดแวร Arduino Leonardo หรื อบอร ด Uniconทํ างานเป นคี ย บอร ด USB

นอกเหนื อไปจากไลบรารี มาตรฐานและไลบรารี USB ที่ ทาง Arduino เตรี ยมมาให พร อมใช งานแล วทาง INEX (บริ ษั ท อิ นโนเวตี ฟ เอ็ กเพอริ เมนต จํ ากั ด) ผู พั ฒนาบอร ด Unicon ยั งได ทํ าการสร างไฟล ไลบรารี ที่ ชื่ อ unicon.h เพิ่ มเติ มขึ้ นมา เพื่ อช วยอํ านวยความสะดวกในการเรี ยนรู , พั ฒนาโปรแกรม และใช งานบอร ดUnicon โดยผู สนใจดาวน โหลดได ที่ www.uniconboard.com สํ าหรั บผู ที่ จั ดซื้ อชุ ด Unicon CablePack หรื อชุ ดทดลองรุ นอื ่นๆ ของ Unicon ไฟล ไลบราร ี unicon.h จะได รั บการต ิดต้ั งไปพร อมกั บการต ิดต้ั งซอฟต แวร Arduinoตั้ งแต แรก

โครงสร างของไฟล ไลบรารี unicon.h แสดงดั งรู ปที่ 5-1

Page 4: Unicon05-129140

132 Unicon

ในการเรี ยกใช งานชุ ดคํ าสั่ งย อยต างๆ เพื่ อการพั ฒนาโปรแกรมควบคุ มสํ าหรั บบอร ด Unicon ผู พั ฒนาต องผนวกไฟล ไลบรารี หลั ก unicon.h ไว ในตอนต นของโปรแกรมด วยคํ าสั่ ง

#include <unicon.h>

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

ไลบรารี ย อยของไฟล ไลบรารี unicon.h ประกอบด วย

glcd บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บแสดงผลข อความ, ตั วเลข และสร างภาพกราฟ กสี ที่ จอแสดงผลแบบกราฟ ก LCD ส ีของแผงวงจร GLCD-XT (ย ังไม รองร ับการท ํางานก ับไฟล ร ูปภาพ) ฟ งก ชั ่นน้ี มี การกํ าหนดขาใช งานที่ เฉพาะเจาะจง (มี รายละเอี ยดอธิ บายในบทที่ 6)

sleep บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บการหน วงเวลา

in_out บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บอ านค าอิ นพุ ตดิ จิ ตอลและส งค าออกทางขาพอร ตเอาต พุ ตดิ จิ ตอล

analog บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บอ านค าจากอิ นพุ ตอะนาลอกที่ ต อกั บตั วตรวจจั บ

sound บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บสร างเสี ยงเพื่ อขั บออกลํ าโพง ฟ งก ชั่ นน้ี มี การกํ าหนดขาใช งานที่ เฉพาะเจาะจง

motor บรรจุ ฟ งก ชั ่นและคํ าสั ่งสํ าหร ับข ับมอเตอร ไฟตรง 2 ช อง ต องท ํางานร วมก ับวงจรข ับมอเตอร ที่ ใช ไอซี TB6612 และต องใช ไฟเลี้ ยงแยกสํ าหรั บมอเตอร ไฟตรง ฟ งก ชั่ นน้ี มี การกํ าหนดขาใช งานที่ เฉพาะเจาะจง

servoMotor บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บขั บเซอร โวมอเตอร ต องทํ างานร วมกั บเซอร โวมอเตอร และต องใช ไฟเลี้ ยงแยกสํ าหรั บเซอร โวมอเตอร ฟ งก ชั่ นน้ี มี การกํ าหนดขาใช งานที่ เฉพาะเจาะจง

serial บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บสื่ อสารข อมู ลอนุ กรมผ านทางพอร ต USB และผ านทางขาพอร ต TxD และ RxD ของบอร ด Unicon

IRremote บรรจุ ฟ งก ชั่ นและคํ าสั่ งสํ าหรั บอ านรหั สของปุ มรี โมตคอนโทรลอิ นฟราเรดที่ ใช ในเครื่ องใช ไฟฟ า (มี รายละเอี ยดการใช งานในบทที่ 7) เมื่ อต องการใช งานไลบรารี นี้ ต องผนวกไฟล ไว ในตอนต นของโปรแกรมหลั งคํ าสั่ ง #include <unicon.h> ด วยคํ าสั่ ง

#include <IRremote.h>

ในการเรี ยนรู เพื่ อใช งานบอร ด Unicon จะใช ไฟล ไลบรารี ทั้ งแบบมาตรฐานและไฟล unicon.h ร วมกั น เพื ่อช วยให การพั ฒนาโปรแกรมสํ าหรั บการใช งานมี ประสิ ทธ ิภาพสู งสุ ด และสามารถทํ าความเข าใจได ง ายทั้ งนี้ เพื่ อประโยชน ในการต อยอดการเรี ยนรู ของผู ใช งานในวงกว าง

Page 5: Unicon05-129140

Unicon 133

5.4.1 ฟ งก ชั่ นเกี่ ยวกั บเวลา

5.4.1.1 sleep และ delay

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

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

void delay(unsigned int ms)

พารามิ เตอร

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

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

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

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

พารามิ เตอร

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

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

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

5.4.2 ฟ งก ชั่ นเกี่ ยวกั บเสี ยง

5.4.2.1 beep

เป นฟ งก ชั ่นก ําเน ิดเส ียง “ติ ๊ด” ม ีความถี ่ 500Hz นาน 100 ม ิลล ิว ินาท ี เพื ่อข ับออกล ําโพงเป ยโซ ต องต อวงจรขั บลํ าโพงเป ยโซหรื อแผงวงจร ZX-SPEAKER เข าที่ จุ ดต อพอร ต 11 ของบอร ด Unicon

รู ปแบบvoid beep()

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

beep(); // กํ าเนิ ดเสี ยงความถี่ 500Hz นาน 100 มิ ลลิ วิ นาที

Page 6: Unicon05-129140

134 Unicon

5.4.2.2 sound

เป นฟ งก ชั่ นกํ าเนิ ดสั ญญาณเสี ยงที่ กํ าหนดความถี่ และระยะเวลาในการกํ าเนิ ดสั ญญาณได

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

พารามิ เตอร

freq - กํ าหนดความถี่ สั ญญาณเสี ยง มี ค า 0 ถึ ง 32,767time - กํ าหนดค าเวลาในการกํ าเนิ ดสั ญญาณเสี ยงในหน วย 1 มิ ลลิ วิ นาที มี ค า 0 ถึ ง 32,767

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

sound(1200,500); // กํ าเนิ ดสั ญญาณเสี ยงความถี่ 1200Hz นาน 500 มิ ลลิ วิ นาที

5.4.3 ฟ งก ชั่ นเกี่ ยวกั บพอร ตอิ นพุ ตเอาต พุ ต

5.4.3.1 in

เป นฟ งก ชั ่นอ านค าสถานะลอจิ กของพอร ตที ่กํ าหนด เป นหนึ่ งในฟ งก ชั ่นการอ านและเข ียนค าก ับพอร ตอิ นพุ ตเอาต พุ ตของหุ นยนต POP-BOT XT

รู ปแบบchar in(x)

พารามิ เตอร

x - กํ าหนดขาพอร ตที่ ต องการอ านค า

การคื นค า

เป น 0 หรื อ 1

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

char x; // ประกาศตั วแปร x เพื่ อเก็ บค าผลลั พธ จาการอ านค าระดั บสั ญญาณx = in(2); // อ านค าดิ จิ ตอลจากพอร ตดิ จิ ตอล 2 มาเก็ บไว ที่ ตั วแปร x

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

รู ปแบบout(char _bit,char _dat)

พารามิ เตอร

bit - กํ าหนดขาพอร ตที่ ต องการ

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

out(4,1); // กํ าหนดให ขาพอร ต 4/A6 เป นเอาต พุ ตดิ จิ ตอลและมี ค าเป น “1”out(6,0); // กํ าหนดให ขาพอร ต 6/A7 เป นเอาต พุ ตดิ จิ ตอลและมี ค าเป น “0”

Page 7: Unicon05-129140

Unicon 135

5.4.4 ฟ งก ชั ่นเกี่ ยวกั บการติ ดต อก ับตั วตรวจจั บ

5.4.4.1 analog

เป นฟ งก ชั่ นอ านค าข อมู ลดิ จิ ตอลที่ ได จากการแปลงสั ญญาณอะนาลอกของไมโครคอนโทรลเลอร ที่ พอร ต A0 ถึ ง A7 ซึ่ งใช ในการเชื่ อมต อกั บตั วตรวจจั บที่ ให ผลการทํ างานในรู ปแรงดั นไฟฟ าในย าน 0 ถึ ง +5V

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

พารามิ เตอร

channel - กํ าหนดช องอิ นพุ ตอะนาลอกที่ ต องการ มี ค า 0 ถึ ง 7 ซึ่ งตรงกั บขาพอร ต A0 ถึ ง A7

การคื นค า

เป นข อมู ลที่ ได จากการแปลงสั ญญาณของโมดู ลแปลงสั ญญาณอะนาลอกเป นดิ จิ ตอลภายในไมโครคอนโทรลเลอร จากช องอ ินพ ุตที ่ก ําหนด โดยข อม ูลม ีความละเอ ียด 10 บ ิต ด ังนั ้นค าที ่เป นไปได ค ือ 0 ถ ึง 1,023

5.4.4.2 knob

เป นฟ งก ชั่ นอ านค าข อม ูลจากต ัวต านทานปร ับค าได KNOB บนแผงวงจร GLCD-XT จะใช งานได เมื ่อน ําแผงวงจร GLCD-XT มาเส ียบเข าก ับบอร ด Unicon ม ีการท ํางานเหม ือนก ับค ําสั ่ง analog(8) แต ค าที ่อ านได ม ีค าในช วง 80 ถ ึง 1023 เนื ่องจากต ัวต านทานปร ับค าได นี ้เชื ่อมต อก ับสว ิตช OK ที ่ต ิดต้ั งบนแผงวงจร GLCD-XT ด วย

รู ปแบบunsigned int knob()

การคื นค า

ค าที่ อ านได จากตั วต านทานปรั บค าได KNOB บนแผงวงจร GLCD-XT มี ค าระหว าง 80 ถึ ง 1023

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

int val=0; // กํ าหนดค าตั วแปรสํ าหรั บเก็ บค าอะนาลอกval=knob(); // อ านค าจากตั วต านทานปรั บค าได KNOB เก็ บในตั วแปร val

รู ปที่ 5-2 แสดงปุ ม KNOB และสวิ ตช OK บนแผงวงจร GLCD-XT

Page 8: Unicon05-129140

136 Unicon

5.4.4.3 sw_ok()

เป นฟ งก ชั่ นตรวจสอบสถานะสวิ ตช OK บนแผงวงจร GLCD-XT จะใช งานได เมื่ อนํ าแผงวงจร GLCD-XT มาเสี ยบเข ากั บบอร ด Unicon โดยให สถานะ “เป นจริ ง” เมื่ อมี การกดสวิ ตช และ “เป นเท็ จ” เมื่ อไม มี การกดสวิ ตช

รู ปแบบunsigned char sw_ok()

การคื นค า

1 (เป นจริ ง) เมื่ อมี การกดสวิ ตช

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

หมายเหตุ การกดสวิ ตช OK มี ผลทํ าให ค าที่ อ านได จาก Knob เป น 0 ด วย

ตั วอย างที่ 5-7if(sw_ok()){

beep(); // เมื่ อกดสวิ ตช OK จะมี เสี ยง “ติ้ ด” ดั งออกลํ าโพง}

5.4.4.4 sw_ok_press()

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

ตั วอย างที่ 5-8........

sw_ok_press(); // รอจนกระทั่ งเกิ ดกดสวิ ตช OK......

Page 9: Unicon05-129140

Unicon 137

5.4.5 ฟ งก ชั่ นเกี่ ยวกั บการสื่ อสารข อมู ลอนุ กรม

เป นไฟล ไลบราร ีสนั บสนุ นชุ ดคํ าสั่ งเกี่ ยวกั บการร ับส งข อมู ลผ านโมดู ลสื่ อสารข อมู ลอนุ กรม (UART)

5.4.5.1 การเช่ื อมต อทางฮาร ดแวร เมื่ อต องการใช งานช อง UART0

ให ต อสายจากจุ ดต อพอร ต USB บนบอร ด Unicon (เป นจุ ดต อเดี ยวกั บที่ ใช ในการอั ปโหลด) เข ากั บพอร ต USB ของคอมพิ วเตอร

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

ต อสายสั ญญาณเข ากั บจุ ดต อ RxD (ขาพอร ต 0) และ TxD (ขาพอร ต 1)

5.4.5.2 uart

เป นฟ งก ชั ่นสํ าหร ับส งข อมู ลสายอ ักขระออกจากโมด ูล UART0 ม ีอ ัตราบอดเริ ่มต นที ่ 4,800 บ ิตต อว ินาที

รู ปแบบ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.4.5.3 uart_set_baudเป นฟ งก ชั่ นกํ าหนดอั ตราบอดในการสื่ อสารของโมดู ล UART0 กั บคอมพิ วเตอร

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

พารามิ เตอร

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

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

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

Page 10: Unicon05-129140

138 Unicon

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

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

การคื นค า

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

ตั วอย างที่ 5-10char x =uart_available();

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

5.4.5.5 uart_getkeyเป นฟ งก ชั่ นอ านข อมู ลจากบั ฟเฟอร ตั วรั บของโมดู ล UART0

รู ปแบบchar uart_getkey(void)

การคื นค า

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

5.4.5.6 uart1

เป นฟ งก ชั ่นส งข อม ูลสายอ ักขระออกทางภาคส งของโมด ูล UART1 ม ีอ ัตราบอดเริ ่มต นที ่ 9,600 บ ิตต อว ินาท ี

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

พารามิ เตอร

p - รั บรหั สของกลุ มข อความที่ ต องการส งออกจากภาคส งของโมดู ล UART1 โดยสามารถกํ าหนดรู ปแบบการแทรกสั ญลั กษณ พิ เศษเพื่ อใช ร วมในการแสดงผลเหมื อนกั บฟ งก ชั่ น uart

5.4.5.7 uart1_set_baudเป นฟ งก ชั่ นกํ าหนดอั ตราบอดในการสื่ อสารของโมดู ล UART1 กั บคอมพิ วเตอร

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

พารามิ เตอร

baud - กํ าหนดค าอั ตราบอดในการสื่ อสารของโมดู ล UART1 มี ค า 2400 ถึ ง 115,200

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

uart1_set_baud(19200); // กํ าหนดอั ตราบอดในการสื่ อสารเป น 19,200 บิ ตต อวิ นาที

Page 11: Unicon05-129140

Unicon 139

5.4.5.8 uart1_availableเป นฟ งก ชั่ นตรวจสอบการรั บข อมู ลเข ามาของโมดู ล UART1 เมื่ อติ ดต อกั บคอมพิ วเตอร

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

การคื นค า

- เป น 0 เมื่ อไม มี ข อมู ลเข ามา

- มากกว า 0 โดยมี ค าเท ากั บจํ านวนของอั กขระที่ ได รั บ

ตั วอย างที่ 5-13char x =uart1_available();

// ตรวจสอบว ามี ข อมู ลเข ามาทางภาครั บของโมดู ล UART1 หรื อไม // ถ า x มี ค ามากกว า 0 แสดงว ามี ข อมู ลเข ามาแล ว ควรอ านออกไปด วยฟ งก ชั่ น uart1_getkey ทั นที

5.4.5.9 uart1_getkeyเป นฟ งก ชั่ นอ านข อมู ลจากบั ฟเฟอร ตั วรั บของโมดู ล UART1

รู ปแบบchar uart1_getkey(void)

การคื นค า

- เป น 0 เมื่ อยั งไม มี การรั บอั กขระใดๆ

- เป นค าของอั กขระที่ รั บได ในรู ปแบบของรหั สแอสกี้

Page 12: Unicon05-129140

140 Unicon