ระบบอิเล็กอทัตรอโนนมิกสตั ์ ิ 48
5. กรณีตอ้ งการเช็คว่าโคดไมม่ ขี ้อผิดพลาด สามารถกดปุ่มเครือ่ งหมายถกู Compile ถ้าไมม่ ปี ญั หาก็จะข้นึ คาว่า
Done compiling
ภาพท่ี 3.32 คอมไพลแ์ ละอพั โหลดโปรแกรม [7]
6.หรอื จะขา้ มไปกดปุม่ ลกู ศรเลยกไ็ ด้ จะเปน็ การคอมไพล์และอัพโหลดโปรแกรมทีเดียว ถ้าไม่มีปัญหาจะขึ้นคาว่า
Done uploading พรอ้ มแสดงผลลพั ธ์ไฟกระพรบิ ออกท่ีบอร์ด Arduino ตามโคดคาสัง่ ทีเ่ ราเขียนเข้าไป
49 รอะตั บโบนอมิเลัต็กิ ทรอนิกส์
ภาพที่ 3.33 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 เป็น 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). การเขียนและการประยุกต์ใชง้ านโปรแกรม Arduino.
กรงุ เทพฯ : บรษิ ัทซีเอ็ดยูเคช่นั จากัด.
[4] จกั รกฤษณ์ แสงแกว้ . (2561). การประยุกตใ์ ชง้ าน NodeMCU ESP8266. [ออนไลน์]. จาก
https://dsdi.msu.ac.th/?article=esp8266. สืบคน้ เมอ่ื 25 พฤษภาคม 2564.
[5] วธิ ีตดิ ต้ังไลบรารี (Library) สาหรับ Arduino IDE. (2561) [ออนไลน์]. จาก
https://poundxi.com-library สบื คน้ เมอ่ื 25 พฤษภาคม 2564
[6] สอนใช้งาน Arduino ติดต้งั Library ในโปรแกรม Arduino IDE เชอ่ื มต่อกบั Sensor ต่างๆ
(2562). [ออนไลน์]. จาก https://www.myarduino.net/article.
สืบคน้ เมือ่ 25 พฤษภาคม 2564.
[7] จกั รกฤษณ์ แสงแกว้ . (2561). การประยุกต์ใชง้ าน NodeMCU ESP8266. [ออนไลน์]. จาก
https://dsdi.msu.ac.th/?article-esp8266. สบื ค้นเมอ่ื 27 พฤษภาคม 2564.
[8] ปกรณ์ รัตนย่งิ . (2563). ปญั หา Error Arduino และการแกป้ ัญหา [ฉวนไลน์]. จาก
https://dsdi.msu.ac.th/?article-esp8266. สบื ค้นเมอ่ื 28 พฤษภาคม 2564.
[9] เดชฤทธ์ิ มณธี รรมและสาเริงเตม็ ราม. (2548). คมั ภีรไมโครคอนโทรลเลอร์ MCS-51.
กรุงเทพฯ: เคทีพีคอมพแอนดค์ อนซัลท์.
[10] OneS. Gotteried. แปลและเรยี บเรียงโดยศรัณยอ์ นิ ทโกสมุ . (2539). ทฤษฎีและตัวการเรียน
โปรแกรมดว้ ยภาษาซี. องิ ค,์ แมคกรว-ซลิ อินเตอร์เนชนั่ แนลเอน็ เตอร์
แหลง่ อา้ งองิ รูปภาพ ระบบอเิ ลก็ อทัตรอโนนมิกสัต์ ิ 64
[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