ระบบอิเลก็ ทรอนกิ ส์ 48
อัตโนมตั ิ
10. กรณตี ้องการเชค็ วา่ โคดไมม่ ขี ้อผิดพลาด สามารถกดปุ่มเครอื่ งหมายถูก Compile ถ้าไม่มีปัญหา
ก็จะขึ้นคาวา่ Done compiling
ภาพที่ 3-31 คอมไพลแ์ ละอัพโหลดโปรแกรม [7]
11.หรือจะข้ามไปกดปุ่มลูกศรเลยก็ได้ จะเป็นการคอมไพล์และอัพโหลดโปรแกรมทีเดียว ถ้าไม่มีปัญหา
จะขึ้นคาว่า Done uploading พรอ้ มแสดงผลลัพธ์ไฟกระพริบออกท่ีบอร์ด Arduino ตามโคดคาส่ังที่
เราเขยี นเขา้ ไป
49 ระบบอเิ ลก็ ทรอนิกส์
อตั โนมัติ
ภาพท่ี 3-32 Done uploading [7]
3.1.6 การพฒั นาข้ามแพลตฟอรม์
แพลตฟอร์ม คือสภาวะแวดล้อมท่ีประกอบด้วยฮาร์ดแวร์และซอฟต์แวร์ของระบบ
คอมพิวเตอร์ระบบหน่ึง เช่น แพลตฟอร์มเอ็มเแสดอสบนเคร่ืองคอมพิวเตอร์ที่ใช้ซีพียู 80486, ยู
นิกส์ บนเคร่ืองซัน SPARC station, System 7 บนเครื่องแมคอินทอช Powerbook 180 เป็นต้น จะ
เห็นไดว้ า่ ในคอมพวิ เตอรท์ ใ่ี ชร้ ะบบปฏิบัตกิ ารตา่ งกัน ก็จะมี Platform ที่ตา่ งกนั ไปด้วย
แพลตฟอร์มจะประกอบด้วย ระบบปฏิบัติการ ,โปรแกรมประสานงานระบบ
คอมพิวเตอร์ และ ไมโครโพรเซสเซอร์ ซึ่ง Microchip ของคอมพิวเตอร์ใช้ในการทางานด้ายตรรกะ
และจัดการการเคล่ือนย้ายข้อมูล ระบบปฏิบัติการต้องได้รับการออกแบบให้ทางานกับคาส่ังของ ไม
โครโพรเซสเซอร์ เช่น Microsoft Windows 95 ได้รับการสร้างให้ทางานกับชุดคาส่ังของ ไมโคร
โพรเซสเซอร์ของ Intel เพ่ือการใช้คาสั่งร่วมกัน นอกจากนี้ ยังหมายถึงส่วนอื่น ๆ เช่น เมนบอร์ด
และ บัสของข้อมูล แต่ส่วนเหล่านี้กาลังเพิ่มลักษณะที่เป็นโมดูล และมาตรฐานมากขึ้น ในอดีต
โปรแกรมประยุกต์แต่ละโปรแกรมยังจะเขียนใหม่ให้ทางานเฉพาะ platform เน่ืองจากแต่ละ Platform
มีโปรแกรมอินเตอร์เฟซท่ีต่างกัน ดังนั้น โปรแกรมของคอมพิวเตอร์ส่วนบุคคลต้องมีการเขียนให้
ทางานกบั Windows ชดุ หนง่ึ และทางานกับ Macintosh อีกชุดหนึ่ง แต่ระบบเปิดหรือมาตรฐานด้าน
อินเตอร์เฟซยินยอมให้บางโปรแกรมทางานกับ Platform ที่ต่างกันโดยผ่านโปรแกรมตัวกลาง หรือ
broker Programs
ระบบอเิ ลก็ ทรอนิกส์ 50
อัตโนมัติ
ข้ามแพลตฟอร์ม หรือ หลายแพลตฟอร์ม (อังกฤษ: Cross-platform) หมายถึงการ
ท่โี ปรแกรมคอมพวิ เตอร์ ภาษาโปรแกรม ระบบปฏิบัติการ หรือ ซอฟต์แวร์ชนิดอื่น ๆ สามารถทางาน
ได้ในหลายแพลตฟอร์มคอมพิวเตอร์ ตัวอย่างเช่น โปรแกรมคอมพิวเตอร์สามารถทางานได้บน
ไมโครซอฟท์วินโดวส์ สาหรับสถาปัตยกรรม x86 และ Mac OS X บน PowerPC หรือโปรแกรมท่ี
สามารถควบคุมไดผ้ ่าน สมาร์ทโฟน ทง้ั Android และ ios
และแนน่ อนในยุคปจั จบุ ันอนิ เทอร์เนต็ มีบทบาทในชีวิตประจาวันและฝังตัวอยู่ในอุปกรณ์รอบตัวท่ีเราใช้
กันประจา ตัวอย่างเช่น Computer, Smartphone, Smart TV, Smart Plug, Smart Device
สาหรับวัดสภาพแวดล้อม หรืออุปกรณ์อื่นๆ อีกมากมาย อุปกรณ์ต่างๆท่ีกล่าวมาข้างต้นล้วน
สามารถสื่อสารกันอย่างเป็นระบบด้วยอินเทอร์เน็ตได้ท้ังสิ้น หรือสามารถเรียกรวมๆว่าอุปกรณ์
IoT(Internet of Things) หากมองในส่วนของกลุ่มนักพัฒนาอุปกรณ์จาพวก บอร์ด NodeMCU,
บอร์ด Raspberry Pi, หรือแม้กระทั่งบอร์ด Arduino ท่ีสามารถเช่ือมต่ออินเทอร์เน็ตได้ก็ถือว่าเป็น
อปุ กรณ์ IoT แทบทัง้ สน้ิ
หากเราต้องการจะเชื่อมต่ออุปกรณ์ท่ีกล่าวมาร่วมกัน จาเป็นต้องมีตัวกลางในการ
เช่ือมต่อ ซ่ึงในกรณีท่ีเราจะทาระบบ IoT อย่างใดอย่างหน่ึงจะต้องนาความรู้หลายส่วนมาประยุกต์ใช้
ร่วมกนั ตัวอย่างเช่น การใช้งานไมโครคอนโทรเลอร์อ่านค่าข้อมูลจากเซ็นเซอร์ การส่งข้อมูลข้ึนไปยัง
เซิร์ฟเวอร์ การเขียนแอพพลิเคช่ันที่เป็นตัวกลางระหว่างผู้ใช้งานกับตัวฮาร์ดแวร์ ซ่ึงทั้งหมดน้ีหากจะ
ศึกษาจะใช้เวลาพอสมควร ดังน้ันจะยกตัวอย่าง Blynk Platform ท่ีจะทาให้อุปกรณ์ IoT สามารถ
เชอื่ มกนั ไดง้ ่าย
Blynk Platform คอื อะไร
Blynk Platform เป็น Open Source แพลตฟอร์มอย่างหน่ึง ซ่ึงออกแบบมาสาหรับงาน IoT ที่
จะทาให้อุปกรณ์ต่างๆเช่ือมต่อเข้ากับระบบผ่านอินเทอร์เน็ตได้โดยง่าย สามารถควบคุมการทางาน
อปุ กรณฮ์ ารด์ แวรจ์ ากระยะไกลผ่าน Application บน Smartphone ในส่วนของค่าบริการหากใช้งาน
Blynk Server จะสามารถใช้งานฟรีสาหรับอุปกรณ์ Prototype และมีค่าบริการสาหรับเชิงธุรกิจ (ดู
เพิ่มเติมได้ที่ link) แต่ข้อดีของ Blynk Platform คือทางผู้ผลิตแจก Source Code สาหรับตั้ง Blynk
Server ด้วยตนเองไดด้ ้วยดงั น้ันถา้ ใชว้ ิธีนี้
51 ระบบอิเล็กทรอนกิ ส์
อตั โนมัติ
4. ปรบั แตง่ และแก้ไข Code Warning และ Error
เม่ือ Developer เปิด source code บน IDE หรือ Editor ต่าง ๆ แล้วทาการ compile
และ run อาจจะพบเจอกบั Warning หรอื คาเตอื นต่าง ๆ จาก compiler จานวนมาก จากส่ิงท่ีพบเจอ
มานั้น ส่วนมากมักจะปล่อยมันไป แถมสร้างขึ้นมาอีก และให้เหตุผลว่า เนื่องจาก warning เหล่านั้นมัน
ไม่ได้ส่งผลอะไรต่อระบบ ซ่ึงส่ิงท่ีสาคัญอย่างมากของระบบงานคือ Source code เน่ืองจาก source
code คือส่ิงที่ทาใหเ้ กดิ ระบบขึ้นมาถ้า source code ไม่มีคุณภาพท่ีดี คาแนะนาคือ ต้ังเป้าหมายไว้เลย
วา่ Warning ตอ้ งไมม่ ีหรอื เปน็ ศูนย์ เนอ่ื งจากปัญหาเหล่านม้ี ันเกิดมาจากหลายสาเหตุ และอาจจะส่งผล
กระทบมากมาย ตัวอย่างเช่น มาจากการออกแบบที่ผิดพลาด ความไม่รู้ หรือ ความสามารถของ
Developer บางกรณีอาจจะทาให้เกิด bug หรือความผิดพลาดได้ง่ายบางกรณีอาจจะทาให้ระบบโดน
โจมตีได้ง่าย จากการตั้งเป้าหมายเหล่านี้ก็ทาให้เกิดปัญหาเช่นกัน เน่ืองจาก code แต่ละบรรทัดท่ีเขียน
ข้ึนมานั้น แน่นอนว่าท้ัง IDE และ compiler ทาการเตือนในเรื่องต่าง ๆ อยู่แล้ว แต่ถ้าคุณไม่ใส่ใจ ไม่
สนใจ code ท่ีคุณเขียนขึ้นมานั้นก็จะเป็น code ท่ีผิด รวมท้ังจานวนของ code ท่ีผิด ๆ ก็จะเยอะข้ึน
เร่ือย ๆ จนสุดท้ายมันอาจจะกลับมาเป็นปัญหาในอนาคตอีกด้วย ดังน้ันขอแนะนาให้ทาการแก้ไขและ
ปรับปรุงอย่างต่อเน่ือง ทาเพียงเท่านี้จานวน Warning ใน code จะน้อยลงก็หมดไปในท่ีสุด รวมท้ัง
ตอ้ งทาการวดั หรอื ดเู ร่อื ง Code Metric อยู่บอ่ ย ๆ เพ่ือทาใหร้ ู้สถานะ และ ส่ิงท่ตี อ้ งปรับปรุงแกไ้ ข
Developer มันสาคัญมาก ๆ เขียน code ให้ทางานได้ กับ ทาให้ดี มันแตกต่างกันเยอะมาก ๆ จง
พัฒนาและปรับปรุงอย่างต่อเน่ือง เร่ิมจากการรู้ก่อนว่า เราเป็นอย่างไร จากน้ันนาการแก้ไขและ
ปรบั ปรงุ หลังจากนัน้ ทาการการวดั ผลว่าดีขน้ึ หรอื ไม่ และปรับปรุงตอ่ ไปเรอ่ื ย ๆ
4.1 การวิเคราะหส์ าเหตุ เครือ่ งมอื และขอ้ ความทร่ี ายงานการแจง้ เตือน/ความผดิ พลาด
1) สาเหตุของการเกิดปญั หา Code Warning
• มาจากการออกแบบที่ผิดพลาด
• ความไม่รู้ หรอื ความสามารถของ Developer
• บางกรณีอาจจะทาให้เกดิ bug หรือความผดิ พลาดไดง้ า่ ย
• บางกรณอี าจจะทาใหร้ ะบบโดนโจมตีได้งา่ ย
เน่ืองจาก code แต่ละบรรทัดท่ีเขียนข้ึนมานั้นแน่นอนว่าทั้ง IDE และ compiler ทาการ
เตอื นในเรื่องต่าง ๆ อยูแ่ ล้วดงั นนั้ ส่งิ เราควรใส่ใจและเรียนรู้คือทาไม code ท่ีเขียนข้ึนมาน้ันจึงโดนเตือน
จากนน้ั ก็ใหแ้ กไ้ ขปญั หาที่เกดิ ขนึ้
ระบบอิเลก็ ทรอนกิ ส์ 52
อตั โนมัติ
2) สาเหตุและการแก้ไข Code Warning และ Error ท่ีเกดิ ข้ึน กบั Arduino
เรมิ่ ตน้ กับ Arduino ใช้งานคร้ังแรกมกั เจอปญั หาตา่ งๆ Error ตา่ งๆ เชน่ หา Com port ไม่
เจอบา้ ง อัพโหลดไมเ่ ข้าบ้าง บทเรียนนีจ้ งึ รวบรวม ปัญหาและการแกป้ ญั หาต่างๆ
• การแก้ไขปัญหาขัน้ ต้น
ปญั หาที่ 1 เสียบ Arduino แล้วข้นึ วา่
Window could not find driver software for your device.
If you know the manufacturer of your device, you can visit its website
and check the support section for driver software.
ปัญหานี้ จะเกดิ กบั การท่ีใช้ Arduino ครงั้ แรก ใหเ้ ราตรวจสอบ โดยการเปลย่ี นชอ่ งเสียบ USB
เปลยี่ นสาย USB อาจจะเกิดจากไฟเลยี้ งไม่พอ สาย USB เสยี หากรา้ ยแรงทีส่ ุด บอร์ด Arduino ของ
เราเสีย กเ็ ป็นไปได้
ปัญหาท่ี 2 Com port ในโปรแกรม Arduino IDE ไม่ขึ้น
ตรวจสอบไดร์เวอร์ วา่ ตดิ ตัง้ ไดรเ์ วอร์แล้วหรอื ยัง หากเปน็ Arduino ตวั แพง สามารถเลือก
ไดร์เวอรไ์ ดใ้ น พอตเดอร์ Arduino IDE ได้เลยครบั
ปญั หาที่ 3 ข้ึนว่า avrdude: ser_open(): can't open device "\\.\COM ": The system
cannot find the file specified.
ภาพที่ 4-1 แสดงการ Error ของโปรแกรม [10]
53 ระบบอเิ ล็กทรอนิกส์
อัตโนมัติ
อาการนี้เกิดจาก Com port หลุด หรือ Com port ไม่ตรงให้เช็ค ท่ี Tools > port ว่าตรงหรือไม่ หาก
ตรงให้ลองเปล่ียนชอ่ งเสียบ USB
ปญั หาท่ี 4 Error ขนึ้ ว่า fatal error: LiquidCrystal_I2C.h: No such file or directory
ปัญหานี้เกิดจากยังไม่ได้ลง library หามาติดต้ังด้วยครับ โดยวิธีการให้เราค้นหา ช่ือไฟล์
ตามที่ Code แจ้ง error ขึ้นมา เช่นตัวอย่างแจ้งว่า หาไฟล์ช่ือว่า LiquidCrystal_I2C.h ไม่เจอ เราก็
เอาชื่อไฟล์ LiquidCrystal_I2C.h ไปคน้ หาลงใน Google
ภาพท่ี 4-2 แสดงการ Error ของโปรแกรม [10]
ปญั หาที่ 5 Error ข้ึน stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x4a
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x4a
avrdude: stk500_recv(): programmer is not responding
มักจะเกิดจาก บอร์ด Arduino ไม่ตอบสนองกับ คอมพิวเตอร์ของเรา แต่สามารถติดต่อเช่ือมต่อได้
กับบอรด์ ได้ วิธีการแก้
• ถอดสายออกจากชอ่ ง rx tx เวลาอพั โหลด
• ลองเปลี่ยนสาย USB
• ลองสลบั ช่อง USB
• ลอง Bootloader ใหม่ Bootloader อาจจะหลุด
• หากยังไมส่ ามารถอัพโหลดไดแ้ สดงวา่ ตัว MCU เสีย ใหท้ าการเปล่ยี น MCU ใหม่ ครบั
ระบบอเิ ล็กทรอนิกส์ 54
อัตโนมัติ
แกป้ ญั หา NodeMcu Esp8266 ขึน้ error: espcomm_upload_mem failed
ภาพท่ี 4-3 การแก้ปัญหา NodeMcu Esp8266 ข้นึ warning: espcomm_sync failed [10]
การใช้ Nodemcu esp8266 เป็นครงั้ แรก อาจจะเจอปญั หา Upload ไมเ่ ขา้ ข้นึ Error แสดง
ขอ้ ความวา่ ตามรูปภาพ
• warning: espcomm_sync failed
• error: espcomm_open failed
• error: espcomm_upload_mem failed
วิธกี ารแกป้ ัญหา
สงิ่ แรก ตรวจสอบ Com port ก่อน ขึ้นหรอื ไม่ หากไมข่ นึ้ ใหล้ งไดรเ์ วอร์ให้ถกู ต้อง
วธิ ที ี่ 1. เปลยี่ นมาเลอื กบอร์ด Nodemcu เปน็ เวอรช์ ่นั 0.9 แทน แต่หากอัพโหลดแลว้ เข้าแต่ไม่
ทางาน ให้เลอื ก Nodemcu 1.0
ภาพท่ี 4-4 การตรวจสอบ Com port [10]
55 ระบบอเิ ล็กทรอนิกส์
อตั โนมตั ิ
ส่วนใหญเ่ มอ่ื เลอื กบอรด์ นี้ก็จะแกไ้ ขปญั หาได้
วิธีที่ 2. หากจาเป็นต้องการใช้บอร์ดเวอร์ช่ัน 1.0 หรือ Board รุ่นอื่นๆ เมื่อ กด Upload รอจนหลอด
Upload ตามภาพเต็ม
ภาพที่ 4-5 การแกป้ ัญหา NodeMcu Esp8266 ขน้ึ warning: espcomm_sync failed [10]
ให้กดปมุ่ FLASH บนบอรด์ ของ Nodemcu 1 คร้งั กจ็ ะทาการอพั โหลดโปรแกรมให้
วิธีที่ 3. ถอดอุปกรณ์ ออกให้หมด ลอยขา Nodemcu ไว้ ไม่ต้องต่ออุปกรณ์ใดๆ อัพเสร็จค่อยเสียบ
อปุ กรณ์
เพราะบางครั้งอาจจะไปโดนขาทีห่ า้ มใช้งาน ทาใหอ้ พั โหลดไมไ่ ด้เช่นกัน
วธิ ที ่ี 4. หลายๆท่านมักจะชอบเลือกบอร์ดผิด เป็น Generic ESP8266 Module หากเลือกบอร์ดนี้ ใน
ส่วนของ
การ Auto flash จะไม่ทางาน ให้กดปมุ้ Flash แบบวิธที ่ี 2 ดว้ ยครบั หรือเลือกบอรด์ ใหม่
เปน็ Nodemcu 1.0 กจ็ ะสามารถใช้งานไดป้ กติ
เพิ่มเติม บางคร้ังให้ลองเปลี่ยนสาย USB เพราะ บางรุ่นเช่น blackberry เจอ Comport แต่ไม่
สามารถอัพโหลดโปรแกรมได้หากทาตามวิธีท่ีกล่าวมาขั้นต้นแล้วไม่สามารถอัพโหลด ให้ส่งสัยว่า
สนิ ค้ามีปัญหาหรือเสีย
ระบบอิเลก็ ทรอนิกส์ 56
อัตโนมัติ
แกป้ ัญหาArduino ข้นึ Error compiling for board
• Error compiling for board
exit status 1 NodeMCU 1.0 (ESP-12E Module).
exit status 1
Error compiling for board Arduino/Genuino Uno.
1. มี Void ไม่ครบตามโครงสร้างของ Arduino โดยปกติแล้ว Arduino จะมี void
setup() และ void loop() เป็นหลักอยู่แล้ว แต่บางทีการที่เราไปก็อบ Code มา แล้ว Void loop()
หายไปหรือไปเปลย่ี นช่อื ก็จะขน้ึ ขอ้ ความใน Error ว่า error: ld returned 1 exit status
วิธีการแก้ไข ให้ตรวจสอบโครงสร้างของ Code มี Void ต่างๆมีครบไหมถูกต้องไหม ช่ือต้องเป็นตัว
เล็ก
ภาพท่ี 4-6 วิธีการแกไ้ ข มี Void ไม่ครบตามโครงสรา้ งของ Arduino [10]
2. มี Void ซอ้ นกนั ชอ่ื ซ้ากัน มักจะเกิดจากเวลาน้องๆ ไปก๊อบ Code จากท่ีอ่ืนมาผสม
กันแล้ววาง Code ซ้อนกัน โดยปกติแล้ว Arduino จะประกอบไปด้วย void setup() และ void loop()
หากมี Void loop() ซ้อนกัน Arduino IDE ก็จะงงฉันเลือก Void loop อันไหนดีน่า อาการน้ี Error
มักจะแสดงว่า exit status 1 redefinition of 'void loop()'
57 ระบบอิเล็กทรอนิกส์
อัตโนมัติ
วิธกี ารแกไ้ ข ตรวจสอบโครงสรา้ ของ Code มี Void ซ้ากันไหมถ้าซ้าให้ทาการรวม Code
ภาพที่ 4-7 วิธีการแกไ้ ขมี Void ซ้อนกนั ชือ่ ซา้ กนั [10]
3. เร่ืองเครง่ื หมาย {} บางครั้งอาจจะใส่เกิน ทางร้านก็เคยเจอครับ มักจะเจอข้อความ
error: expected declaration before '}' token }}
วิธกี ารแกไ้ ข ใหต้ รวจสอบเร่ืองเคร่ืองหมายปีกกาต่างๆ ให้ถูกต้องไมข่ าดไม่เกนิ
ภาพที่ 4-8 วธิ ีการแกไ้ ขเรอ่ื งเครงื่ หมาย {} บางครั้งอาจจะใสเ่ กนิ [10]
4. Library ไม่สามารถใช้งานร่วมกับบอร์ดน้ีได้ อันนี้เจอบ่อยครับ โดยเฉพาะน้องๆท่ี
ก๊อบ Code มา ยกตัวอย่าง Libary บางตัวเช่น esp8266.h แต่น้องเอามาใช้กับ Arduino Uno R3
มันก็จะ Error เป็นธรรมดา error: ESP8266WiFi.h: No such file or directory compilation
terminated
วิธกี ารแก้ไข ลองศึกษา เก่ยี วกับ Library ต่างๆด้วยวา่ ลองรบั บอรด์ ตวั นนั้ ไหม
ภาพที่ 4-9 Library ไมส่ ามารถใช้งานรว่ มกบั บอร์ดนี้ได้ [10]
ระบบอเิ ล็กทรอนิกส์ 58
อัตโนมตั ิ
5. ทดสอบโปรแกรม แตล่ ะโมดูล
5.1 การกาหนดเงื่อนไขและดาเนินการทดสอบฟังก์ชันเพ่ือตรวจสอบรูปแบบความผิดพลาดท่ี
กาหนด
ในการเขียนโปรแกรมเพ่ือให้ไมโครคอนโทรลเลอร์ทางานในส่ิงที่ต้องการนอกจาก
ฟังก์ช่ันท่ีส่ังให้ทางานเป็นลาดับแล้วจาเป็นต้องใช้ฟังก์ชั่นท่ีมีการทางานแบบให้เลือกเส้นทางการ
ทางานโดยการทาตามเง่อื นไขหรือการใหท้ าซ้าแบบมเี งือ่ นไขหรือไม่มีเงื่อนไขโดยฟังก์ช่ันท่ีมีการทางาน
แบบทางเลือกในภาษาซีมีด้วยกัน 4 ฟงั ก์ชนั่ คือ
1. ฟงั ก์ชน่ั if
2 ฟงั ก์ชนั if-else
3. ฟังกช์ ่นั if-else if-else
4.ฟงั กช์ น่ั switch
ฟังก์ช่ัน if (ทางเลือกเดียว) ฟังก์ชั่น if เป็นฟังก์ช่ันท่ีมีการตรวจสอบเง่ือนไขโดยถ้า
เงื่อนไขเป็นจริงจะทางานตามชดุ ฟังก์ชั่นกาหนดไวร้ ูปแบบเปน็ ดังน้ี
ภาพที่ 5-1 If (เงื่อนไขทต่ี รวจสอบ) [11]
59 ระบบอเิ ลก็ ทรอนกิ ส์
อัตโนมตั ิ
การตรวจสอบเง่ือนไขที่มีชุดฟังก์ช่ันให้ทางานเม่ือเงื่อนไขเป็นจริงและมีชุดฟังก์ช่ันให้
ทางานเมอื่ เงอื่ นไขเป็นเท็จเราจะใช้ฟังกช์ ่ัน if-else มาใชง้ านมรี ูปแบบดังน้ี
ภาพที่ 5-2 If (เง่ือนไขที่ตรวจสอบ) else [11]
ฟงั ก์ชั่น if-else if ... else (หลายทางเลือก) เป็นฟังก์ชั่นที่มีการตรวจสอบเงื่อนไขหลายเงื่อนไขและมี
ชดุ ฟังก์ชนั่ ทีเ่ ตรยี มใหท้ างานในแตล่ ะเงอ่ื นไขหากเง่ือนไขน้ัน ๆ ถูกต้อง
ภาพที่ 5-3 if (เงอ่ื นไขท่ตี รวจสอบ) else if (เงอ่ื นไขทตี่ รวจสอบ) [11]
ฟังก์ชั่น Switch ... case (หลายทางเลือก) ฟังก์ชั่น Switch. Case เป็นฟังก์ช่ันหลายทางเลือกอีก
ฟังก์ชั่นหนึ่งที่มีการทางานคล้าย ๆ ฟังก์ช่ัน if-else if ... else ต่างตรงที่การตรวจสอบเงื่อนไขจะใช้
การตรวจสอบการเท่ากันของตัวแปรท่ีใช้ตรวจสอบเท่าน้ันโดยเมื่อตรวจสอบค่าแล้วเท่ากับค่าท่ี
กาหนดใหท้ าฟงั ก์ชน่ั ท่เี ตรียมไว้
ระบบอเิ ลก็ ทรอนิกส์ 60
อัตโนมตั ิ
ภาพที่ 5-4 ฟงั ก์ช่ัน Switch ... case (หลายทางเลือก) [11]
ฟังก์ชนั การดาเนินการแบบวนซา้
การเขียนโปรแกรมสั่งงานไมโครคอนโทรลเลอรต์ ้องมีการทางานแบบวนซ้าหรือวนรอบ
เพ่ือทีจ่ ะทางานในชดุ คาสง่ั เดิมลักษณะการทางานมีทั้งแบบมีเงื่อนไขหรือไม่มีเง่ือนไขในภาษาซีมีฟังก์ช่ัน
สง่ั งานให้ไมโครคอนโทรลเลอร์ทางานซา้ มีดังนี้
1. ฟงั ก์ช่ัน for
2. ฟงั ก์ชนั่ while
3. ฟงั ก์ชัน่ while (1)
4. ฟงั ก์ช่นั do-while
ฟังก์ช่นั for เป็นฟงั ก์ชั่นท่ใี ช้ในกรณีทท่ี ราบจานวนรอบท่จี ะทางานโดยมีรปู แบบดังน้ี
ภาพที่ 5-5 ฟังกช์ ่นั for [11]
61 ระบบอเิ ล็กทรอนกิ ส์
อัตโนมัติ
ฟงั ก์ชนั while
ฟังก์ช่ัน while เป็นฟังก์ช่ันท่ีให้ทางานวนซ้าหรือวนรอบโดยมีการตรวจสอบเงื่อนไข
ก่อนถ้าหากเงื่อนไขเป็นจริงจะทางานตามชุดฟังก์ชั่นที่เตรียมไว้เมื่อทางานในชุดฟังก์ช่ันท่ีเตรียมไว้
เสร็จจะมกี ารวนกลบั ไปตรวจสอบเงอ่ื นไขอกี หากเงื่อนไขเป็นจริงจะทางานในชุดฟังก์ช่ันที่เตรียมไว้โดย
ทาแบบน้ไี ปเรอื่ ย ๆ จนกวา่ เงอ่ื นไขจะเป็นเท็จจะออกจากวงรอบการทาซ้าโดยมรี ูปแบบดังน้ี
ภาพที่ 5-6 ฟังก์ชนั while [11]
ฟังก์ชัน่ while เปน็ ฟงั ก์ช่นั ที่ให้ทางานวนซ้าหรอื วนรอบไมร่ จู้ บเนื่องจาก 1 คือเป็นจริง
ตลอดไปในโปรแกรม Arduino กค็ ือฟงั ก์ชน่ั loopy) นัน่ เอง
ภาพที่ 5-7 ฟังก์ชัน while [11]
ระบบอิเลก็ ทรอนิกส์ 62
อตั โนมัติ
ฟังกช์ ัน่ do-while
ฟงั กช์ น่ั do-while เป็นฟังก์ชั่นท่ีให้ทางานวนซ้าหรอื วนรอบโดยมีการตรวจสอบ
เงื่อนไขการทางานคล้ายกับฟังกช์ ่ัน while ต่างตรงทีฟ่ งั กช์ น่ั do-while จะทางานในชดุ ฟงั ก์ชน่ั ท่ี
เตรียมไวท้ าซ้าไปก่อน 1 รอบแล้วจึงตรวจสอบเงื่อนไข
ภาพที่ 5-8 ฟังกช์ ั่น do-while [11]
63 ระบบอิเลก็ ทรอนกิ ส์
อตั โนมัติ
[1] ประภาส สุวรรณเพชร. เรียนรู้และลองเล่นArduino. ออนไลน์]. จาก
https://gla.reru.ac.th/documents/KruPraphasArduinoBook.pdf. สบื คน้ เมือ่ 25
พฤษภาคม 2564
[2] ไกรสร ตง้ั โอภากลุ . (2554). ค่มู ือเรยี นเขยี นโปรแกรมภาษา C. นนทบุร:ี ไอดซี ี พรเี มียร.์
[3] กฤษฎา ทองกาเหนิดแก้ว. (2561). ภาษาซีเบ้ืองต้น. [ออนไลน์]. จาก
https://sites.google.com/site/krukritsada/c-basic. สบื คน้ เมือ่ 22 พฤษภาคม 2564.
[4] ประภาส พุม่ พวง จติ รพรมา.(2561). การเขยี นและการประยกุ ต์ใชง้ านโปรแกรม Arduino.
กรงุ เทพฯ : บรษิ ทั ซเี อ็ดยเู คชั่นจากดั .
[5] จกั รกฤษณ์ แสงแกว้ . (2561). การประยุกตใ์ ชง้ าน NodeMCU ESP8266. [ออนไลน์]. จาก
https://dsdi.msu.ac.th/?article=esp8266. สืบค้นเม่อื 25 พฤษภาคม 2564.
[6] วธิ ีตดิ ตง้ั ไลบรารี (Library) สาหรบั Arduino IDE. (2561) [ออนไลน์]. จาก
https://poundxi.com-library สบื ค้นเม่ือ 25 พฤษภาคม 2564
[7] สอนใชง้ าน Arduino ติดต้งั Library ในโปรแกรม Arduino IDE เชื่อมตอ่ กับ Sensor ต่างๆ
(2562). [ออนไลน์]. จาก https://www.myarduino.net/article. สืบค้นเมอ่ื 25 พฤษภาคม
2564.
[8] จักรกฤษณ์ แสงแก้ว. (2561). การประยกุ ตใ์ ช้งาน NodeMCU ESP8266. [ออนไลน์]. จาก
https://dsdi.msu.ac.th/?article-esp8266. สืบคน้ เมอ่ื 27 พฤษภาคม 2564.
[9] มาโนชญ์ แสงศิ S. Blynk: IoT Platform สนบั สนนุ จินตนาการสาหรับนวัตกร. ออนไลน์].
จาก https://www.scimath.org/article-technology/item/9820-blynk-iot-platform.
สบื ค้นเมื่อ 27 w ฤษภาคม 2564
[10] ปกรณ์ รตั นย่งิ . (2563). ปญั หา Error Arduino และการแกป้ ญั หา [ฉวนไลน์]. จาก
https://dsdi.msu.ac.th/?article-esp8266. สืบคน้ เมือ่ 28 พฤษภาคม 2564.
[11] เดชฤทธิ์ มณีธรรมและสาเรงิ เตม็ ราม. (2548). คัมภรี ไมโครคอนโทรลเลอร์ MCS-51.
กรงุ เทพฯ: เคทพี ีคอมพแอนดค์ อนซัลท์.
[12] OneS. Gotteried. แปลและเรียบเรียงโดยศรณั ย์อินทโกสุม. (2539). ทฤษฎีและตัวการเรยี น
โปรแกรมด้วยภาษาซี. องิ ค์, แมคกรว-ซลิ อนิ เตอร์เนชัน่ แนลเอ็นเตอร์
อาชีพช่างตดิ ต้ัง
ระบบอิเลก็ ทรอนกิ ส์
คณะครุศาสตรอ์ ุตสาหกรรมและเทคโนโลยมี หาวิทยาลัยเทคโนโลยรี าชมงคลศรวี ิชยั
ทนุ อุดหนุนการวิจัยจากสานกั งานคณะกรรมการกองทุนสง่ เสริมวิทยาศาสตรว์ ิจัยและนวัตกรรม
ประจาปีงบประมาณ 2564