สื่อประกอบการสอนวิชา�หุ่นยนต์เบื้องต้น (Basic Robotics)�20105-2121
หน่วยที่ 5
ไมโครคอนโทรลเลอร์และ�การเชื่อมต่อกับคอมพิวเตอร์
บริษัท สำนักพิมพ์เอมพันธ์ จำกัด�AIMPHAN PRESS CO., LTD.
สาระการเรียนรู้
จุดประสงค์การเรียนรู้
1. ไมโครคอนโทรลเลอร์ (Microcontroller)
📌
ไมโครคอนโทรลเลอร์ (อังกฤษ: Microcontroller มักย่อว่า JC, μC หรือ MCU) คืออุปกรณ์ควบคุมขนาดเล็ก มีลักษณะใกล้เคียงกับระบบคอมพิวเตอร์ ซึ่งไมโครคอนโทรลเลอร์ได้รวมซีพียู หน่วยความจำ ทั้งหน่วยความจำถาวร และหน่วยความจำชั่วคราว พอร์ตดิจิทัลอินพุต/เอาต์พุต (Input/Out-put) พอร์ตอะนาล็อกอินพุต/เอาต์พุต ซึ่งเป็นส่วนประกอบหลักของระบบคอมพิวเตอร์ไว้ตัวถังเดียวกันซึ่งไมโครคอนโทรลเลอร์สามารถนำมาประยุกต์ใช้งานได้หลากหลาย และยังสามารถเขียนโปรแกรมคำสั่งเพื่อควบคุมขาอินพุต/เอาต์พุต ในการสั่งงานควบคุมมอเตอร์ในหุ่นยนต์ประเภทต่างๆ จึงกล่าวได้ว่าไมโครคอนโทรลเลอร์สามารถประยุกต์ใช้งานด้านหุ่นยนต์ ระบบอัตโนมัติ และงานในลักษณะต่าง ๆ ได้
รูปที่ 5.1 โครงสร้างโดยทั่วไปของไมโครคอนโทรลเลอร์
2. บอร์ดอาดุยโน่ (Arduino)
📌
บอร์ดอาดุยโน่ (Arduino) ดังรูปที่ 5.2 เป็นไมโครคอนโทรลเลอร์บอร์ดแบบสำเร็จรูปสร้างมาจากไมโครคอนโทรลเลอร์ตระกูล AVR ของ ATMEL โดยข้อดีของบอร์ดคือ เรื่องของ Open Source ที่สามารถนำไปพัฒนาต่อเป็นอุปกรณ์ต่างๆ ได้และความสามารถในการเพิ่ม Boot Loader เข้าไปที่ตัวไมโครคอนโทรลเลอร์ จึงทำให้การ Upload Code เข้าตัวบอร์ดสามารถทำได้ง่ายขึ้นและยังมีการพัฒนาซอฟต์แวร์ที่ใช้ในการควบคุมตัวบอร์ดของอาคุยโน่เป็นภาษา C ++ ซึ่งง่ายต่อการพัฒนา
อีกทั้งยังสามารถต่อโมดูลภายนอก เพื่อเพิ่มความสามารถ
ให้กับบอร์ด และใช้งานได้ง่ายขึ้น ที่เรียกว่าเป็นบอร์ดเสริม
(Shield) ดังรูปที่ 5.3 และรูปที่ 5.4
รูปที่ 5.3 Keypad Shield For Arduino
รูปที่ 5.2 บอร์ดอาดุยโน่ Model:
Arduino Uno R3
รูปที่ 5.4 CNC Shield V3 for Arduino Uno
2.1 จุดเด่นของบอร์ดอาดุยโน่ (Arduino)
2.2 Layout & Pin out Arduino Board
(Model: Arduino Uno R3)
รูปที่ 5.5 ส่วนประกอบของบอร์ด Arduino Uno R3
จากรูปที่ 5.5 แสดงถึงส่วนประกอบของบอร์ดอาดุยโน่ ดังนี้
1. VO Port: ดิจิทัลอินพุต/เอาต์พุต ตั้งแต่ขา D0-D13 นอกจากนี้ บางขาจะทำหน้าที่อื่น ๆ
เพิ่มเติมด้วย เช่น ขา 0,1 เป็นขา Tx, Rx Serial, ขา 3, 5, 6, 9, 10 และ 11 เป็นขา PWM, ขา 10, 11,12 เป็นขา SPI (SS, MOSI, MISO)
2. ICSP Port: Atmega328 เป็นพอร์ตที่ใช้โปรแกรม Bootloader
3. MCU: Atmega328 เป็นไมโครคอนโทรลเลอร์ที่ใช้บนบอร์ดอาดุยโน่
4. VO Port: พอร์ตอะนาล็อกอินพุฒ/เอาต์พุต ตั้งแต่ขา A0-A5 โดย A4 และ A5 รองรับการเชื่อมต่อสื่อสารแบบ I2C SDA กับ SCL ตามลำดับ
5. Power Port: ไฟเลี้ยงของบอร์ดเมื่อต้องการจ่ายไฟให้กับวงจรภายนอก ประกอบด้วย ขาไฟ +3.3 V จำนวน 1 ขา, +5V จำนวน 1 ขา, GND จำนวน 2 ขา, Vin จำนวน 1 ขา
6. Power Jack รองรับไฟฟ้ากระแสตรงจากภายนอก แรงดันอยู่ระหว่าง 7-12V
7. MCU: ของ Atmega 16U2 เป็นหน่วยไมโครคอนโทรลเลอร์ที่ทำหน้าที่แปลง USB to Serial โดยจะติดต่อกับคอมพิวเตอร์ผ่าน Atmega16U2
8. USB Port: ใช้สำหรับต่อกับคอมพิวเตอร์ เพื่ออัปโหลดโปรแกรมเข้าไมโครคอนโทรลเลอร์ (MCU) และจ่ายไฟจากพอร์ตคอมพิวเตอร์ให้กับบอร์ด
9. Reset Button:เป็นปู่มรีเซ็ต (Reset) ใช้กดเมื่อต้องการให้ไมโครคอนโทรลเลอร์เริ่มต้นการทำงานใหม่
10. ICSP Port: เป็นพอร์ตที่ใช้โปรแกรม Visual Com port uน Atmega16U2
3. การเขียนโปรแกรมภาษาซี
สำหรับไมโครคอนโทรลเลอร์
📌
ไมโครคอนโทรลเลอร์ นอกจากฮาร์ดแวร์ (Hardware) นั้น ยังมีส่วนประกอบสำคัญอีกส่วน คือ ชุดคำสั่งหรือโปรแกรม สำหรับสั่งงานให้ไมโครคอนโทรลเลอร์ทำงานตามคำสั่งที่เรียกว่า ซอฟต์แวร์ซึ่งการศึกษาจำเป็นต้องเรียนรู้หลักการเขียนโปรแกรมควบคุมการทำงานของไมโครคอนโทรลเลอร์เพื่อนำไปประยุกต์ใช้ในการควบคุมหุ่นยนต์
3.1 ขั้นตอนในการพัฒนาโปรแกรม
โปรแกรมคอมพิวเตอร์ เป็นการพัฒนากระบวนการควบคุม ซึ่งไม่สามารถเริ่มต้นจากการเขียนคำสั่งด้วยภาษาคอมพิวเตอร์ได้ทันที สำหรับผู้เรียนรู้ใหม่ และไม่มีประสบการณ์ การเขียนโปรแกรมควบคุมจำเป็นต้องมีกระบวนการวิเคราะห์ วางแผน และปฏิบัติตามกระบวนการทำงาน แบ่งออกเป็น 5 ขั้นตอน คือ
1. ขั้นตอนการวิเคราะห์ปัญหา โดยจะเริ่มจากการวิเคราะห์ผลลัพธ์ที่ต้องการ (Output) แล้วย้อนกลับไปพิจารณาข้อมูลที่นำเข้าสู่ระบบ (Input) ตลอดจนข้อมูลอื่น ๆ ที่เกี่ยวข้องในการที่จะนำไปใช้ประมวลผล
2. ขั้นตอนการออกแบบวิธีการแก้ปัญหา เมื่อทราบผลลัพธ์ที่ต้องการและข้อมูลที่นำเข้าสู่ระบบแล้วนั้น ขั้นตอนถัดไปคือกำหนดการวางแผนในการแก้ปัญหา โดยใช้วิธีเขียนลำดับขั้นตอนการแก้ปัญหาที่เรียกว่า อัลกอริทีม (Algorithm) และใช้เครื่องมือสำหรับช่วยในการเขียนอัลกอริทีม เช่น การเขียนรหัสจำลอง (Pseudo Code) การเขียนผังงาน (Flowchart)
3. ขั้นตอนการเขียนโปรแกรม เลือกภาษา คอมพิวเตอร์ที่เหมาะสม โดยพิจารณาจากความสามารถของผู้เขียนโปรแกรม และประสิทธิภาพของภาษา คอมพิวเตอร์นั้น ๆ ให้เหมาะสม กับระบบงานที่ต้องการแล้วเขียนชุดคำสั่งเป็นภาษา คอมพิวเตอร์ตามอัลกอริทึมที่ได้ออกแบบไว้
4. ขั้นตอนการทดสอบและแก้ไขโปรแกรม ภายหลังจากเขียนโปรแกรมเสร็จสิ้น ต้องทำการทดสอบโปรแกรม เพื่อหาข้อผิดพลาด (Error) หากตรวจพบข้อผิดพลาดในขั้นตอนการทดสอบโปรแกรมจะต้องนำมาปรับปรุงแก้ไขโปรแกรมเพื่อให้สามารถทำงานได้
5. ขั้นตอนการจัดทำเอกสารประกอบ อธิบายกระบวนการทำงานของโปรแกรม เมื่อโปรแกรม
ผ่านการทดสอบแล้ว จะต้องจัดทำเอกสารประกอบ เพื่อความเข้าใจของผู้ที่จะนำไปใช้งาน ซึ่งจำเป็น ต้องมีรายละเอียดของวิธีการใช้งานโปรแกรม วิธีการติดตั้งโปรแกรม ตลอดจนขั้นตอนในการพัฒนาโปรแกรมรวมถึงอัลกอริทึมและโปรแกรมต้นฉบับ (Source Code) เพื่อประโยชน์ในกรณีที่ต้องการแก้ไขหรือปรับปรุงโปรแกรมภายหลัง
ขั้นตอนวิธี หรือ Algorithm (ภาษาไทย : อัลกอริทีม) หมายถึงกระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับ หรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอน เพื่อให้ได้ผลลัพธ์ที่ต้องการ ซึ่งแตกต่างจากการแก้ปัญหาแบบสามัญสำนึก หรือฮิวริสติก (Heuistic) ซึ่งโดยทั่วไปขั้นตอนวิธีจะประกอบด้วย วิธีการเป็นขั้นตอน และมีการทำงานแบบวนช้ำ หรือเวียนเกิดโดยใช้ตรรกะ และ/หรือ ในการเปรียบเทียบในขั้นตอนต่าง ๆ จนกระทั่งเสร็จสิ้นการทำงานตามผลลัพธ์ที่ต้องการ ซึ่งสามารถเขียนโปรแกรมให้เหมือนหรือไม่ก็ได้ โดยจะมีความแตกต่างที่จำนวนและชุดคำสั่งที่ใช้ต่างกัน ซึ่งส่งผลให้เวลาและขนาดหน่วยความจำที่ต้องการแตกต่างกัน หรือสามารถเรียกได้อีกอย่างว่า มีความซับซ้อน
แตกต่างกัน
ผังงาน (Flowchart) เป็นขั้นตอนกระบวนการที่อาศัยรูปภาพ (Image) หรือสัญลักษณ์ Symbol
ที่ใช้เขียนแทนขั้นตอน คำอธิบาย ข้อความ หรือคำพูดที่ใช้ในอัลกอริทีม (Algorithm) เพราะการนำเสนอขั้นตอนของงานให้เข้าใจตรงกัน ระหว่างผู้ที่เกี่ยวข้องด้วยคำพูด หรือข้อความ ทำได้ยากกว่า ซึ่งมีการนำรูปภาพ หรือสัญลักษณ์ในข้างต้นเข้ามาประกอบการอธิบาย และแสดงลำดับขั้นตอนการเขียนโปรแกรมโดยผังงานในการเขียนโปรแกรมเป็นรูปทรงเรขาคณิต ที่บรรจุรายละเอียดกระบวนการประมวลผล โดยมีรูปทรงในการใช้งาน ดังตารางที่ 5.1
ตารางที่ 5.1 ผังการทำงาน
(Flowchart)
ตารางที่ 5.1 (ต่อ)
4. ภาษาซีสำหรับไมโครคอนโทรลเลอร์
📌
ไมโครคอนโทรลเลอร์ ไม่ว่าจะเป็นตระกูลใดก็ตาม จะทำงานก็ต่อเมื่อมีชุดคำสั่งที่สั่งให้ทำงานตามต้องการ ที่เรียกว่า โปรแกรม โดยคำสั่งหรือโปรแกรมที่ไมโครคอนโทรลเลอร์เข้าใจและสามารถทำงานได้จะอยู่ในรูปของลอจิก 0 และ 1 หากนำลอจิกมาจับกลุ่ม ก็เป็นเลขฐาน 16 ที่เรียกว่า ภาษาเครื่อง ซึ่งภาษาเครื่องเป็นภาษาที่มนุษย์ไม่สามารถเข้าใจได้ เนื่องจากเป็นเลขฐาน 16 ทั้งหมด ดังนั้น ในการเขียนโปรแกรมจึงจำเป็นต้องใช้ภาษาที่มนุษย์สามารถเข้าใจได้ โดยภาษาที่มนุษย์เข้าใจได้และใกล้เคียงกับภาษาเครื่องมากที่สุด คือภาษาแอสเซมบลี แต่เนื่องจากการพัฒนางานโดยใช้ภาษาแอสเซมบลีเป็นไปได้ยากและซับซ้อน ดังนั้น เพื่อให้ง่ายและรวดเร็วต่อการพัฒนาโปรแกรมใช้งานไมโครคอนโทรลเลอร์ภาษาที่เหมาะสมคือ ภาษาชี
4.1 โครงสร้างของภาษาซี
ภาษาซี เป็นภาษาที่ได้รับความนิยม ที่ง่ายต่อการทำความเข้าใจ ง่ายต่อการนำไปพัฒนา และสามารถเขียนโปรแกรมแยกเป็นส่วน ๆ โดยแต่ละส่วนยังเรียกใช้งานจากส่วนอื่นของโปรแกรมได้ทำให้สามารถแบ่งงานให้หลายคนช่วยกันพัฒนาได้ เรียกว่า ฟังก์ชัน (Function) โดยโครงสร้างของภาษาซีมีส่วนประกอบ 2 ส่วน คือ ส่วนหัวโปรแกรม และส่วนตัวโปรแกรม ดังรูปที่ 5.6 เริ่มต้นจาก ส่วนตัวโปรแกรม จะมีฟังก์ชัน หลักชื่อว่า main() เป็นส่วนแรกของการเริ่มต้นการทำงาน และฟังก์ชันอื่นที่ผู้พัฒนาเขียนขึ้นเพื่อใช้งานเป็นส่วน ๆ เรียกว่า ฟังก์ชันรอง หรือฟังก์ชันย่อย (Sub Function)
รูปที่ 5.6 โครงสร้างการเขียนโปรแกรมด้วยภาษาชี
4.2 โครงสร้างของภาษาซีสำหรับอาดุยโน่ (Arduino)
โครงสร้างภาษาซีสำหรับอาคุยโน่ ถูกจัดวางใหม่ให้ง่ายต่อการพัฒนาโปรแกรมของผู้ใช้งานเบื้องต้นซึ่งผู้ออกแบบได้จัดวางให้ผู้พัฒนาใช้งานได้ง่าย โดยโครงสร้างหลัก ๆ จะมีเพียง 2 ส่วนเท่านั้น คือ
1.setup เป็นฟังก์ชันที่ใช้ในการกำหนดค่าให้ขาต่าง ๆ ทำงานเป็นอินพุต/เอาต์พุต
2. loop เป็นส่วนโปรแกรมที่ทำงานประมวลผล
เมื่อทำงานครบแล้วจะวนกลับมาทำงานซ้ำ
ตั้งแต่ขั้นตอนแรก ดังรูปที่ 5.7 (a) แต่ถ้าต้อง
การเขียนโปรแกรมขั้นสูง ก็สามารถเขียนใน
ส่วนหัวโปรแกรมและส่วนของฟังก์ชันย่อยที่
เขียนขึ้นใช้งานเอง ดังรูปที่ 5.7 (b) เพื่อความ
สะดวกและความเข้าใจ ซึ่งเป็นวิธีการเดียวกับ
ภาษาซีมาตรฐาน
รูปที่ 5.7 โครงสร้างการเขียนโปรแกรมด้วยภาษาซีสำหรับอาดุยโน่
จากรูปที่ 5.7 โครงสร้างการเขียนโปรแกรมด้วยภาษาชีสำหรับอาดุยโน่ จะสามารถเขียนโปรแกรม
ในโปรแกรม Arduino IDE ที่ใช้ในการพัฒนโปรแกรมบนบอร์ดตระกูลอาคุยโน่ โดยสามารถเขียน
โปรแกรมตามโครงสร้าง ได้ดังรูปที่ 5.8
ตัวอย่างโปรแกรมที่เขียนด้วยโครงสร้างแบบพื้นฐาน
รูปที่ 5.8 ตัวอย่างโปรแกรมที่เขียนด้วยโครงสร้างแบบพื้นฐาน
ตัวอย่างโปรแกรมที่เขียนด้วยโครงสร้างแบบขั้นสูง
รูปที่ 5.9 ตัวอย่างโปรแกรมที่เขียนด้วยโครงสร้างแบบขั้นสูง
5. ตัวแปรในภาษาซี (Variable)
📌
ตัวแปร คือ การประกาศที่จะใช้ในโปรแกรม ซึ่งจะส่งผลต่อการจองพื้นที่ในหน่วยความจำ เพื่อนำไปใช้งานในฟังก์ชัน โดยการใช้ชื่อตัวแปรแทนการกำหนดเป็นค่าแอดเดรสของหน่วยความจำ รูปแบบของการประกาศตัวแปรเป็นดังนี้
6. หลักการตั้งซื่อตัวแปรในภาษาซี
📌
หลักการตั้งชื่อตัวแปร มีข้อกำหนดหลัก ๆ อยู่ 4 ประการ คือ
7. ชนิดของตัวแปรในภาษาซีสำหรับอาดุยโน่
📌
การจองพื้นที่ในหน่วยความจำของคอมพิวเตอร์ สำหรับเก็บข้อมูลที่ต้องใช้ในการทำงานของโปรแกรม ถ้าจะใช้ข้อมูลใดก็ให้เรียกผ่านชื่อของตัวแปรที่เก็บเอาไว้ ดังตารางที่ 5.2
ตารางที่ 5.2 ชนิดของตัวแปรในภาษาชีสำหรับอาดุยโน่
8. ตัวดำเนินการในภาษาซี
📌
ตัวดำเนินการในภาษาซี แบ่งตามลักษณะการกระทำได้ 5 กลุ่ม คือ
โดยในแต่ละลักษณะ มีรายละเอียดดังต่อไปนี้
ตารางที่ 5.3 ตัวดำเนินการทางคณิตศาสตร์
ตารางที่ 5.4 ตัวดำเนินการทางลอจิก
ตารางที่ 5.5 ตัวดำเนินการบูลีน หรือตัวดำเนินการตรรกะ
ตารางที่ 5.6 ตัวดำเนินการเปรียบเทียบ
ตารางที่ 5.7 ตัวกระทำดำเนินการประสม
9. ฟังก์ชันการดำเนินการแบบทางเลือก
📌
ในการเขียนโปรแกรมให้ไมโครคอนโทรลเลอร์ทำงานตามที่ต้องการ นอกจากฟังก์ชันที่สั่งให้ทำงานเป็นลำดับแล้วนั้น การเขียนโปรแกรมจำเป็นต้องใช้ฟังก์ชันที่มีการทำงานแบบเลือกเส้นทางการทำงานโดยการทำตามเงื่อนไข หรือการให้ทำซ้ำแบบมีเงื่อนข หรือไม่มีเงื่อนไข โดยฟังก์ชันที่มีการทำงานแบบทางเลือก ในภาษาซีมีด้วยกัน 4 ฟังก์ชัน คือ
9.1 ฟังก์ชัน if (ทางเลือกเดียว)
ฟังก์ชัน if เป็นฟังก์ชันที่มีการตรวจสอบเงื่อนไข ซึ่งถ้าเงื่อนไขเป็นจริง จะทำงานตามชุดฟังก์ชัน
ที่กำหนดไว้ รูปแบบดังนี้
ตารางที่ 5.8 if (เงื่อนไขที่ตรวจสอบ)
9.2 ฟังก์ชัน if-else (สองทางเลือก)
การตรวจสอบเงื่อนไขที่มีชุดฟังก์ชัน ให้ทำงานเมื่อเงื่อนไขถูก และมีชุดฟังก์ชันให้ทำงานเมื่อเงื่อนไขผิด จะใช้ฟังก์ชัน if-else มาใช้งาน ซึ่งมีรูปแบบดังนี้
ตารางที่ 5.9 if (เงื่อนไขที่ตรวจสอบ) else
9.3 ฟังก์ชัน if else-if (หลายทางเลือก)
ฟังก์ชันที่มีการตรวจสอบเงื่อนไขหลายเงื่อนไข และมีชุดฟังก์ชันที่เตรียมให้ทำงานในแต่ละเงื่อนไขหากเงื่อนไขนั้น ๆ ถูกต้อง
ตารางที่ 5.10 if (เงื่อนไขที่ตรวจสอบ) else if (เงื่อนไขที่ตรวจสอบ)
9.4 ฟังก์ชัน switch...case (หลายทางเลือก)
ฟังก์ชัน switch...case เป็นฟังก์ชันหลายทางเลือกอีกฟังก์ชันหนึ่ง ที่มีการทำงานคล้ายกับฟังก์ชัน if else-if ต่างตรงที่การตรวจสอบเงื่อนไขจะมีวิธีตรวจสอบการเท่ากันของเงื่อนไขตัวแปรที่ใช้ตรวจสอบเท่านั้น โดยฟังก์ชัน switch...case มีคำสั่งที่สำคัญอยู่ 3 คำสั่ง คือ
1. switch เป็นคำสั่งที่ใช้ตรวจสอบเงื่อนไข เพื่อใช้เลือก case ในการทำงาน
2. case เป็นชุดทางเลือก หากตรวจสอบเงื่อนไข switch แล้วเงื่อนไขของ case นั้นเป็นจริง โปรแกรมจะเข้าไปทำงานต่อใน case นั้น ๆ
3. break เป็นคำสั่งที่จะอยู่ใน case ทุก case คือ เมื่อทำงานตามคำสั่ง ตามเงื่อนไขแล้วนั้น break จะทำให้โปรแกรมหยุดทำงาน แต่หากไม่มีคำสั่ง breakใน case จะทำให้โปรแกรมทำงานต่อไปเรื่อย ๆ ไม่มีที่สิ้นสุด
ตารางที่ 5.11 switch...case (หลายทางเลือก)
10. ฟังก์ชันการดำเนินการแบบวนซ้ำ
📌
การเขียนโปรแกรมสั่งงานไมโครคอนโทรลเลอร์ในบางโปรแกรมที่พัฒนาขึ้น จะมีการทำงานแบบวนช้ำหรือวนรอบ เพื่อที่จะทำงานในชุดคำสั่งเดิม 1 โดยลักษณะการทำงานมีทั้งแบบมีเงื่อนไขหรือไม่มี
เงื่อนไขก็ได้ โดยในภาษาชีจะมีฟังก์ชันสั่งงานให้ไมโครคอนโทรลเลอร์ทำงานซ้ำหลัก ๆ อยู่ 3 รูปแบบ ดังนี้
10.1 ฟังก์ชัน for
ฟังก์ชัน for เป็นฟังก์ชันที่ใช้ในกรณีที่ทราบจำนวนรอบที่จะทำงานซ้ำแน่นอน เช่น 5 รอบ, 10 รอบ เป็นต้น
ตารางที่ 5.12 ตัวอย่างการใช้งานฟังก์ชัน for
ตารางที่ 5.13 ตัวอย่างการเขียนโปรแกรมฟังก์ชัน for
10.2 ฟังก์ชัน while
ฟังก์ชัน while เป็นฟังก์ชันที่ให้ทำงานวนซ้ำหรือวนรอบ โดยมีการตรวจสอบเงื่อนไขก่อน ถ้าหากเงื่อนไขถูกจะทำงานตามชุดฟังก์ชันที่เตรียมไว้ เมื่อทำงานในชุดฟังก็ชันเสร็จ จะมีการวนกลับไปตรวจสอบเงื่อนไขอีกครั้ง ซึ่งตรวจสอบแล้วเงื่อนไขผิด จะออกจากวงรอบการทำซ้ำ
ตารางที่ 5.14 ตัวอย่างการใช้งานฟังก์ชัน while
ตารางที่ 5.15 ตัวอย่างการเขียนโปรแกรมฟังก์ชัน while
10.3 ฟังก์ชัน do-while
ฟังก์ชัน do-while เป็นฟังก์ชันที่ให้ทำงานวนซ้ำหรือวนรอบ โดยมีการตรวจสอบเงื่อนไขคล้ายกับฟังก์ชัน while แต่มีต่างตรงที่ฟังก์ชัน do-while จะทำงานตามคำสั่งในลูป do ให้เรียบร้อยก่อน
แล้วจึงจะทำการพิจารณาเงื่อนไข ในเงื่อนไขของ while หากเงื่อนไขของ while เป็นจริง จะทำให้ลูป do ซ้ำ ๆ จนกว่าเงื่อนไขของ while เป็นเท็จ
ตารางที่ 5.16 ตัวอย่างการใช้งานฟังก์ชัน do-while
ตารางที่ 5.17 ตัวอย่างการเขียนโปรแกรมฟังก์ชัน do-while