สื่อการเรียนรู้อาร์ดุยโน่
สำหรับนิสิตวิศวกรรมเครื่องกล
An Arduino Learning media for mechanical engineering students
จัดเตรียมโดย ภานุวัฒน์ มันเทศ ภัควัฒน์ ธงกระโทก
สาขาวิชาวิศวกรรมเครื่องกล คณะวิศวกรรมศาสตร์ มหาวิทยาลัยนเรศวร
ก
คำนำ
สื่อการเรียนรู้ฉบับนี้จัดทำขึ้นเพื่อการเรียนรู้อาร์ดุยโน่ โดยมีจุดประสงค์เพื่อให้ผู้เรียนได้เรียนรู้
ไมโครคอนโทรลเลอร์ โดยใช้บอร์ดอาร์ดุยโน่ การใช้โปรแกรมภาษาซี ที่มีไลบรารี่คำสั่ง สำหรับใช้สั่งงานของ
ไมโครคอรโทรลเลอร์ สำหรับการเลือกอาร์ดุยโน่มาเป็นอุปกรณ์การสอนนั้น เพราะใช้งานง่าย เป็นระบบ
โปรแกรมภาษาซีที่โอเพนซอร์ส มีราคาที่ไม่แพง เหมาะสำหรับผู้เริ่มต้นที่จะเรียนรู้ไมโครคอนโทรลเลอร์ และ
นำสงิ่ ทไ่ี ด้จากการเรยี นรูน้ นี้ ำไปประยุกต์ใช้งานแบบต่าง ๆ
ทั้งนี้ เนื้อหาในสื่อการเรียนรู้น้ีได้รวบรวมวิเคราะห์เนื้อหามาจากหนังสือการเรียนรู้เกี่ยวกับอารด์ ุยโน
หลาย ๆ เล่มรวมกัน โดยในหนังสือเล่มนี้จะมีเนื้อหา ที่เป็นข้อมูลความรู้ที่เกี่ยวข้อง ตัวอย่างโปรแกรมต่าง ๆ
เพอื่ ให้ผเู้ รยี นรสู้ ามารถใชท้ ดลองปฏบิ ตั ติ าม แลว้ จงึ นำไปพฒั นาปรบั ปรุงด้วยตนเองได้
ผู้จดั ทำ
ข
สารบัญ
หน้า
คำนำ ก
สารบัญ ข
หน่วยการเรยี นรทู้ ี่ 1 โครงสรา้ งและส่วนประกอบของไมโครคอนโทรลเลอร์.................................................... 1
1.1 โครงสรา้ งของไมโครคอนโทรลเลอร์ ..................................................................................................... 1
1.2 สถาปตั ยกรรมของไมโครคอนโทรลเลอร์ .............................................................................................. 2
1.3 หลักการทำงานของไมโครคอนโทรลเลอร์............................................................................................. 6
1.4 โครงสรา้ งของอาร์ดยุ โน่........................................................................................................................ 6
1.5 บอรด์ อารด์ ุยโน่ ร่นุ ตา่ ง ๆ..................................................................................................................... 7
หนว่ ยการเรียนรู้ท่ี 2 เครอ่ื งมือในการพัฒนาโปรแกรม .................................................................................. 10
2.1 การตดิ ตัง้ โปรแกรม ............................................................................................................................ 10
2.2 การใชง้ านโปรแกรม ........................................................................................................................... 11
2.3 การเชอื่ มต่ออาร์ดยุ โน่ IDE ................................................................................................................. 15
2.4 ไลบราร่ี (Library) .............................................................................................................................. 18
หนว่ ยการเรยี นรทู้ ่ี 3 พื้นฐานการเขยี นโปรแกรม........................................................................................... 21
3.1 ระบบเลขฐาน..................................................................................................................................... 21
3.1.1 การแปลงเลขฐานอืน่ ๆ เป็นเลขฐานสบิ ...................................................................................... 22
3.1.2 การแปลงเลขฐานสบิ เปน็ เลขฐานตา่ ง ๆ..................................................................................... 23
3.2 ขั้นตอนการพฒั นาโปรแกรม............................................................................................................... 24
3.3 การเขยี นโฟลว์ ชารต์ ........................................................................................................................... 25
หนว่ ยการเรียนรู้ที่ 4 โครงสร้างภาษาซี ......................................................................................................... 28
4.1 ตวั แปรในภาษาซี................................................................................................................................ 28
4.2 คำสงั่ if............................................................................................................................................... 30
ค
4.3 คำสง่ั for............................................................................................................................................ 31
4.4 คำสงั่ while....................................................................................................................................... 33
หนว่ ยการเรียนรทู้ ี่ 5 การเขียนโปรแกรมภาษาซีสำหรบั อาร์ดยุ โน่ ................................................................. 35
5.1 โครงสรา้ งการเขียนโปรแกรมภาษาซีของอารด์ ยุ โน่............................................................................. 35
5.2 ตัวแปรในอาร์ดุยโน่ ............................................................................................................................ 35
5.3 คำสงวนต่าง ๆ ของอาร์ดุยโน่............................................................................................................. 36
5.4 คณุ สมบตั เิ ฉพาะของตัวแปร............................................................................................................... 38
5.5 ชนดิ ของตัวแปรในอารด์ ยุ โน่ท่ใี ชบ้ อ่ ย ................................................................................................. 39
5.6 ขอบเขตของตัวแปร............................................................................................................................ 40
5.7 นพิ จนแ์ ละตวั ดำเนนิ การของอาร์ดุยโน่ ............................................................................................... 40
5.8 การตรวจสอบเงื่อนไขในภาษาซขี องอาร์ดุยโน่.................................................................................... 43
หนว่ ยการเรยี นรทู้ ่ี 6 การควบคุมการทำงานของอนิ พตุ และเอาต์พุต ............................................................. 44
6.1 อารด์ ุยโน่กบั ดิจิตอลอินพุต/เอาต์พุต .................................................................................................. 44
6.2 อาร์ดยุ โนก่ บั แอนาลอกอินพุต/เอาต์พุต.............................................................................................. 46
หนว่ ยการเรียนรูท้ ่ี 7 การเชื่อมตอ่ ไมโครคอนโทรลเลอร์อาร์ดุยโนก่ บั หลอดแอลอีดี....................................... 50
หน่วยการเรยี นรทู้ ี่ 8 การควบคุมหนา้ จอแสดงผลจอโอแอลอีดี ..................................................................... 53
หนว่ ยการเรยี นรทู้ ่ี 9 การเช่ือมตอ่ อารด์ ุยโนก่ ับรีเลย์ ..................................................................................... 56
หนว่ ยการเรียนร้ทู ี่ 10 การเช่ือมต่ออาร์ดยุ โน่กบั โหลดเซลล์......................................................................... 60
หน่วยการเรียนรู้ที่ 11 การเชื่อมต่ออารด์ ุยโน่กับ โฟลว์มิเตอร์....................................................................... 64
หน่วยการเรียนรู้ที่ 12 การใช้งานเซนเซอร์วดั อุณหภมู ิและความช้ืน.............................................................. 67
หน่วยการเรียนรทู้ ี่ 13 การควบคมุ เซอร์โวมอเตอร์........................................................................................ 72
เอกสารอา้ งองิ ............................................................................................................................................... 74
1
หน่วยการเรียนรู้ท่ี 1 โครงสร้างและส่วนประกอบของไมโครคอนโทรลเลอร์
1.1 โครงสรา้ งของไมโครคอนโทรลเลอร์
1. ไมโครคอนโทรลเลอร์ (Microcontroller)
ไมโครคอนโทรลเลอร์ ( Microcontroller) หมายถึงอุปกรณ์ควบคุมขนาดเล็กแต่ในอุปกรณ์
ควบคุมขนาดเลก็ นมี้ คี วามสามารถท่ีเหมือนกับระบบคอมพวิ เตอรโ์ ดยภายในไมโครคอนโทรลเลอร์จะ
ประกอบไปด้วย หน่วยประมวลผล หน่วยความจำชั่วคราว (RAM) หน่วยความจำถาวร (ROM) และ
พอร์ตอินพุต, เอาต์พุต ซึ่งส่วนประกอบเหล่านี้มีความสมบูรณ์ในตัว ทำให้มีขนาดเล็ก และสามารถ
เขยี นโปรแกรมควบคมุ การทำงานของอุปกรณ์ต่าง ๆ ท่ีเชอื่ มตอ่ และงา่ ยต่อการนำไปประยุกต์ใช้งาน
ไมโครคอนโทรลเลอร์สามารถใช้ในผลิตภัณฑ์ควบคุมโดยอัตโนมัติและอุปกรณ์เช่นระบบควบคุม
เครอ่ื งยนต์รถยนต์, อุปกรณ์ทางการแพทย์, การควบคุมระยะไกล, เครือ่ งใชส้ ำนักงาน, เครือ่ งใช้ไฟฟ้า
เครื่องมือไฟฟ้า, รวมถึงของเล่นและระบบฝังตัวอ่ืน ๆ โครงสร้างโดยทั่วไปของไมโครคอนโทรลเลอร์
มีองค์ประกอบท่สี ำคญั ดงั น้ี
- หน่วยประมวลผลกลางหรอื ซพี ยี ู (CPU : Central Processing Unit)
หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit) หรือเรียกอีก
ชื่อว่าไมโครโพรเซสเซอร์ (Microprocessor) ซึ่งเป็นหัวใจสำคัญของคอมพิวเตอร์ ทำหน้าที่ในการ
คิดคำนวณ ประมวลผล และควบคุมการทำงานของอุปกรณ์อื่นในระบบ โดยมีกระบวนการพื้นฐาน
คือ อ่านชุดคำสั่ง (Fetch), ตีความชุดคำสั่ง (Decode), ประมวลผลชุดคำสั่ง (Execute), อ่านข้อมูล
จากหนว่ ยความจำ (memory), เขียนข้อมลู /ส่งผลการประมวลกลับ (write back)
- หน่วยความจำ (Memory)
หน่วยความจำ (Memory) สามารถแบ่งออกเป็น 2 ส่วน คือหน่วยความจำที่มีไว้
สำหรับเก็บโปรแกรมหลัก (Program Memory) เช่น Flash Memory ลักษณะการทำงานของ
หน่วยความจำนี้เป็นหน่วยความจำที่อ่านเขียนได้ด้วยไฟฟ้า เปรียบเสมือนฮาร์ดดิสก์ของ
เครื่องคอมพิวเตอร์ ข้อมูลที่ถูกเก็บไว้ในนี้จะไม่สูญหายถึงแม้ไม่มีไฟเลี้ยง มีหน้าที่ ในการเก็บข้อมูล
และโปรแกรม ที่จะให้ซีพียูเรียกไปใช้งานได้อีกส่วนหน่วยความจำข้อมูล ( Data Memory)
เป็นหน่วยความจำที่จำเป็นต้องมีไฟฟ้าเลี้ยงตลอดเวลาถ้ายังต้องการให้เก็บข้อมูลนั้นอยู่ หรืออีก
ความหมายหนึ่งก็คือหากไม่ได้รับไฟฟ้าเลี้ยงแล้วข้อมูลที่เคยเก็บอยู่ในหน่วยความจำชั่วคราวก็จะ
หายไป ตัวอย่างของหน่วยความจำชั่วคราวก็คือ แรม (RAM) แต่สำหรับไมโครคอนโทรลเลอร์
ในปัจจุบัน หน่วยความจำข้อมูลมีทั้งที่เป็นหนว่ ยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยงและ
2
เป็นอีอีพรอม (EEPROM: Erasable Electrically Read Only Memory) ซึ่งสามารถเก็บข้อมูลได้
แมไ้ ม่มไี ฟเลีย้ ง
- พอร์ตอินพตุ , เอาต์พตุ
พอร์ตอินพุต, เอาต์พุต ใช้สำหรับขนส่งสัญญาณที่ต้องการขนส่งจากจุดหน่ึง
ไปยัง อีกจุดหนึ่ง หรือเรียกง่ายๆ ว่า ข้อมูล” BUS พอร์ตอินพุต จะทำหน้าที่รับข้อมูลจากอุปกรณ์
ภายนอกเข้าไปประมวลผล ส่วนพอร์ตเอาต์พุต ทำหน้าที่ส่งข้อมูลที่คอมพิวเตอร์ประมวลผลแล้ว
นำออกมาใชง้ านภายนอก
- สญั ญาณนาฬกิ า
สัญญาณนาฬิกาเป็นสัญญาณประเภทหนึ่งที่สั่น มีลักษณะเป็นรูปของคลื่นสี่เหลี่ยม
ซึ่งคลื่นอยู่ระหว่างสถานะสูงและต่ำ การทำงานจะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกา
มีความถี่สูง จังหวะการทำงานก็จะสามารถทำได้ถี่ขึ้นส่งผลให้ไมโครคอนโทรลเลอร์มีความเร็ว
ในการประมวลผลสงู
- แหล่งจา่ ยไฟ
เป็นอุปกรณ์ที่ให้พลังานหรือจ่ายไฟให้กับชิ้นส่วนและอุปกรณ์ต่างภายในตัว
ไมโครคอนโทรลเลอร์ และแปลงแรงดันนไฟฟ้ากระแสสลับ (AC) ตามบ้านจาก 220 โวลต์ให้เหลือ
เพียงแรงดันไฟฟ้ากระแสตรง (DC) 2 ชุดคือ 3.3 และ 5 โวลต์ และ 12 โวลต์เพื่อจ่ายไฟให้กับวงจร
ชิน้ สว่ นอุปกรณ์ต่าง ๆ
1.2 สถาปัตยกรรมของไมโครคอนโทรลเลอร์
1. ไมโครคอนโทรลเลอรต์ ระกูล PIC
PIC เป็นไมโครคอนโทรลเลอร์อุปกรณ์ตอ่ พ่วงซึง่ ได้รับการพฒั นาในปี พ.ศ. 2536 เปน็ ตระกูล
ที่รวมเอาทุกอย่างไว้ในตัวเดียวไม่ว่าจะเป็น PROGRAM, MEMROY, RAM, EEPROM, SERIAL, I2C, PWM,
A/D ฯลฯ โดยไม่จำเปน็ ตอ้ งตอ่ อปุ กรณเ์ สรมิ จากภายนอก ใช้สำหรับเครื่องมอื ทวั่ ไป ควบคุมโดยซอฟตแ์ วร์และ
โปรแกรม เชน่ สมารท์ โฟน, อปุ กรณ์เสริม, เคร่อื งเสียงและอุปกรณ์ทางการแพทย์ขน้ั สงู เปน็ ตน้
รปู ท่ี 1.1 ไมโครคอนโทรลเลอร์ตระกูล PIC
[ที่มา: https://www.microchip.com/wwwproducts/en/en010242]
3
2. ไมโครคอนโทรลเลอร์ตระกูล AVR
AVR หรอื ท่เี รียกวา่ Advanced Virtual RISC เป็นไมโครคอนโทรลเลอร์ชปิ เดี่ยว ถกู ประดิษฐ์
ขึ้นในปี พ.ศ. 2509 โดยบริษัท ATMEL เป็นหนึ่งในตระกูลไมโครคอนโทรลเลอร์ที่สำคัญที่สุดในการใช้
หน่วยความจำแฟลชบนชิป สำหรับการจัดเก็บโปรแกรมซึ่งแตกต่างจาก EPROM, EEPROM หรือ ROM
ที่ตั้งโปรแกรมได้ครั้งเดียวและหน่วยความจ ำแฟลชเป็นหน่วยความจำที่ตั้งโปรแกรมได้
ไมห่ ายไป (คงทเ่ี มอ่ื ปดิ เคร่อื ง)
รูปที่ 1.2 ไมโครคอนโทรลเลอรต์ ระกูล AVR
[ทมี่ า: https://th.rs-online.com/web/p/microcontrollers/1772780/]
3. ไมโครคอนโทรลเลอรต์ ระกูล ARM
ARM เป็นตัวย่อสำหรับ Advanced RISC Machine และเป็นตระกูลไมโครโพรเซสเซอร์ที่มี
อยู่ในสถาปัตยกรรมที่ใช้ Harvard และ von Neumann โดยทั่วไปจะเป็นไมโครโพรเซสเซอร์ที่ออกแบบ
มาเพือ่ ใชใ้ นชปิ เช่น ไมโครคอนโทรลเลอร์
โพรเซสเซอร์ ARM ใช้สถาปัตยกรรม RISC ซึ่งให้การดำเนินการคำสั่งทีร่ วดเร็ว เป็นตัวเลือก
ยอดนิยมสำหรับการใช้งานอย่างกว้างขวางในอุปกรณ์อิเล็กทรอนิกส์แบบพกพาสำหรับผู้บริโภค
เช่น โทรศัพท์มอื ถือ, แท็บเล็ต, เครอ่ื งเลน่ มัลติมีเดียและอปุ กรณ์สวมใส่อ่ืน ๆ
มีโพรเซสเซอร์ ARM หลายประเภทที่ออกแบบมาเพื่อวัตถุประสงค์ต่าง ๆ โดยเฉพาะ
เช่น Cortex-A: สร้างขึ้นสำหรับระบบปฏิบตั ิการขั้นสูงและให้ประสิทธิภาพท่ดี ีทส่ี ดุ , Cortex-R: เป็นประเภทท่ี
มเี วลาตอบสนองท่รี วดเรว็ ดงั นัน้ จงึ ใชส้ ำหรบั แอปพลิเคชนั แบบเรยี ลไทม์
รูปท่ี 1.3 ไมโครคอนโทรลเลอรต์ ระกลู ARM
[ที่มา: https://copperhilltech.com/blog/a-brief-introduction-to-the-arm-core]
4
4. ไมโครคอนโทรลเลอร์ 8051
8051 เป็นไมโครคอนโทรลเลอร์ทีใ่ ช้กันทวั่ ไปและราคาถูกที่สุดที่ผลติ โดย บริษทั Intel
ในปี 1981 ขึ้นอยู่กับสถาปัตยกรรม CISC Harvard สำหรับการมีโปรแกรมและหน่วยความจำข้อมูลแยกกัน
คุณสมบัติที่โดดเด่นที่สุดของไมโครคอนโทรลเลอร์ 8051 ได้แก่ เป็นไมโครคอนโทรลเลอร์ ที่มีอยู่ใน DIP มี
ROM ทต่ี ัง้ โปรแกรมไดบ้ นชิป สำหรบั จัดเกบ็ รหสั โปรแกรมมีแรมบนชิป ไมโครคอนโทรลเลอร์ 8051 มักใช้ใน
โครงการอิเล็กทรอนิกส์เพื่อการเรียนรู้เป็นหลัก ใช้สำหรับการปฏิบัติงานเฉพาะเช่นสัญญาณเตือนไฟไหม้
การตรวจจับอุณหภูมิ การควบคมุ มอเตอร์รถยนต์
รปู ท่ี 1.4 ไมโครคอนโทรลเลอร์ตระกูล 8051
[ทม่ี า: https://en.wikipedia.org/wiki/Intel_8051]
5. ไมโครคอนโทรลเลอรต์ ระกูล MSP
ไมโครคอนโทรลเลอร์ MSP คำว่า MSP เปน็ คำยอ่ ของ“ Mixed Signal Processor”
ไมโครคอนโทรลเลอร์ตระกูลนน้ี ำมาจาก Texas Instruments และออกแบบสำหรับระบบกระจายพลังงานที่มี
ต้นทุนต่ำและใช้พลังงานต่ำ ใช้โค้ดการเขียนโปรแกรมที่หนาแน่นและสั้นลงเพื่อประสิทธิภาพที่รวดเร็ว
ไมโครคอนโทรลเลอร์นี้เป็นวงจรรวมชนิดหนึ่งที่ใช้ในการสั่งงานโปรแกรมเพื่อควบคุมเครื่องจักรหรืออุปกรณ์
อนื่ ๆ โดยปกติคุณสมบตั ิของไมโครคอนโทรลเลอรน์ ี้มีความคล้ายกบั ไมโครคอนโทรลเลอรช์ นดิ อืน่ ๆ
รปู ที่ 1.5 ไมโครคอนโทรลเลอรต์ ระกูล MSP
[ทีม่ า: https://en.wikipedia.org/wiki/TI_MSP430]
5
6. ไมโครคอนโทรลเลอร์ตระกูล RENESAS
RENESAS ย่อมาจาก Renaissance Semiconductor สำหรับโซลูชั่นขั้นสูงและนำเสนอ
ไมโครโพรเซสเซอร์และไมโครคอนโทรลเลอร์ที่มีคุณสมบัติด้านประสิทธิภาพที่ดีที่สุดนอกเหนือจากการใช้
พลังงานที่ต่ำเป็นพิเศษและบรรจุภัณฑ์ขนาดกะทัดรัด เนื่องจากความจุหน่วยความจำและจำนวนพินที่มีมาก
ที่สุดจึงถูกนำมาใช้ในแอพพลิเคชั่นฝังตัวควบคุมยานยนต์ขั้นสูงต่าง ๆ ไมโครคอนโทรลเลอร์ตระกูล
RL78 & RX ได้รับความนิยมมากที่สุดซึ่งในอดีตใช้สำหรับคุณสมบัติการใช้พลังงานต่ำในขณะที่รุ่นหลัง
มชี ื่อเสยี งในดา้ นประสทิ ธภิ าพสูง
รูปที่ 1.6 ไมโครคอนโทรลเลอร์ตระกูล RENESAS
[ท่มี า: https://th.mouser.com/new/renesas/renesas-s1ja-mcu/]
7. ไมโครคอนโทรลเลอร์ตระกูล Z80
Z80 เป็น CPU 8 บิตซึ่งหมายความว่าข้อมูลทั้งหมดอยู่ใน 8 บิตหรือไบต์เดียว รีจิสเตอร์
ทั้งหมดภายในซีพียู (รีจิสเตอร์เป็นบล็อกหน่วยเก็บข้อมูลชั่วคราวที่ใช้สำหรับการคำนวณอย่างรวดเร็ว)
มีขนาด 8 บิตในขณะที่ตัวนับโปรแกรมซึ่งชี้ไปที่ที่โปรแกรมกำลังทำงานอยู่คือ 16 บิต เนื่องจาก
ตัวนับโปรแกรมมีขนาด 16 บิต จึงเป็นเรื่องง่ายในการทำงานมากกว่าตอนที่แยกกัน แม้จะมีที่อยู่ 16 บิตบิต
(วรรณชนะ พรมเทศ. (2561). ไมโครคอนโทรลเลอร์. สืบค้น 2 เมษายน 2564, จาก https://bannok-
elec.blogspot.com/2018/07/blog-post.html)
รูปที่ 1.7 ไมโครคอนโทรลเลอรต์ ระกูล Z80
[ที่มา: http://z80.ctn-phrae.com/index.php?story=story-1.1]
6
1.3 หลักการทำงานของไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์ฝังอยู่ภายในระบบเพื่อควบคุมฟังก์ชันการทำงานในอุปกรณ์ ทำได้โดย
การตีความข้อมูลที่ได้รับจากอุปกรณ์ต่อพ่วง I/O โดยใช้โพรเซสเซอร์กลาง ข้อมูลชั่วคราวที่
ไมโครคอนโทรลเลอร์ไดร้ บั จะถูกเก็บไว้ในหนว่ ยความจำข้อมลู ซึ่งโพรเซสเซอร์จะเขา้ ถึงและใช้คำสั่งท่ีเก็บไว้ใน
หน่วยความจำโปรแกรมเพื่อถอดรหัสและใช้ข้อมูลที่เข้ามา จากนั้นจะใช้อุปกรณ์ต่อพ่วง I/O เพื่อสื่อสารและ
ออกคำสั่งดำเนินการท่ีเหมาะสมไมโครคอนโทรลเลอร์ใช้งานในระบบและอุปกรณต์ า่ ง ๆ มากมาย อุปกรณ์มัก
ใช้ไมโครคอนโทรลเลอร์หลายตัวที่ทำงานร่วมกันภายในอุปกรณ์เพื่อจัดการกับงานต่าง ๆ เช่น รถยนต์อาจมี
ไมโครคอนโทรลเลอรห์ ลายตัวที่ควบคุมระบบต่าง ๆ ภายในเช่นระบบเบรกปอ้ งกันล้อลอ็ คระบบควบคุมแรงฉุด
การฉีดน้ำมันเชื้อเพลิงหรือระบบกันสะเทือน ไมโครคอนโทรลเลอร์ทั้งหมดสื่อสารกันเพื่อแจ้งการดำเนินการ
ทีถ่ ูกตอ้ ง บางเครื่องอาจส่ือสารกับคอมพิวเตอร์สว่ นกลางท่ีซบั ซ้อนกวา่ ภายในรถและบางเคร่ืองอาจสื่อสารกับ
ไมโครคอนโทรลเลอร์อื่นเท่านั้นเพื่อรับและส่งข้อมูลโดยใช้อุปกรณ์ต่อพ่วง I/O และประมวลผลข้อมูลนั้นเพื่อ
ทำงานทีก่ ำหนด
1.4 โครงสรา้ งของอาร์ดุยโน่
ลักษณะโครงสร้างของอาร์ดุยโน่นั้นมีลักษณะที่แตกต่างกันออกไปของแต่ละประเภท โครงสร้างท่ี
นำมาต่อไปนี้จะเป็นโครงสร้างของบอร์ด Arduino UNO R3 โดยเป็นบอร์ดที่มีความนิยมใช้งานกัน
อย่างแพร่หลายของผู้ที่เร่ิมต้นลองใชง้ านการเรียนรูไ้ มโครคอนโทรลเลอร์ และบอร์ดนี้ยังสามารถหาซ้ือได้ง่าย
มรี าคาถกู
ข้อมลู จำเพาะของบอร์ด
ประเภทชปิ ไมโครคอนโทรลเลอร์ ATmega328
ใชแ้ รงดนั ไฟฟา้ 5V
รองรบั การจา่ ยแรงดันไฟฟา้ (ทแี่ นะนำ) 7 – 12 V
รองรับการจ่ายแรงดันไฟฟ้า (ทจี่ ำกัด) 6 – 20 V
พอร์ต Digital I/O 14 พอร์ต (มี 6 พอร์ต PWM output)
พอรต์ Analog Input 6 พอรต์
7
รปู ที่ 1.8 ไมโครคอนโทรลเลอร์ Arduino Uno R3
หมายเลขตา่ ง ๆ ตามรูปที่ 1.8 มคี วามหมายดังนี้
1.1 USB Port: เป็นพอร์ตสำหรับต่อสายเข้ากับช่อง USB ของคอมพิวเตอร์ เพื่อจ่ายไฟจาก
คอมพิวเตอรส์ ู่บอร์ด และอัปโหลดโปรแกรมลงไมโครคอนโทรลเลอร์
1.2 Reset Button: ปุม่ สำหรับรเี ซต็ การทำงานของไมโครคอนโทรลเลอร์
1.3 I/O Port: Digital I/O ตง้ั แตข่ า D0 ถงึ D13
1.4 I/O Port: เปน็ ช่องรับสัญญาณอนาล็อก ตง้ั แตข่ า A0 - A5
1.5 Power Port: เป็นช่องสำหรับต่อเพ่ือนำไฟไปเลี้ยงให้กบั วงจรภายนอก
1.6 Power Jack: เป็นช่องเสียบสำหรับรบั ไฟ 7-12 V จาก Adapter
1.5 บอร์ดอาร์ดยุ โน่ รุน่ ต่าง ๆ
บอร์ดอาร์ดุยโน่แต่ละประเภทมีคุณสมบัติ การใช้งานที่แตกต่างกัน ลักษณะโครงสร้างของบอร์ด
ความแตกต่างของไมโครคอนโทรลเลอร์ และนำไปใชง้ านดา้ นงานอิเล็กทรอนิกสต์ ่าง ๆ ไดห้ ลากหลายประเภท
โดยมดี ังนี้
1. Arduino UNO SMD
Arduino UNO SMD เป็นบอร์ดอาร์ดุยโน่ที่มีคุณสมบัติรวมถึงการทำงานเหมือนกับบอร์ด
Arduino UNO R3 ซึ่งมีความแตกต่างกันท่ี Chip สำหรับ Arduino UNO R3 ดังรูปที่ 1.8 จะใช้ Chip
Atmega เป็นรูปแบบ DIP หากเสียหรือเกิดการลดั วงจรสามารถถอดเปล่ียนได้ ส่วน Arduino UNO SMD ดัง
รูปที่ 1.9 ใช้รูปแบบ SMD หากเสียหายก็อาจจะต้องทิ้ง ซึ่งมีราคาที่ถูกกว่า และสามารถรองรับได้ทุก
windows
รูปท่ี 1.9 บอร์ด Arduino Uno SMD
8
[ท่มี า: https://www.navestar.com/p/uno-r3
2. Arduino Mega ADK
Arduino Mega ADK เป็นบอร์ดที่ใช้สำหรับเชื่อมต่อกับโทรศัพท์มือถือแอนดรอยด์ผ่านสาย
OTG มีพอร์ตดิจิตอลอินพุตเอาต์พุตจำนวน 54 พอร์ต มีอนาล็อกอินพุต 16 พอร์ต ทำงานที่ความถี่ 16 MHz
บอร์ดนี่มีความถี่ที่ต่ำ จึงไม่เหมาะที่จะนำไปใช้งานคำนวณ แต่เหมาะสำหรับงานที่ใช้กับการเชื่อมต่อกับ
โทรศพั ทม์ อื ถอื แอนดรอยด์มากกว่า
รปู ท่ี 1.10 ไมโครคอนโทรลเลอร์ Arduino Mega ADK
[ท่ีมา: https://inwfile.com/s-o/ma873f.jpg]
3. Arduino Mega 2560 R3
Arduino Mega 2560 R3 เป็นบอร์ดท่ไี มม่ ี USB Host การโปรแกรมคำสง่ั ต้องทำผ่าน
โปรโตคอล UART ที่มชี ปิ ไอซีไมโครคอนโทรลเลอร์ ATmega2560 เป็นบอรด์ ท่ีออกแบบมาสำหรบั งานท่ีต้อง
ใชอ้ นิ พตุ และเอาต์พตุ เช่น งานทต่ี อ้ งการรบั สัญญาณจากเซนเซอร์ การควบคุมเซอรโ์ วมอเตอรห์ ลาย ๆ ตัว
และบอร์ดนี้ยังสามารถเขียนโค้ดโปรแกรมเขา้ ไปได้มากกว่าบอร์ด Arduino UNO R3 เพราะมีหนว่ ยความจำ
แบบ flash ที่มากกว่า
รูปที่ 1.11 บอร์ด Arduino Mega ADK
[ทม่ี า: https://www.analogread.com/product/3/mega-2560-r3]
9
4. Arduino Leonardo
Arduino Leonardo เป็นบอร์ดที่รองรับการเชื่อมต่อกับพอร์ต USB ได้โดยตรง ซึ่งเป็นผล
ทำให้บอร์ดนี้สามารถเขยี นโปรแกรมเพื่อจำลองตวั เองใหเ้ ป็นเมาส์ หรอื คยี ์บอร์ดได้ บอร์ดนี้ทำงานที่แรงดันไฟ
5 โวลต์ การทำงานจะคลา้ ยกับบอรด์ Arduino UNO R3 แต่มกี ารใชไ้ มโครคอนโทรลเลอร์เป็น ATmega32U4
รูปที่ 1.12 บอร์ด Arduino Leonardo
[ท่ีมา: https://a.pololu-files.com/picture/0J3975.1200]
5. Arduino Due
Arduino Due เป็นบอร์ดที่ใช้ชิปไมโครคอนโทรลเลอร์ตระกูล ARM Cortex-M3 ซึ่งมีผล
ทำให้การประมวลผลเร็วข้ึน แต่ยงั คงมีรูปแบบการเขียนโปรแกรมโค้ดท่ีง่าย มีพอร์ตดิจิตอลอินพตุ เอาต์พุต 54
พอร์ต พอร์ตอนาล็อกอินพุต 12 พอร์ต และอนาล็อกเอาต์พุต 2 พอร์ต นิยมนำมาใช้งานที่จำเป็นต้องมีพื้นท่ี
โปรแกรมมาก การทำงานทซ่ี ับซ้อนมากขึ้น มีความถสี่ ูงถึง 84 MHz ทำใหส้ ามารถทำงานด้านการคำนวณหรือ
การประมวลผลอัลกอรทิ ึมไดเ้ ร็วกวา่
รปู ท่ี 1.13 บอร์ด Arduino Due
[ท่มี า: https://inwfile.com/s-b/xpmzv9.jpg]
10
หนว่ ยการเรียนรู้ที่ 2 เคร่ืองมอื ในการพฒั นาโปรแกรม
2.1 การติดต้ังโปรแกรม
2.1.1 การตดิ ตงั้ โปรแกรม Arduino IDE จากเว็บไซต์
ขั้นตอนท่ี 1 เขา้ ไปที่เว็บไซต์ https://www.arduino.cc/en/software\
ขั้นตอนที่ 2 เลอื กระบบปฏบิ ัตกิ ารที่ตรงกบั การใชง้ าน
โปรแกรม Arduino IDE สามารถใช้กับ Mac OS, Linux และ Windows ซึ่งผู้จัดทำได้เลือกใช้
Windows เพราะว่าส่วนใหญ่มกี ารใช้งาน Windows อย่างแพรห่ ลาย
รูปท่ี 2.1 ขั้นตอนการติดตงั้ โปรแกรม
ขั้นตอนท่ี 3 เลอื ก “JUST DOWNLOAD” เพ่อื ทำการดาวน์โหลดโดยไมม่ ีคา่ ใช้จ่าย
ขนั้ ตอนที่ 4 ทำการตดิ ตงั้ โปรแกรม จากไฟล์ท่ดี าวนโ์ หลด
รูปที่ 2.2 ข้นั ตอนการติดตง้ั โปรแกรม (ต่อ)
11
support the Arduino IDE คือ การสนับสนุน เพื่อให้นักพัฒนามีรายได้ การพัฒนาโปรแกรมให้
สมบรู ณย์ ่ิงขึน้
2.1.2 การติดตั้งโปรแกรม Arduino IDE จาก Microsoft Store
ขนั้ ตอนที่ 1 เขา้ “Microsoft Store” แลว้ คน้ หาโปรแกรม Arduino IDE
ขั้นตอนท่ี 2 กดท่ี “ตดิ ตง้ั ” เพอื่ ตดิ ตง้ั โปรแกรม
รปู ท่ี 2.3 ขั้นตอนการตดิ ตั้งโปรแกรม (ต่อ)
2.2 การใช้งานโปรแกรม
โปรแกรม Arduino IDE โดยภายในโปรแกรมจะมขี อ้ มูลดงั ต่อไปนี้
1. Menu Bar คือ เมนคู ำสั่งของโปรแกรม
2. Console Toolbar คอื แถบคำสงั่ ของการ Verify, Upload, New, Open Save
3. Text Editor คือ พื้นที่สำหรับเขียนโค้ด โดยใช้ภาษา C/C++ เป็นภาษาพื้นฐานในการ
เขยี นภาษาโปรแกรมอาร์ดุยโน่
4. Serial Monitor ทำหน้าที่แสดงผลลัพธ์จากบอร์ดอาร์ดุยโน่ และใช้รับข้อมูลจากผู้ใช้
ส่งข้อมลู ไปยังบอรด์ อาร์ดุยโน่
12
5. Text คือ พื้นที่แสดงเอาต์พุตข้อความตามการทำงานของอารด์ ุยโน่ รวมถึงข้อความของ
ข้อผิดพลาดทัง้ หมด และขอ้ ความอน่ื ๆ
6. Massage Area คือ พื้นที่แสดงข้อผิดพลาด และแสดงข้อเสนอแนะเกี่ยวกับการบันทึก
การส่งออกรหสั
รูปท่ี 2.4 โปรแกรม Arduino IDE
13
2.2.1 ขนั้ ตอนการใชง้ านโปรแกรม Arduino IDE
ขั้นตอนที่ 1 เปิดโปรแกรม Arduino IDE
รูปท่ี 2.5 เปดิ โปรแกรม Arduino IDE
ข้นั ตอนที่ 2 สรา้ ง Sketch ใหม่ โดยเลือกที่ File > New
รูปท่ี 2.6 การสรา้ ง Sketch ใหม่ ในโปรแกรม Arduino IDE
14
รปู ที่ 2.7 เปดิ โปรแกรม Arduino IDE
ขั้นตอนที่ 3 เขยี นโปรแกรมคำส่งั ลงไปในพน้ื ที่ Text Editor
รูปท่ี 2.8 การเขียนโปรแกรมคำสัง่
การเขยี นโปรแกรมอาดยุ โน่ จะประกอบไปด้วยฟังกช์ ัน setup และฟงั ก์ชัน Loop
- ฟังก์ชัน setup จะเริ่มทำงานเป็นอันดับแรก เมื่ออาดุยโน่เริ่มทำงาน และจะทำงาน
เพียงคร้งั เดยี วเทา่ น้ัน
- ฟังก์ชัน Loop จะเร่ิมทำงานทันทเี ม่ือฟงั กช์ นั setup ทำงานเสร็จ โดยจะทำงานต้ังแตค่ ำส่ัง
แรก ไปจนถึงคำส่งั สุดท้าย ทำงานวนซ้ำตลอดการทำงานของอาดยุ โน่
15
2.3 การเชื่อมตอ่ อาร์ดุยโน่ IDE
ขั้นตอนที่ 1 ตอ่ บอร์ดอาร์ดยุ โนเ่ ขา้ กบั คอมพวิ เตอร์ โดยผา่ นสาย USB
ขนั้ ตอนท่ี 2 ต้ังค่า Arduino IDE เพือ่ ที่จะอปั โหลดโปรแกรมใหก้ ับรุ่นของบอรด์ ทใ่ี ช้
2.1 คลกิ ท่ีเมนู Tools > Board เลือก Arduino Uno
รปู ท่ี 2.9 เปดิ โปรแกรม Arduino IDE
2.2 เลอื กทเ่ี มนู Tools > Port เลอื ก Port ทีต่ รงกบั การใชง้ าน
รปู ที่ 2.10 การเลือกพอรต์ สำหรับใชง้ าน
16
ขั้นตอนท่ี 3 คลกิ ท่ีปุม่ อัปโหลด เพือ่ ทำการอัปโหลดโปรแกรมลงบอร์ดอาร์ดยุ โน่
3.1 เมื่ออัปโหลดเสร็จสิ้นจะมีข้อความขึ้นว่า “Done compiling” และข้อความรายงาน
สีขาวดา้ นลา่ ง
รปู ที่ 2.11 การอัปโหลดโปรแกรมลงบอรด์
17
3.2 เม่อื มกี ารเขยี นโปรแกรมผิดพลาด จะมขี อ้ ความเปน็ สสี ม้ และจะบอกตำแหน่งทผ่ี ิดพลาด
ของโปรแกรม
รูปท่ี 2.12 การเขยี นโปรแกรมทผี่ ดิ พลาด
3.3 เมื่อมีปัญหาเกิดขึ้นระหว่างการอัปโหลด จะมีข้อความแสดงดังรูป และจะบอกปัญหา
ท่เี กดิ ขึน้ เพอ่ื ท่จี ะทำการแก้ไขให้ถูกต้อง
รูปท่ี 2.13 ปัญหาท่ีเกิดขึ้นระหว่างการอปั โหลด
18
2.4 ไลบรารี่ (Library)
ไลบรารี่ คือ ฟังก์ชันย่อย ๆ และกระบวนการตา่ ง ๆ ที่มีความจำเป็นในการเขียนโปรแกรม โดยจะถูก
รวบรวม เรียกว่า ไลบรารี่ ยกตัวอย่างเช่น การใช้เซนเซอร์ต่าง ๆ, การใช้งานหน้าจอ OLED, โมดูล GPS และ
สว่ นขยายต่าง ๆ
ขน้ั ตอนการตดิ ตัง้ ไลบรารี่
วิธที ี่ 1 เลอื กหาในโปรแกรม Arduino IDE
1. เปดิ โปรแกรม Arduino IDE
2. เลอื กเมนู Tools
3. เลอื ก Manage Libraries
รปู ท่ี 2.14 ข้นั ตอนการติดตั้งไลบรารี่
4. ค้นหาไลบรารี่ที่ต้องการในช่องค้นหา เช่นดังรูปที่ 2.15 “DHT11” เป็นไลบราร่ี
สำหรบั เซ็นเซอรว์ ดั อณุ หภมู ิและความชนื้ โดยไลบรารเ่ี ป็นชดุ ของโคด้ โปรแกรม สว่ น
ขยายของคำสั่ง ทผ่ี ู้อนื่ เขยี นไวแ้ ลว้ โดยทเ่ี ราไมต่ ้องเขียนขน้ึ เอง
5. เลือกไลบรารที่ ี่ตอ้ งการใหต้ รงกับทตี่ รงกับต้องการ
19
รูปท่ี 2.15 ข้นั ตอนการติดตงั้ ไลบรารี่ (ตอ่ )
วิธีท่ี 2 เลือกหาใน Google
การเลือกหาไลบรารี่ใน Google เป็นการเลือกหาเมื่อค้นหาในไลบรารี่ในโปรแกรม
Arduino IDE ไม่พบ จึงตอ้ งมีการคน้ หาจาก Google โดยเปน็ ไฟล์ .zip
1. เปดิ โปรแกรม Arduino IDE
2. เลือกทเ่ี มนู Sketch
3. เลือก Include Library
4. เลอื ก Add .ZIP Library…
รูปท่ี 2.16 ข้นั ตอนการตดิ ตง้ั ไลบราร่ี (ตอ่ )
20
5. เลือกไลบรารี่จากไฟล์ ZIP
รูปท่ี 2.17 ขน้ั ตอนการตดิ ต้ังไลบราร่ี (ตอ่ )
21
หน่วยการเรยี นรทู้ ี่ 3 พ้ืนฐานการเขยี นโปรแกรม
3.1 ระบบเลขฐาน
เลขฐาน คือ สัญลักษณ์ทางคณิตศาสตร์ที่แสดงถึงจำนวนต่าง ๆ ระบบเลขแต่ละระบบจะมีจำนวน
ตวั เลขทีใ่ ช้เหมอื นกับช่อื ของระบบตวั เลขนั้น และมฐี านของจำนวนเลขตามชอ่ื ของฐานนัน้ ๆ
1. เลขฐานสอง (Binary Number)
เลขฐานสอง คือตัวเลขที่มีค่าไม่ซ้ำกัน เป็นเลขฐานที่ประกอบดว้ ยตัวเลข 2 ตัว คือ 0 และ 1
เป็นเลขทน่ี ำมาใชก้ ับคอมพิวเตอร์ในการประมวลผลการทำงาน การเกบ็ ขอ้ มูล หรือใช้กบั โปรแกรมท่ีเก่ียวข้อง
กับสถานะทางไฟฟ้า เชน่ 0 หมายถึงสถานะปิดไฟ และ 1 หมายถงึ สถานะเปิดไฟ
2. เลขฐานแปด (Octal Number)
เลขฐานแปด เป็นเลขฐานที่ประกอบด้วยเลข 8 ตัว คือ 0, 1, 2, 3, 4, 5, 6, 7 การใช้
เลขฐานแปดแทนเลขฐานสอง เพอ่ื ทำใหจ้ ำนวนบติ ส้ันลง
3. เลขฐานสบิ (Decimal Number)
เลขฐานสิบ เป็นเลขฐานที่มนุษย์สามารถเข้าใจได้มากที่สุด เพราะเป็นตัวเลขที่เกี่ยวข้อง
กับชีวิตในประจำวัน โดยเลขฐานสิบประกอบด้วยเลข 10 ตัว คือ 0 , 1, 2, 3, 4, 5, 6, 7, 8, 9
4. เลขฐานสิบหก (Hexadecimal Number)
เลขฐานสบิ หก เปน็ เลขฐานท่ีประกอบด้วยเลข 10 ตวั และตวั อกั ษร 6 ตัว คอื ตัวเลข 0, 1, 2,
3, 4, 5, 6, 7, 8, 9 และตวั อักษรคอื A แทน 10, B แทน 11, C แทน 12, D แทน 13, E แทน 14 และ F แทน
15
ชอ่ื เลขฐาน จำนวนหลัก (Digit)
ฐานสอง (Binary) 01
ฐานแปด (Octal) 012345678
ฐานสิบ (Decimal) 0123456789
ฐานสิบหก (Hexadecimal) 0 1 2 3 4 5 6 7 8 9 A B C D E F
ตารางท่ี 3.1 จำนวนหลกั ของระบบจำนวนฐานต่าง ๆ
การเขียนเลขระบบเลขฐาน ต้องระบุชื่อฐานกำกับไว้ที่ท้ายสุดของกลุ่มตัวเลขนั้น ๆ เสมอ
ยกเวน้ ระบบเลขฐานสิบซ่งึ ใช้งานกนั อย่างแพร่หลาย ส่วนในระบบเลขฐานอน่ื ๆ จำเป็นตอ้ งเขยี นกำกับไว้เสมอ
เพื่อป้องกันความสับสน การอ่านระบบเลขฐาน สามารถอ่านเรียงตามตัวเลข ยกเว้นเลขฐานสิบที่อ่านค่าของ
ตวั เลขในแตล่ ะหลกั
22
ตวั อยา่ ง
10012 หมายถงึ เลขฐานสอง อา่ นว่า หน่ึง-ศนู ย์-ศูนย-์ หน่งึ
51728 หมายถงึ เลขฐานแปด อ่านว่า ห้า-หนึง่ -เจ็ด-สอง
6F4C16 หมายถึง เลขฐานสบิ หก อ่านว่า หก-เอฟ-สี่-ซี
3.1.1 การแปลงเลขฐานอืน่ ๆ เปน็ เลขฐานสิบ
1. การแปลงเลขฐานสองเป็นเลขฐานสิบ
สามารถทำได้โดยวิธีการคูณค่าประจำหลักคือ 2n (n คือตัวเลขประจำหลักเริ่มที่ 0
จากตัวเลขท้ายสุด เช่น 10111 ตัวเลข 0 จะประจำหลักที่ 3 ) กับค่าสัมประสิทธิ์และนำผลลัพธ์ที่ได้
จากการคณู ในแต่ละหลกั มารวมกัน จะได้เป็นคา่ ของเลขฐานสบิ
ตัวอย่าง จงเปลีย่ น 101102 ให้เป็นเลขฐานสบิ
วธิ ที ำ
101102 = 1x24 + 0x23 + 1x22 +1x21 + 0x20
= 1x16 + 0x8 + 1x4 +1x2 + 0x1
= 16 + 0 + 4 + 2 + 0
= 22
ดงั นน้ั 101102 = 22
2. การแปลงเลขฐานแปดเปน็ เลขฐานสิบ
สามารถทำได้โดยวธิ ีการคูณค่าประจำหลกั คอื 8n กับคา่ สัมประสทิ ธ์แิ ละนำผลลัพธ์ที่
ได้จากการคูณในแตล่ ะหลกั มารวมกนั จะได้เป็นคา่ ของเลขฐานสบิ
ตัวอย่าง จงเปล่ียน 42568 ให้เปน็ เลขฐานสบิ
วิธีทำ
42568 = 4x83 + 2x82 + 5x81 + 6x80
= 4x512 + 2x64 + 5x8 + 6x1
= 2048 + 128 + 40 + 6
= 2222
ดังนนั้ 42568 = 2222
3. การแปลงเลขฐานสิบหกเปน็ เลขฐานสิบ
สามารถทำไดโ้ ดยวิธีการคูณคา่ ประจำหลักคือ 16n กับค่าสัมประสิทธ์แิ ละนำผลลัพธ์
ท่ีได้จากการคณู ในแตล่ ะหลกั มารวมกัน จะได้เปน็ คา่ ของเลขฐานสบิ
ตัวอยา่ ง จงเปลี่ยน B8D916 ใหเ้ ป็นเลขฐานสบิ
23
วิธีทำ
B8D916 = Bx163 + 8x162 + Dx161 + 9x160
= 11x4096 + 8x256 + 13x16 + 9x1
= 45056 + 2048 + 9
= 47321
ดังนน้ั B8D916 = 47321
3.1.2 การแปลงเลขฐานสิบ เปน็ เลขฐานตา่ ง ๆ
การเปลี่ยนเลขฐานสิบไปเป็นเลขฐานต่าง ๆ มขี ั้นตอนดงั นี้ คอื
1. แบง่ เลขฐานสบิ จำนวนเต็มแยกออกจากเลขฐานสิบท่เี ปน็ ทศนิยม
2. ส่วนของเลขฐานสบิ ท่ีเป็นจำนวนเต็ม
- หลักการคือ นำเลขฐาน 10 ตัวนั้นมาตั้งหารด้วยเลขฐานที่ต้องการไปเรื่อย ๆ
จนกว่าผลลพั ธ์จะเปน็ 0
- ในการหารแต่ละครั้งให้เก็บเศษไว้ เมื่อการหารสิ้นสุดแล้ว ให้นำเศษมาเรียงกัน
จากลา่ งขน้ึ บนก็จะได้เลขฐานทีแ่ ปลงไป
- โดยเศษตัวสุดท้ายคือ MSB : Most Significant Bit เป็นบิตที่อยู่ทางด้านซ้ายสุด
และมีค่ามากที่สุด และ LSB : Least Significant Bit เป็นบิตที่อยู่ทางด้านขวาสุด และมีค่า
นอ้ ยทีส่ ุด
3. ส่วนของเลขฐานสบิ ท่เี ปน็ ทศนิยม จะถกู คณู ดว้ ยเลขฐานที่ต้องการหลาย ๆ ครัง้ เทา่ จำนวน
ทศนิยมที่ต้องการหรือจนกว่าจะคูณต่อไปไม่ได้ ผลลัพธ์คือ เลขจำนวนเต็มหน้าทศนิยมของ
การคณู แต่ละครั้ง เลขจำนวนเต็มของการคณู ครง้ั แรกมีค่าเป็น MSD เลขจำนวนเต็มของการ
คูณครัง้ สุดท้ายมคี ่าเปน็ LSD
24
ตัวอย่าง จงเปลยี่ น 0.687510 ให้เป็นเลขฐานสอง (ตอบทศนิยม 4 ตำแหนง่ )
วิธที ำ
0.6875x2 = 1.3750 1 MSD
0.3750x2 = 0.7500 0
0.7500x2 = 1.5000 1
0.5000x2 = 1.0000 1 LSD
ดังนนั้ 0.687510 = 0.10112
ตัวอย่าง จงเปลี่ยน 43710 ใหเ้ ป็นเลขในระบบฐานแปด LSB
วธิ ีทำ MSB
8 )437
8 )54 5
8 )6 6
06
ดงั นน้ั 43710 = 6658
3.2 ขน้ั ตอนการพฒั นาโปรแกรม
รปู ท่ี 3.1 ลำดับการพฒั นาโปรแกรม
25
1. วิเคราะห์ปัญหา จะประกอบดว้ ยขั้นตอน ดงั น้ี
- กำหนดวัตถุประสงค์ของงาน เป็นการพิจารณาว่าโปรแกรมต้องทำการประมวลผล
อะไรบ้าง
- การระบุข้อมูลออก คือการระบุเป้าหมาย วัตถุประสงค์ ผลลัพธ์ที่ต้องการ
และการคำนงึ ถึงผใู้ ชง้ านในการออกแบบ
- การระบุข้อมูลเข้า คือข้อมูลที่จะส่งเข้าในโปรแกรมนั้นมีอะไรบ้าง ข้อมูลที่จะป้อนเข้าสู่
คอมพิวเตอร์เป็นขอ้ มลู แบบใด เพื่อใหโ้ ปรแกรมประมวลผล และแสดงผลลัพธ์ได้
- กำหนดวิธีการประมวลผล เพ่ือทใ่ี หท้ ราบวา่ โปรแกรมมขี ั้นตอนการประมวลผลอย่างไร และ
มีเง่ือนไขการประมวลผลอะไรบ้าง
2. เขียนผังงาน เป็นการลงรหัสในโปรแกรม ช่วยในการออกแบบ เพื่อการป้อนข้อมูลเข้าสู่
เครื่องคอมพิวเตอร์ให้ทำงานได้ ในการสั่งงานให้คอมพิวเตอร์ทำงานตามลำดับคำสั่งในโปรแกรม เป็นขั้นตอน
ไปอยา่ งมีลำดบั จงึ ต้องมีการวางแผน เขยี นผังงานเป็นลำดบั ขัน้ ตอนทม่ี ีความละเอียดชดั เจน
3. เขียนโปรแกรม คือการนำผลลัพธ์การออกแบบโปรแกรม มาเปลี่ยนเป็นโปรแกรม
ภาษาคอมพิวเตอร์ ผู้เขียนโปรแกรมภาษาจะต้องให้ความสำคัญต่อรูปแบบคำสั่งและกฎเกณฑ์ของภาษาที่ใช้
เพ่ือการประมวลผลทีเ่ ป็นไปตามผลลัพธท์ ไ่ี ด้ออกแบบไว้
4. ทดสอบและแก้ไขโปรแกรม คือการตรวจสอบความถูกต้องของโปรแกรม โดยต้องมีความถูกต้อง
ตามรูปแบบและกฎเกณฑ์ของภาษา ตรวจสอบว่าโปรแกรมประมวลผลถูกต้องหรือไม่ ถ้าพบว่าโปรแกรม
ไม่ถูกตอ้ ง ควรดำเนินการแก้ไขโปรแกรมตอ่ ไป
5. การทำเอกสาร เป็นงานที่สำคัญในการพัฒนาโปรแกรม การทำเอกสารช่วยให้ผู้ใช้โปรแกรมเข้าใจ
วัตถุประสงค์ ข้อมูลที่จะต้องใช้งานกับโปรแกรม รวมถึงผลลัพธ์ที่จะได้จากโปรแกรม การทำโปรแกรมทุกคร้ัง
จะตอ้ งทำเอกสาร เพ่ือใช้สำหรับในการอา้ งองิ เมื่อมกี ารใชง้ านโปรแกรม รวมถงึ การแกไ้ ขปรบั ปรุงโปรแกรม
3.3 การเขยี นโฟล์วชารต์
โฟล์วชาร์ต (Flowchart) คือ แผนภาพ หรือสัญลักษณ์แสดงการอธิบายลำดับขั้นตอนการทำงาน
การแก้ปัญหา การพัฒนาโปรแกรมคอมพิวเตอร์ โดยจะมีการใช้สัญลักษณ์ต่าง ๆ ที่มีการประกอบเข้าด้วยกัน
และมีทศิ ทางทแ่ี สดงลำดบั ขนั้ ตอนต้งั แตเ่ ริม่ ขัน้ ตอนแรกจนถึงส้ินสุดการทำงานขนั้ ตอนสุดทา้ ย
26
รูปที่ 3.2 ลักษณะของผังงาน
โครงสรา้ งของผังภาพสามารถแบ่งไดเ้ ปน็ 3 รูปแบบหลัก ๆ คือ
1. แบบเรยี งลำดบั (Sequence)
เป็นรูปแบบผังภาพที่ง่ายสุด ไม่ซับซ้อน และไม่มีการเปรียบเทียบเงื่อนไขใด ๆ โดยแสดงขั้นตอนการ
ทำงานไปตามลำดับตั้งแต่ต้นจนส้ินสุดกระบวนการ ดังรปู ท่ี 3.2
รูปที่ 3.3 ผังภาพแบบเรียงลำดับ
27
2. แบบมเี งื่อนไข (Decision)
การเลือกกระทำตามเงื่อนไข คือ การตัดสินใจ หรือเลือกเงื่อนไขคือ โดยปกติจะมีเหตุการณ์
ให้ทำ 2 กระบวนการ คือ เงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง และเป็นเท็จจะกระทำอีกกระบวนการ
หน่ึงดงั รูปที่ 3.3
รปู ท่ี 3.4 ผังภาพแบบมีเง่ือนไข
3. แบบทำซ้ำ (Loop)
การทำซ้ำ คือ กระบวนการกลับมาทำงานในขั้นตอนเดิม จะเห็นว่า flowchart มีลักษณะวน ซึ่งเรียกว่า
loop จะสงั เกตวุ า่ การวน loop ดังรูปท่ี 3.4 จะไม่มที างออกไปทำงานในข้ันตอนต่อไปได้เลย
รปู ท่ี 3.4 แบบทำซำ้
28
หน่วยการเรยี นรูท้ ี่ 4 โครงสรา้ งภาษาซี
4.1 ตวั แปรในภาษาซี
ตัวแปร (Variable) คือ การเลือกพื้นที่ในหน่วยความจำของคอมพิวเตอร์สำหรบั เก็บข้อมลู ที่ต้องใชใ้ น
การทำงานของโปรแกรม โดยตัวแปรในภาษาซี มีการจำแนกชนิดของตัวแปรออกเป็น 5 ชนิด แต่ละชนิดจะมี
คุณสมบตั ิการใชง้ านท่ีต่างกนั เพอื่ ใชใ้ นการาเก็บขอ้ มลู ทมี่ รี ูปแบบแตกต่างกนั คอื
1. char ใช้เก็บข้อมูลชนิดตัวอักษร (Character) ได้แก่ ตัวอักษร ตัวเลข (ที่เก็บในลักษณะตัวอักษร)
และกลุ่มตัวอกั ขระพเิ ศษ เปน็ ต้น
2. int ใชเ้ กบ็ ข้อมลู ท่ีเป็นเลขจำนวนเต็ม (Integer) ขอ้ มูลที่เป็นเลขจำนวนเต็ม ไดแ้ ก่ จำนวนเต็มบวก
จำนวนเตม็ ลบ ศูนย์ เป็นตน้
3. float ใช้เกบ็ ขอ้ มลู ชนดิ เลขทศนิยม (Float) เปน็ ข้อมลู เลขทศนยิ มแบบ Single Precision
4. double ใชเ้ กบ็ ข้อมูลทเี่ ปน็ เลขทศนิยมที่มีความละเอียดหลายตำแหน่ง เปน็ ขอ้ มลู เลขทศนิยมแบบ
Double Precision
5. void ใช้เก็บตัวแปรที่ไม่มีค่า เป็นฟังก์ชันที่ไม่มีการส่งค่าใด ๆ คืนมา โดยการทำงานฟังก์ชัน void
จะถูกกำหนดใหป้ ระกอบด้วยขอ้ มูลเซต็ วา่ ง (empty set)
ชนดิ ตัวแปร ขนาดความกว้าง (บิต) ค่าข้อมูลที่เกบ็ ได้
Char 8 -128 ถึง +127
Int 16 -32768 ถงึ +32767
Float 32 3.4E ถึง 3.4E+38
Double 64 1.7E-308 ถึง 1.7E+308
Void 0 ไม่มีคา่
ตารางที่ 4.1 แสดงคุณสมบัติของตวั แปรในภาษาซี
รูปแบบในการประกาศตวั แปรในภาษาซี
การสร้างตัวแปรขึ้นมาเพื่อใช้งาน เรียกว่า การประกาศตัวแปร (Variable Declaration)
โดยการเขียนคำสั่งท่ีถกู ตอ้ งตามแบบการประกาศตวั แปร จะมีดังนี้
Type name; type = ชนิดของตัวแปร
; name = ช่ือของตัวแปร (ซงึ่ จะต้องตง้ั ให้ถกู ตอ้ งตามหลกั ของภาษาซี)
29
การเขยี นคำสั่งเพือ่ ประกาศตวั แปร จะเขยี นไวใ้ นส่วนหัวของโปรแกรมก่อนฟงั ก์ชนั main ซ่งึ การเขียน
ไวใ้ นฟังก์ชัน main จะทำให้ตัวแปรสามารถเรียกใช้จากทต่ี ำแหนง่ ใดในโปรแกรมได้ ยกตวั อยา่ งเชน่
#include <stdio.h>
Int num; สร้างตัวแปรชื่อ num เพื่อเก็บข้อมูลชนิดจำนวน
เต็ม
Float x; สร้างตวั แปรชอ่ื x เพือ่ เก็บข้อมลู ชนิดเลขทศนยิ ม
Char y; สร้างตวั แปรชอื่ y เพ่ือเกบ็ ขอ้ มูลชนดิ ตัวอักขระ
Void main()
{
printf("Enter number : ");
scanf("%d" ,&num);
printf("Enter name : ");
scanf("%f",&n);
printf("Thank you");
}
หลกั การตง้ั ชือ่ ตัวแปร
สำหรับการประกาศสร้างตัวแปรต้องมีการกำหนดชื่อ โดยมีข้อกำหนดในการตั้งชื่อตัวแปร
เอาไว้ ถ้าหากมีการตั้งผิดหลักการ โปรแกรมจะไม่สามารถทำงานได้ หลักการในการตั้งชื่อตัวแปรใ นภาษาซี
มีดงั นี้
1. ต้องมอี ักษร A – Z หรือเครื่องหมาย _ (Underscore) ขึน้ ตน้ เท่านั้น
2. ภายในชื่อตัวแปรสามารถใช้ตัวอักษร A – Z ,อักษร a – z ,ตัวเลข 0 – 9
หรือเคร่อื งหมาย “_”
3. ภายในชือ่ ห้ามเว้นช่องว่าง หรือใช้สัญลักษณ์นอกเหนือจากขอ้ 2
4. ตัวอักษรเล็กหรือใหญจ่ ะให้ความหมายทตี่ า่ งกนั
5. หา้ มตัง้ ช่ือซ้ำกบั คำสงวน (Reserved Word) ดังน้ี
auto default float register struct volatile break do
far return goto short
typedef char switch while case double const enum
int sizeof static void
else if signed union
unsigned continue extern long
ตารางท่ี 4.2 คำสงวนในภาษาซี
30
4.2 คำสั่ง if
คำสั่ง if เป็นคำสัง่ ที่ใชส้ ำหรับการตรวจสอบเงื่อนไข เพื่อสั่งให้โปรแกรมเลือกทำงาน ตามผลลัพธ์ที่ได้
จากการตรวจสอบเง่ือนไขของคำสั่ง ฟงั กช์ ัน if จะมีท้งั ทางเลือกเดยี วและหลายทางเลือกโดยมดี งั น้ี
1. ฟังก์ชัน if ทางเลือกเดียว ถ้าเงื่อนไขในการเปรียบเทียบเป็นจริงจะทำคำสั่งในชุดฟังก์ชันระหว่าง
ปกี กาเปิดและปีกกาปดิ แตถ่ า้ ไม่จริงก็จะจบการทำงาน
รูปแบบการใชค้ ำสงั่ if ทางเลอื กเดียว
If (เงอื่ นไข)
{
คำสัง่ ที่ตอ้ งกระทำเมื่อเงอื่ นไขเปน็ จรงิ
}
รูปแบบการทำงาน
รูปที่ 4.1 ผงั การทำงานของฟังกช์ ัน if ทางเลือกเดยี ว
2. ฟังก์ชัน if หลายตัวเลือก การทำงานของฟังก์ชัน if หลายทางเลือกจะเป็นการเปรียบเทยี บเงื่อนไข
ที่ 1 ถา้ เงอื่ นไขเปน็ จริงจะทำชุดที่ 1 แตถ่ า้ ไม่ใชห่ รือเป็นเทจ็ จะทำการเปรียบเทียบกบั เงื่อนไขที่ 2 ถ้าเงื่อนไขท่ี
2 เป็นจริงจะทำชุดฟังก์ชันที่ 2 แต่เป็นเท็จจะทำชุดฟังก์ชันที่ 3 โดยฟังก์ชัน if นี้สามารถทำได้อย่างต่อเนื่อง
หลายทางเลอื ก ข้ึนอย่กู ับจำนวนเงื่อนไขท่ีผู้เขยี นโปรแกรมกำหนด
31
รูปแบบการใชค้ ำส่งั if หลายตวั เลือก
If(ตัวแปร ตวั กระทำการเปรยี บเทยี บหรอื คา่ คงท่ี)
{ ชุดฟังกช์ ันที่ 1
}
else if(ตวั แปร ตวั กระทำการเปรียบเทยี บหรอื ค่าคงที่)
{ ชุดฟังกช์ ันที่ 2
}
else
{ ชดุ ฟังก์ชนั ที่ 1
}
รปู แบบการทำงาน
รปู ที่ 4.2 ผังการทำงานของฟังกช์ นั if หลายทางเลือก
4.3 คำสั่ง for
คำสั่ง for เป็นคำสั่งที่สั่งให้โปรแกรมมีการทำงานซ้ำ ๆ (loop) จนกว่าเงื่อนไขที่กำหนดไว้จะเปน็ เทจ็
จึงออกจากคำส่ัง for แลว้ ไปทำคำส่งั ถดั ไป คำส่งั for ควรใช้เมื่อมกี ารทราบจำนวนรอบของการทำงาน
32
รปู แบบการใชค้ ำส่งั for
เมื่อกำหนดรูปแบบคำสั่ง for แล้วคำสั่งที่จะสามารถทำงานได้จะทำงานเพียงหนึ่งคำสั่ง
เทา่ น้นั นั่นคอื คำส่ังต่อจากคำสัง่ for
For (Initial; Condition; Step)
Statement;
หากต้องการให้การวนลูปหนึ่งรอบสามารถทำงานได้หลายคำสั่งพร้อม ๆ กันในแต่ละรอบ
สามารถทีจ่ ะใชเ้ คร่อื งหมาย { } เขา้ มากำหนดส่วนของการทำงาน
For (Initial; Condition; Step)
{
Statement1;
Statement2;
Statement3;
Statement4;
}
คำอธิบาย
for คอื คำส่ังเพอ่ื ใช้ในการวนรอบ
Initial คอื ตวั แปรที่ใช้กำหนดคา่ เร่ิมตน้ ในการวนรอบ
Condition คือ เงอ่ื นไขของตวั แปรท่ใี ชใ้ นการกำหนดการวนรอบ
Step คือ ตัวแปรทใี่ ชใ้ นการเพิ่มค่าเพือ่ การวนรอบในแต่ละรอบ
Statement1-N คือ คำสง่ั หรือชดุ คำส่งั ทใี่ ชท้ ำงานในแต่ละรอบ
รปู แบบการทำงาน
รูปท่ี 4.3 ผังงาน Flowchart รปู แบบการทำงานของคำสง่ั for
33
4.4 คำสงั่ while
คำสั่ง while เป็นคำสั่งให้โปรแกรมวนรอบการทำงานซ้ำ ๆ กัน (loop) เช่นเดียวกับคำสั่ง for
แต่มคี วามแตกต่างกนั ท่ี คำส่งั for จะมจี ำนวนรอบการทำงานท่ีแนน่ อน ส่วนคำสั่ง while จะทำงานในวงรอบ
ไมร่ จู้ บจนกว่าเงอื่ นไขจะเปน็ เท็จจงึ จะสนิ้ สดุ การทำงานในวงรอบ
รปู แบบการใชค้ ำส่งั while While (เงื่อนไข)
รปู แบบการทำงาน {
คำสง่ั ที่ต้องการให้ทำงานเมอื่ เงื่อนไขยงั เป็นจริงอยู่
}
รูปท่ี 4.4 ผงั งาน Flowchart รูปแบบการทำงานของคำสัง่ while
34
4.5 คำสั่ง do…while
คำสั่ง do…while มีการทำงานคล้ายกับคำสั่ง while แต่ลักษณะการทำงานจะแตกต่างกัน โดยคำสงั่
do…while จะทำงานก่อน 1 รอบ แล้วจึงมีการตรวจสอบเงื่อนไข หากเงื่อนไขเป็นจริงก็จะทำงานต่อในรอบ
ตอ่ ไป หากเง่อื นไขเปน็ เท็จกจ็ ะออกจากการทำงานในรอบน้ัน
รปู แบบการใชค้ ำสั่ง do…while
Do
{
คำสัง่ ท่ีต้องการให้ทำงาน
} While (เง่อื นไข)
รปู แบบการทำงาน
รปู ที่ 4.5 ผงั งาน Flowchart รปู แบบการทำงานของคำส่งั do…while
35
หน่วยการเรียนรทู้ ี่ 5 การเขียนโปรแกรมภาษาซีสำหรบั อารด์ ยุ โน่
5.1 โครงสรา้ งการเขยี นโปรแกรมภาษาซีของอารด์ ยุ โน่
โครงสร้างของการเขียนโปรแกรมภาษาซขี องอาร์ดุยโน่ จะจัดรูปแบบออกเป็นส่วนยอ่ ย ๆ หลายส่วน
โดยเรยี กวา่ ฟงั กช์ นั เมื่อนำฟังก์ชันมารวมเขา้ ด้วยกนั จะเรยี กว่าโปรแกรม ซ่ึงโปรแกรมจะตอ้ งประกอบไปด้วย
ฟงั ก์ชนั จำนวนเท่าใดก็ได้ แตอ่ ยา่ งน้อยทีส่ ุดจะต้องมฟี งั ก์ชัน จำนวน 2 ฟังก์ชนั คอื setup() และ loop()
รูปที่ 5.1 โครงสรา้ งโปรแกรมของอาร์ดุยโน่
• Header ในสว่ นนีม้ ีหรือไม่มีกไ็ ด้ ถา้ มีตอ้ งต้องกำหนดไวใ้ นสว่ นเรม่ิ ต้นของโปรแกรม
• setup() ในส่วนนี้เป็นฟังก์ชันบังคับที่ต้องมีกำหนดให้มีในทุก ๆ โปรแกรม ถึงแม้ว่าบาง
โปรแกรมไมต่ ้องการใช้งานกย็ งั ตอ้ งประกาศไว้
• loop() เป็นสว่ นฟงั ก์ชนั บังคับที่ต้องกำหนดให้มีในทุก ๆ โปรแกรม จะใช้เก็บคำสั่งท่ีต้องการ
ให้โปรแกรมทำงานเปน็ วงลปู ซำ้ ๆ ไม่หยดุ การทำงาน
5.2 ตวั แปรในอาร์ดยุ โน่
ตัวแปร คือ กลุ่มของตัวอักษร ตัวเลข เครื่องหมายใด ๆ ที่รวมกันเป็นชื่อ เพื่อใช้กำหนดเป็นตัวแทน
ของค่าข้อมูลที่ต้องการอ้างถึงในโปรแกรม เนื่องจากการทำงานของโปรแกรมจะใช้ค่าตัวเลขที่ผู้ใช้งานกำหนด
เพื่อนำมาประมวลผล ดังนั้นทุกโปรแกรมภาษา จึงต้องมีการกำหนดชื่อขึ้นมาใชง้ านแทนค่าตัวเลข เพื่อให้การ
เขียนโปรแกรมทำงานได้อยา่ งสะดวก งา่ ยตอ่ การอา่ น ทำความเข้าใจได้งา่ ยขึ้น
36
การตัง้ คา่ ตัวแปรของอารด์ ยุ โนจ่ ะยึดหลักของ ANSI-C [1] คอื
- ชื่อของตัวแปรต้องประกอบด้วยตัวอักษร ตัวเลข และเครื่องหมายพิเศษอีก 2 ตัว
คือ เครื่องหมาย Under Line ( “_” ), Dollar Sign ( “$” ) โดยชื่อต้องเรียงติดทั้งหมดห้ามมีการเว้นวรรค
มคี วามยาวไมเ่ กิน 32 ตวั อกั ษร
- ชือ่ ของตวั แปรท่ีกำหนด จะใชเ้ ฉพาะตัวอักษรทง้ั หมด หรือตัวอกั ษรผสมกบั ตัวเลข อาจผสม
กับเครื่องหมาย “_” และ “$” ต้องเริ่มต้นชื่อด้วยตัวอักษรเป็นอันดับแรก ห้ามตั้งชื่อโดยเริ่มต้นด้วยตัวเลข
หรอื เครอื่ งหมาย
- ชอื่ ของตัวแปร ต้องกำหนดด้วยตัวอักษรทเี่ ป็นตวั อกั ษรพิมพ์เล็กเท่านน้ั ในโปรแกรมภาษาซี
จะถือว่าตัวอักษรที่เป็นตัวอักษรพิมพ์เล็กและพิมพ์ใหญ่ มีความหมายที่ต่างกัน เช่น “LED”, “led”, “Led”
จะมีความหมายทตี่ ่างกัน
- ในการตั้งชื่อตัวแปร ห้ามนำคำสงวน (Reserve Word) มาใช้ตั้งชื่อ โดยคำสงวน ได้แก่
ชอ่ื คำส่งั และช่ือ Internal Function ท่ีสรา้ งไวแ้ ลว้ ในตวั ภาษา
5.3 คำสงวนต่าง ๆ ของอารด์ ยุ โน่
โปรแกรมภาษาซีของอาร์ดุยโน่จะมีคำสั่งที่กำหนดขึ้นมาใช้งานไว้แล้วจำนวนหนึ่ง เมื่อผู้ใช้งาน
จะประกาศ สร้างตวั แปร สรา้ งคำส่งั หรอื ฟงั กช์ ันต่าง ๆ ข้ึนมาใชง้ าน ชอ่ื คำสั่งเหล่าน้ีจะต้องไมซ่ ้ำกับของคำสั่ง
ท่ีมอี ยู่แล้ว ซึ่งคำส่ังอารด์ ุยโน่ทม่ี ีการกำหนดข้นึ มาใชแ้ ลว้ น้ันจะเรียกว่าคำสงวน ทหี่ ้ามไมใ่ ห้ผู้ใชท้ ำการประกาศ
ขน้ึ มาใหม่ เพอื่ ทจี่ ะไม่ใหไ้ ปซำ้ กับคำส่ังเดิมท่ีมอี ยแู่ ลว้ คำสงวนของอาร์ดยุ โน่ ไดแ้ ก่
คำสงวนท่เี ป็น Constant ของอารด์ ยุ โน่ SERIAL DISPLAY PI HALF_PI
HIGH LOW INPUT OUTPUT FALLING RISING false true
TWO_PI LSBFIRST MSBFIRST CHANGE
null PB4
PC1
คำสงวนทีเ่ ปน็ Port Variables & Constant ของอารด์ ุยโน่ PB3 PIND
DDRB PINB PORTB PB0 PB1 PB2 PC0 PD6
PB5 PB6 PB7 DDRC PINC P ORTC DDRD
PC2 PC3 PC4 PC5 PC6 PC7 PD5
PORTD PD0 PD1 PD2 PD3 PD4
PD7
คำสงวนทีเ่ ป็น Datatypes ของอารด์ ยุ โน่ 37
boolean byte char class default do double int
long private protected public return short signed static
switch throw try unsigned void
คำสงวนท่ีเป็นคำส่งั ของอาร์ดยุ โน่
abs acos += + [] asin = atan
atan2 & | boolean byte case ceil char
class , // ?: constrain cos {} --
Default delay Microseconds / /** . else ==
exp false float floor for <= if ++
!= int << < log && ! ||
loop max millis min - % /* *
print println available new null () PI return
>> ; Serial Setup sin sq sqrt -=
switch tan this true void whie begin read
write digitalWrite digitalRead serialAvaible
analogRead analogWrite attachInterrupts printHex
beginSerial serialWrite serialRead pulseIn
printString printInteger printByte pinMode
printOctal printBinary printNewline
38
5.4 คุณสมบัติเฉพาะของตัวแปร
ตวั แปรชนดิ ท่ใี ชเ้ ก็บค่าเลขจำนวนเต็ม (char และ int) ในภาษาซีไม่ได้มีการจำแนกชนิดของตัวแปรเพ่ือใช้เก็บ
ค่าตัวเลขที่เป็น ค่าบวก หรือค่าลบ แต่ภาษาซีจะใช้วิธีการเพิ่มคำสั่งสำหรับคุณสมบัติที่เฉพาะให้กับตัวแปรไว้
อีก 4 คำสั่ง เพื่อให้ผู้ใช้สามารถปรับแก้คุณสมบัติในการใช้งานของตัวแปรให้ตรงกับจุดประสงค์มากยิ่งขึ้น
โดยภาษาซีจะมคี ำส่งั ท่ใี ชส้ ำหรับระบคุ ุณสมบตั ิเฉพาะของตวั แปรทีใ่ ชเ้ ก็บคา่ เลขจำนวนเตม็ 4 คำสง่ั คอื
o unsigned ใชร้ ะบุให้เกบ็ คา่ เลขจำนวนเต็มในตวั แปรเฉพาะค่าท่เี ปน็ บวกเทา่ นั้น
o signed ใช้ระบใุ หเ้ ก็บค่าเลขจำนวนเต็มในตัวแปรทง้ั คา่ บวก และลบ
o short ใชร้ ะบุใหเ้ ก็บค่าเลขจำนวนเตม็ ในตัวแปรทม่ี ีคา่ น้อยกว่า int
o long ใชร้ ะบใุ ห้เกบ็ คา่ เลขจำนวนเต็มในตวั แปรที่มคี า่ มากกวา่ int เปน็ 2 เท่า
ชนดิ ตัวแปร จำนวนบิต คา่ ข้อมลู ทเี่ กบ็ ได้
char 8 -128 ถึง +127
signed char 8 -128 ถงึ +127
unsigned char 8 0 ถึง +255
int 16 -32768 ถึง +32767
signed int 16 -32768 ถึง +32767
unsigned int 16 0 ถึง 65535
short 16 -32768 ถึง +32767
signed short int 16 -32768 ถึง +32767
unsigned short int 16 0 ถงึ 65535
long int 32 -2147483648 ถงึ +2147483647
signed long int 32 -2147483648 ถึง +2147483647
unsigned long int 32 0 ถงึ +4294967295
float 32 3.4E-38 ถึง 3.4E+38
double 64 1.7E-308 ถึง 1.7E+308
long double 80 3.4E-4932 ถึง 3.4E+4932
ตารางท่ี 5.1 คณุ สมบัติของตัวแปรแบบตา่ ง ๆ
39
5.5 ชนดิ ของตัวแปรในอาร์ดุยโนท่ ใี่ ชบ้ ่อย
boolean ใชเ้ ก็บคา่ ข้อมูลเพยี ง 2 จำนวน คือ TRUE (จริง) FALSE (เท็จ)
char ใช้เกบ็ ค่าข้อมูลขนาด 8 บติ ใชส้ ำหรับเก็บค่ารหัสของตวั อักษร ซึง่ สามารถกำหนด
เปน็ คา่ หรอื เขียนตวั อักษรไว้ภายใต้เคร่อื งหมายอัญประกาศเดย่ี ว เชน่ ‘A’ หรอื
0x41 หรือ 65
byte ใช้เก็บขอ้ มลู ท่ีมขี นาด 8 บติ เกบ็ ค่าจำนวนเตม็ แบบไม่คดิ เครื่องหมาย
int ใชเ้ ก็บข้อมูลขนาด 16 บิต ทเ่ี ปน็ คา่ จำนวนเตม็ แบบคดิ เครื่องหมาย
unsigned int ใชเ้ ก็บขอ้ มูลขนาด 16 บิต ทีเ่ ป็นค่าจำนวนเต็ม แบบไมค่ ดิ เครือ่ งหมาย
long ใชเ้ ก็บข้อมูลขนาด 32 บติ ท่ีเป็นค่าเลขจำนวนเต็มแบบคิดเคร่อื งหมาย
unsigned long ใช้เกบ็ ข้อมลู ขนาด 32 บติ ทเ่ี ปน็ คา่ เลขจำนวนเต็มแบบไม่คิดเครื่องหมาย
float ใช้เกบ็ ค่าข้อมูลทเ่ี ปน็ เลขทศนิยมแบบคิดเครื่องหมายขนาด 32 บติ
double ใชเ้ ก็บคา่ ข้อมลู ที่เป็นเลขทศนิยม แตม่ คี วามละเอยี ดขนาด 64 บิต
void เป็นตวั แปรทไ่ี ม่มกี ารเก็บค่าใด ๆ หรือไมม่ คี ่า
arrays เปน็ ตัวแปรที่ใชเ้ กบ็ ข้อมูลหลาย ๆ คา่ ไว้ในตวั แปรเพียงชื่อเดยี ว แต่มตี ัวเลขสำหรับชี้
ตำแหนง่ การเก็บข้อมูล
string เป็นตวั แปรทใี่ ชเ้ กบ็ ขอ้ ความ ตวั อักษรหลาย ๆ ตวั
pointer เป็นตัวแปรทไี่ ม่ไดใ้ ชเ่ กบ็ ข้อมูล แตใ่ ชเ้ ก็บแอดเดรสของหน่วยความจำท่ใี ช้สร้างเปน็ ตัว
แปรสำหรับการเกบ็ ข้อมูล
40
5.6 ขอบเขตของตัวแปร
ขอบเขตของตวั แปร คือ เมอ่ื มีการประกาศใชง้ านตวั แปร กจ็ ะมีคุณสมบัติเร่ืองของขอบเขตการใช้งาน
ทีแ่ ตกต่างกันไปดว้ ย โดยภาษาซีไดม้ กี ารจำแนก ชนิดของตัวแปรตามขอบเขตการเรยี กใชง้ านออกเปน็ ดังน้ี
Local หรือ automatic คือ ตัวแปรที่ประกาศขึ้นในส่วนเริ่มต้นของโปรแกรมใน Block { } โดย
ตัวแปรนี้จะเรียกใช้ได้ในเฉพาะ Block ที่ประกาศไว้เท่านั้น เมื่อจบการทำงานของโปรแกรม หน่วยความจำที่
ใชส้ ร้างตัวแปรนี้จะถูกยกเลกิ การประกาศตัวแปรแบบนี้ ควรกำหนดค่าเริม่ ตน้ ใหก้ บั ตัวแปรด้วย
global หรือ External คือ ตัวแปรที่สามารถใชง้ านได้ร่วมกันทกุ ฟังก์ชันในโปรแกรม โดยมีขอบเขต
การใชง้ านตงั้ แต่จดุ ทเ่ี ร่ิมตน้ ประกาศตัวแปร ไปจนส้ินสุดขอบเขตของโปรแกรม
static มีขอบเขตการใช้งานเฉพาะภายใน Block ที่กำหนดไว้เท่านั้น แต่มีความพิเศษตรงที่เมื่อ
โปรแกรมออกนอก Block แล้ว ค่าของตัวแปรจะยังไม่หมดไป โดยค่าต่าง ๆ ยังคงอยู่และสามารถเรยี กใช้งาน
ครงั้ ต่อไปได้
volatile เป็น Keyword เพื่อบอกให้คอมไพเลอร์รู้ว่าตัวแปรนี้มีการเปลี่ยนแปลงค่าอยู่ตลอดเวลา
และปอ้ งกนั ไมใ่ ห้คอมไพเลอรท์ ำการลดขนาดโค้ด (Code)
const ใชป้ ระกาศเพือ่ บอกใหค้ อมไพเลอรร์ วู้ ่าตัวแปรทปี่ ระกาศไว้ เปน็ คา่ คงท่ี
PROGMEM เป็น Keyword เพื่อบอกให้คอมไพเลอร์รู้ว่าตัวแปรที่ประกาศไว้ ต้องการสร้างและเก็บ
ไว้ในหน่วยความจำที่ใช้เก็บโปรแกรมของไมโครคอนโทรลเลอร์ตระกูล AVR ซึ่งใช้กับตัวแปรทีต่ ้องการสร้างไว้
เพ่ืออ่านออกมาใชง้ านเพยี งอยา่ งเดยี ว
5.7 นพิ จน์และตัวดำเนนิ การของอาร์ดยุ โน่
นิพจน์ คือประโยคคำสั่ง เป็นองค์ประกอบพื้นฐานที่ใช้สำหรับสร้างประโยค ซึ่งนิพจน์ใช้สั่งให้นำเอา
จำนวน 2 จำนวน มากระทำกัน โดยมีเครื่องหมายเป็นตัวแสดงการกระทำกันของทั้ง 2 จำนวน และทั้ง 2
จำนวนอาจเปน็ คา่ คงท่ี ค่าตัวแปร หรือค่าขอ้ มลู ใด ๆ
เครอื่ งหมายทางคณิตศาสตร์ (Arithmetic operator)
+ ใช้แทนการบวก
- ใช้แทนการลบ
* ใช้แทนการคูณ
/ ใชแ้ ทนการหาร
% ใช้แทนการ mod หรือการหารแบบเอาเศษที่ไดจ้ ากการหาร
มาใช้
41
เครื่องหมายการกำหนดคา่ (Assign operator)
= การกำหนดค่าให้ตวั แปร
++ การเพิ่มค่า
-- การลดคา่
+= การเพิ่มคา่ เท่ากบั คา่ ทางขวา
-= การลดค่าเท่ากับค่าทางขวา
*= นำคณู กบั คา่ ทางขวา
/= นำหารกบั คา่ ทางขวา
%= นำ mod กบั คา่ ทางขวา
เครอ่ื งหมายแบบยูนารี (Unary operator)
x++ มคี วามหมายเหมอื นกบั x = x+1
x-- มีความหมายเหมอื นกับ x = x-1
เครอ่ื งหมายเปรยี บเทยี บ (Comparative operator)
== หมายถงึ เท่ากบั
!= หมายถึง ไมเ่ ท่ากับ
< หมายถงึ นอ้ ยกว่า
> หมายถึง มากกวา่
<= น้อยกวา่ หรือเทา่ กับ
>= มากกว่าหรือเทา่ กบั
เคร่ืองหมายเชิงตรรก หรอื การกระทำทางโลจกิ (Logical operator)
&& หมายถงึ Logical AND ซึง่ เปรยี บไดก้ ับ และ
| | หมายถึง Logical OR ซึ่งเปรียบได้กบั หรือ
! หมายถึง Logic NOT ซึ่งเปรียบไดก้ ับ ไม่
เครอ่ื งหมายการกระทำแบบบิต หมายถงึ Bitwise AND เปน็ การ AND ของบติ
& หมายถงึ Bitwise OR เป็นการ OR ของบติ
| หมายถึง Bitwise XOR เปน็ การ XOR ของบิต
^ หมายถงึ Bitwise NOT เป็นการ NOT ของบิต
~
42
>> หมายถึง Bitwise Shift Right เปน็ การเล่อื นบติ ไปทางขวา
<< หมายถึง Bitwise Shift Left เป็นการเล่ือนบติ ไปทางซา้ ย
AND Gate OR Gate
input output input output
A BQ A BQ
0 00 0 00
0 10 0 11
1 00 1 01
1 11 1 11
XOR Gate NOT Gate
input output input output
A BQ
0 00 AQ
0 11 01
1 01 10
1 10
Shift Right คือ จะทำให้ลำดบั บิตเลอื่ นไปทางขวา แล้วนำศนู ยม์ าต่อบติ ทางซ้ายมอื
Shift Left คอื คอื การทำใหล้ ำดบั บิตเลือ่ นไปทางซา้ ย แลว้ นำศนู ย์มาต่อบิตทางขวามือ
เครือ่ งหมายสัญลกั ษณ์อ่นื ๆ บอกการสนิ้ สดุ ประโยคคำสง่ั
; กำหนดขอบเขตของประโยคคำส่ัง
{} แสดงจุดเร่ิมต้นของคำอธิบายในบรรทัดคำสั่ง
// แสดงขอบเขตของการเขียนคำอธิบาย
/* */
43
5.8 การตรวจสอบเง่อื นไขในภาษาซีของอารด์ ุยโน่
การเขียนโปรแกรมภาษาซีของอาร์ดุยโน่ จะต้องมีการสร้างเงื่อนไขให้กับโปรแกรม เพื่อให้ได้ผลลัพธ์
การทำงานตามที่เราต้องการ โดยการสร้างคำสั่งสำหรับการตรวจสอบเงื่อนไขต่าง ๆ ไว้รองรับการเขียน
โปรแกรม มดี งั นี้
if If…else for switch case while
do…while break continue goto return
คำสั่งสำหรับตรวจสอบเงื่อนไขจะใช้ควบคู่กับ เครื่องหมาย เปรียบเทียบ และเครื่องหมายทางโลจิก
สำหรบั ใช้กำหนดเงือ่ นไขการทำงานใหก้ บั คำสง่ั ไดแ้ ก่
== มคี วามหมายวา่ เทา่ กับ
!= มีความหมายว่า ไม่เทา่ กับ
< มีความหมายวา่ น้อยกว่า
> มีความหมายว่า มากกว่า
<= มีความหมายวา่ นอ้ ยกว่าหรอื เท่ากับ
>= มคี วามหมายว่า มากกว่าหรือเท่ากับ
&& มคี วามหมายว่า Logical AND (และ)
| | มีความหมายว่า Logical OR (หรือ)
! มคี วามหมายว่า Logical NOT (ไม)่
44
หน่วยการเรยี นรู้ท่ี 6 การควบคุมการทำงานของอินพตุ และเอาตพ์ ตุ
อินพุตและเอาต์พุต คือ การสื่อสารระหว่างระบบการประมวลผล อินพุตหรือการรับเข้าคือสัญญาณ
ข้อมูล ท่ีมีการรับเขา้ มา เอาต์พุตหรอื การส่งออกคือสัญญาณ ข้อมูล ที่มีการสง่ ออกไป โดยอินพุตและเอาต์พุต
จะมสี ัญญาณดิจิตอลและสญั ญาณอนาลอ็ ก
การนำไปใชป้ ระโยชน์
อินพุตและเอาต์พุตสามารถนำไปใช้งานกับอาร์ดุยโน่ การควบคุมหลอดไฟแอลอีดี
แสดงการทำงานอนิ พตุ และเอาตพ์ ุต
6.1 อารด์ ุยโนก่ บั ดิจติ อลอินพุต/เอาต์พตุ
1. อปุ กรณ์
1.1 บอร์ด Arduino UNO R3
1.2 โมดูลสวิตซ์
1.3 สายจั๊มเปอร์
1.4 หลอดไฟ LED
1.5 ตัวตา้ นทาน 220 โอหม์
รูปท่ี 6.1 อารด์ ยุ โน่กบั ดจิ ิตอลอนิ พตุ /เอาต์พตุ
2. วิธีการต่อใชง้ าน
2.1 การตอ่ โมดูลสวิตซ์ เข้ากับบอร์ด Arduino UNO R3
• ขาขวา (ลา่ ง) - GND
• ขาซา้ ย (ล่าง) - Digital pin 2
45
รูปท่ี 6.2 การต่อโมดลู สวิตซ์ เขา้ กับบอรด์ อารด์ ุยโน่
2.2 การต่อหลอดไฟ LED เข้ากับบอรด์ Arduino UNO R3
• ขาบวก - Digital pin 13
• ขาลบ – GND
รูปท่ี 6.3 การตอ่ หลอดไฟ LED เข้ากับบอรด์ อาร์ดุยโน่
*หลอดไฟแอลอีดี มี 2 ข้วั คือ 1. ขวั้ แคโทด (ขัว้ บวก) จะมีขายาว 2. ขั้วแอโนด (ข้ัวลบ) จะมขี าส้นั
46
3. ตวั อยา่ งโคด้
รปู ที่ 6.4 ตวั อยา่ งโค้ด ดิจิตอลอินพตุ และเอาต์พุต
6.2 อารด์ ุยโนก่ บั แอนาลอกอนิ พุต/เอาต์พตุ
1. อปุ กรณ์
1.1 บอรด์ Arduino UNO R3
1.2 หลอดไฟ LED
1.3 สายจัม๊ เปอร์
1.4 ตัวต้านทานปรบั คา่ ได้
2. วธิ ีการตอ่ ใช้งาน
2.1 การตอ่ หลอด LED เข้ากบั บอร์ด Arduino UNO R3
1. ขว้ั ลบ - GND
2. ขัว้ บวก - Digital 3