Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore หนาวยที่3

หนาวยที่3

Published by chairaeng, 2019-11-16 10:51:27

Description: ebook_unit3

Search

Read the Text Version

หน่วยที่ 3 ฟังกช์ น่ั ของ Arduino

หน่วยการสอนที่ 4 เรือ่ ง ฟังกช์ ่ันพื้นฐานของ Arduino โปรแกรม Arduino IDE ได้จดั เตรยี มฟงั กช์ นั่ พ้ืนฐาน เชน่ ฟังกช์ นั่ เก่ยี วกบั ขาพอรต์ อินพุต เอาต์พุตดิจิตอล, อินพุตเอาต์พุตแอนะล็อคเป็นต้น ดังนั้นในการเขียนโปรแกรมจึงเรยี กใช้ฟังกช์ นั่ เหลา่ นี้ได้ทันทีโดยไมต่ ้องใชค้ าสง่ั #include เพ่อื ผนวกไฟล์เพม่ิ เติมแต่อย่างใด นอกจากฟังก์ชั่นพื้นฐานเหล่าน้ีแล้ว นักพัฒนาท่านอื่นๆ ท่ีร่วมในโครงการ Arduino น้ีก็ ได้เพ่ิมไลบรารีอื่นๆ เช่น ไลบรารีควบคุมมอเตอร์, การติดต่อกับอุปกรณ์บัส I2C ฯลฯ ในการ เรยี กใชง้ านต้องเพ่มิ บรรทัด #include เพื่อผนวกไฟลท์ ่เี หมาะสมก่อน จึงจะเรียกใชฟ้ ังกช์ ัน่ ได้ ในบทนี้จะอธิบายถึงการเรียกใช้ฟังก์ชั่นและตัวอย่างโปรแกรมสาหรับทาการทดลอง โดย ใชบ้ อรด์ Arduino Uno สาหรับวธิ ีการทดลองสามารถดูไดจ้ ากหน่วยท่ี 2 4.1 ฟังก์ชนั่ อนิ พตุ เอาต์พุตดจิ ติ อล (Digital l/0) คำอธบิ ำยและกำรเรยี กใช้ฟังกช์ ่นั 4.1.1 pinMode (pin,mode) ใช้กำหนดขำพอรต์ ใดๆใหเ้ ปน็ พอร์ตดจิ ิตอล พารามิเตอร์ pin – ใช้กำหนดขำพอร์ตใดๆ mode – โหมดกำรทำงำนเปน็ INPUT หรือ OUTPUT (คำ่ เป็น int) ตวั อย่าง 4.1 int ledPin = 13; // LED เชือ่ มตอ่ กับ pin 13 void setup ( ) { pinMode ( ledPin, OUTPUT) ; // ตงั้ เปน็ เอำต์พุต { void loop ( ) { digitalWrite(ledpin, HIGH); // LED ตดิ delay (1000); // หน่วงเวลำ 1 วินำที digitalWrite (ledPin, LOW); // LED ดบั delay (1000); // หน่วงเวลำ 1 วินำที }

4.1.2 digitalWrite (pin, value) สัง่ งำนให้ขำพอร์ท่ีระบุไวม้ ีคำ่ สถำนะเปน็ ลอจิกสงู (HIGH หรือ 1) หรือลอจกิ ต่ำ (LOW หรือ0) พารามิเตอร์ pin – ขำพอร์ของโมดูล value – มีค่ำ HIGH หรอื LOW ตัวอยา่ งที่ 4.2 int ledpin = 13; // LED เชอื่ มต่อกบั pin 13 void setup () { pinMode (ledPin, OUTPUT) // ตัง้ เปน็ เอำต์พุต } void loop () { digitalWrite(ledPin, HIGH); // LED ตดิ delay (300); // หนว่ งเวลำ 0.3 วินำที digitalWrite(ledPin, LOW); // LED ดบั delay (300); // หนว่ งเวลำ 0.3 วินำที } 4.1.3 digitalRead (pin) อำ่ นค่ำสถำนะของขำท่รี ะบุไว้ว่ำมคี ่ำเปน็ HIGH หรอื LOW พารามเิ ตอร์ pin – ขำพอรต์ ที่ต้องกำรอ่ำนค่ำ ซ่งึ ต้องเป็นขำพอรต์ ดิจติ อล ทำให้มคี ำ่ ไดจ้ ำก 0 ถงึ 13 หรอื เป็นตวั แปรท่ีมีค่ำอย่ใู นชว่ ง 0 ถึง 13 กไ็ ด้ คา่ ทีส่ ่งกลับ เปน็ HIGH หรือ LOW ตวั อยา่ งที่ 4.3 Int ledPin = 13; // LED เช่อื มต่อกบั pin 13 int inPin = 7; // ปุ่มกดทีเ่ ชอ่ื มต่อกับ pin 7 int val = 0; // ตวั แปรในกำรจัดเกบ็ คำ่ กำรอ่ำน void setup () {

pinMode (ledPin, OUTPUT); // ตงั้ คำ่ 31 เป็นเอำตพ์ ุต pinMode (inPin, INPUT); // ตงั้ 7 เป็นอนิ พตุ { void loop () } val = digitalRead(inPin) // อ่ำนขำอนิ พุต digitalWrite(ledPin, val); // ตั้ง LED ให้เป็นค่ำของปุ่ม { กาหนดให้ขา 7 เป็นอนิ พตุ สถานะของ LED ท่ขี า 13 จะเปล่ยี นแปลงตามสถานะของอินพุตขา 7 4.1.4 การกาหนดโหมดของขาพอร์ต ก่อนใช้งำนต้องกำหนดโหมดกำรทำงำนของขำพอร์ตดิจิตอล ให้เป็นอินพุตหรือเอำต์พุต กำหนดจำกฟังกช์ ัน่ pinMode() มีรปู แบบดงั น้ี pinMode(pin,mode); เมอ่ื pin คอื หมำยเลขขำที่ต้องกำร Mode คอื โหมดกำรทำงำน (INPUT หรือ OUTPUT) หลังจำกท่ีกำหนดให้เป็นเอำต์พุตแล้วเมื่อต้องกำรเขียนค่ำไปยังขำน้ันๆ ให้เรียกใช้ฟังก์ช่ัน digitalWrite() โดยมีรูปแบบดังน้ี digitalWrite(pin,value); เม่ือ pin คือหมำยเลขขำทตี่ ้องกำร value สถำนะลอจิกทต่ี ้องกำร (HIGH หรือ LOW) 4.2 ฟงั กช์ ่ันเกี่ยวกับการสื่อสารผ่านพอร์ตอนกุ รม ใช้สำหรบั สื่อสำรขอ้ มลู ระหว่ำงฮำร์ดแวร์ Arduino กับคอมพวิ เตอร์ หรอื อปุ กรณอ์ ่ืนๆ โดยจะ แบ่ง พอร์ตสำหรับเชื่อมต่อออกเป็น 2 ส่วนคือ ส่วนแรกติดต่อพอร์ตอนุกรมเสมือน (Virtual Com Port) จำกกำรทำงำนของส่วนเชื่อมตอ่ พอร์ต USB ฟงั ก์ชัน่ ทใ่ี ชค้ อื Serial อีกส่วนหน่ึงคือ ขำพอร์ตสื่อสำรข้อมูลอนุกรมโดยใช้ขำ0 (RxD) และ 1 (TxD) ฟังก์ชั่นของ Arduino ที่ใช้คือ Serial1 ดังนั้นเม่ือเลือกใช้งำนเป็นขำพอร์ตสื่อสำรข้อมูลอนุกรมแล้วจะไม่สำมำรถ ใชข้ ำพอร์ต 0 และ 1 เป็นพอรต์ ดิจติ อลได้

4.2.1 Serial .begin (int datarate) กำหนดค่ำอัตรำบอดของกำรรับส่งข้อมูลอนุกรมในหน่วยบิตต่อวินำที (bits per second : bps) ใช้ค่ำต่อไปน้ี 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 หรือ 115200 พารามิเตอร์ Int datarate ในหนว่ ยบิตตอ่ วนิ ำที (baud หรือ bps) ตวั อยา่ งที่ 4.5 void setup ( ) { Serial.begin (9600) ; // เปิดพอรต์ อนกุ รมอัตรำกำรรบั สง่ ขอ้ มูล 9600 bps } เป็นกำรเลอื กอัตรำบอดเทำ่ กับ 9600 บติ ต่อวินำที ตวั อยา่ งที่ 4.6 คำสัง่ ท่ีใชก้ ำหนดอตั รำกำรสง่ ขอ้ มูลของ Arduino จะใส่ไว้ในฟังก์ชนั่ void setup() Serial.begin(9600); // กำหนดอัตรำกำรสง่ ข้อมลู เปน็ 9600 คาสัง่ ทใ่ี ชใ้ ห้ Arduino ส่งข้อความมาให้ คอมพิวเตอร์ Serial.print(\"I Love \"); // ปริ้นคำวำ่ \"I Love \" แตไ่ มข่ ึ้นบนั ทดั ใหม่ จะไมม่ ี In Serial.println(\"My arduino\"); // ปริน้ คำว่ำ \"Arduino\" แล้วขนึ้ บรรทดั ใหม่


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook