The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

หน่วยที่ 3 ชุดคำสั่งไมโครคอนโทรเลอร์ Arduino

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Iamfile.31, 2022-12-05 21:11:58

หน่วยที่ 3 ชุดคำสั่งไมโครคอนโทรเลอร์ Arduino

หน่วยที่ 3 ชุดคำสั่งไมโครคอนโทรเลอร์ Arduino

หนว่ ยที่ 3

ชดุ คำสั่งไมโครคอนโทรเลอร์ Arduino

20128 – 2109 รำยวิชำกำรประยุกตใ์ ชง้ ำนไมโครคอนโทรลเลอร์
ผู้สอน นำงสำวรชั ฎำเนตร สรุ ำไพ
แผนกวิชำเทคโนโลยคี อมพิวเตอร์ วิทยำลยั เทคนิคสงิ ห์บุรี

Ratchadanate Surumpai

1. ชุดคำสง่ั ทใี่ ชใ้ นกำรเขียนโปรแกรมไมโครคอนโทรลเลอร์ Arduino

การเขยี นโปรแกรมไมโครคอนโทรลเลอร์ Arduino สามารถเขยี นไดท้ ง้ั
ภาษาแอสเซมบลี และภาษาระดบั สงู ไดแ้ ก่ ภาษาซี ขน้ึ อยกู่ บั วา่ ผูพ้ ฒั นาโปรแกรม
เลือกใช้ภาษาใดมาใชส้ าหรบั เขียนโปรแกรมเพือ่ ควบคมุ การทางานของ
ไมโครคอนโทรลเลอร์ Arduino

Ratchadanate Surumpai

2. ภำษำแอสเซมบลีสำหรับไมโครคอนโทรลเลอร์ Arduino

ภาษาแอสเซมบลีจัดจัดเป็นภาษาในระดับล่าง เป็นภาษาท่ีมีความใกล้เคียงกับ
ภาษาเครื่องและฮาร์ดแวร์ของซีพียู โครงสร้างของภาษา แอ สเซมบลีสาหรับ
ไมโครคอนโทรลเลอร์ Arduino ไม่แตกต่างจากภาษา แอสเซมบลีของสถาปัตยกรรม
ไมโครคอนโทรลเลอร์อื่นๆ ส่วนการเขียนโปรแกรมภาษาแอสเซมบลีต้องทาการใช้
ชุดคาส่ังของซีพียูเพื่อเข้าถึงหน่วยความจาและข้อมูลในรีจิสเตอร์ซ่ึงมีโดยตรง ส่งผลให้
ภาษาแอสเซมบลีมีความย่งุ ยากในการใช้งานมากกว่าภาษาระดับสูง

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

โครงสรา้ งภาษาซีของไมโครคอนโทรลเลอร์ Arduino
โครงสรา้ งภาษาซีของไมโครคอนโทรลเลอร์ Arduino ใช้รูปแบบการเขยี น

โปรแกรมของภาษา C++ แตล่ ะโปรแกรมตอ้ งมีฟงั ก์ชั่นหลกั อยา่ งนอ้ ย 2 ฟังกช์ น่ั
ได้แก่

1. ฟังกช์ นั่ setup() เป็นฟังกช์ นั่ การกาหนดค่าต่างๆ ในสว่ นน้มี กี ารกาหนดคา่
เพยี งครง้ั เดียวเทา่ น้ัน

2. ฟังก์ชั่น loop () เป็นส่วนในการเขยี นโปรแกรมและสง่ั ให้โปรแกรมทางาน
ซงึ่ มกี ารทางานเปน็ แบบวนลปู ไปเรอื่ ยๆ

Ratchadanate Surumpai

3. ภำษำซีสำหรับไมโครคอนโทรลเลอร์ Arduino

3.1 คาส่ังการควบคมุ เป็นคาสัง่ ให้ไมโครคอนโทรลเลอร์ทางานตามเงือ่ นไข
- คาส่ัง if เป็นคาสั่งในการตรวจสอบเง่อื นไขการทางานของโปรแกรม ถ้าเงื่อนไขเป็น

จริงให้ทางานตามคาส่งั ทกี่ าหนดน้นั
- คาสั่ง if...else เป็นคาส่งั กาหนดเงือ่ นไขการทางานของโปรแกรม โดยมี 2 เงอ่ื นไข

ถา้ เง่ือนไขเปน็ จรงิ ทางานตามคาสงั่ ที่กาหนดแบบหน่งึ ถ้าเง่อื นไขเป็นเท็จทางานตามคาสง่ั
ท่กี าหนด อกี แบบหนึ่ง

- คาส่ัง for เปน็ คาสัง่ ใหโ้ ปรแกรมทางานซา้ ตามจานวนรอบท่ตี อ้ งการ

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

- คาส่ัง switch case เป็นคาสัง่ เพ่อื กาหนดการทางานของโปรแกรมหลายๆ
เงือ่ นไข ถ้าตัวแปรทก่ี าหนดตรงกับเงือ่ นไขนั้นๆ ทาให้โปรแกรมทางานตามท่ีกาหนดไว้
แต่และเง่ือนไข

- คาส่งั while เปน็ คาสั่งทาซ้าแบบวนรอบ ถา้ เงือ่ นไขเปน็ จริงโปรแกรมทางาน
ตามคาส่งั ทเี่ ขยี นไว้ในวงเล็บปีกกา แตถ่ า้ เง่อื นไขเป็นเทจ็ โปรแกรมจบการทางาน

- คาสง่ั do...while เปน็ คาสง่ั ทาซ้าแบบวนรอบ โดยมีการทางานตรงกนั ข้ามกับ
คาสั่ง while คอื ทางานตามคาสง่ั ที่เขียนไว้ในวงเล็บปกี กา แล้วจงึ มาตรวจสอบเงื่อนไข
แต่ถ้าเง่อื นไขเป็นเทจ็ โปรแกรมจบการทางาน

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

- คาสงั่ break เปน็ คาสง่ั ใชร้ ว่ มกบั คาส่งั การทางานแบบวนรอบ
- คาสั่ง continue เปน็ คาส่งั ใชส้ าหรบั ขา้ มการทางานของคาสง่ั ถดั ไป
- คาสัง่ return เปน็ คาสั่งจบการทางานในโปรแกรมย่อย
- คาสั่ง goto เปน็ คาสง่ั กระโดดโดยไมม่ เี งื่อนไขไปยังตาแหนง่ ทีก่ าหนด โดยอา้ งถงึ
ตาแหนง่ Label ท่ีกระโดดไป

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

3.2 ข้อกาหนดของไวยากรณ์ เปน็ กฎเกณฑ์ ในการสรา้ งประโยคขึ้นมาอธิบายความหมาย
ของโปรแกรม

- เคร่อื งหมาย ; (เซมโิ คล่อน) เปน็ การจบคาสง่ั ในบรรทดั นน้ั ๆ
- เครือ่ งหมาย { } (วงเล็บปกี กา) เปน็ การกาหนดบล็อกของคาสงั่ ใช้กับคาส่ัง if, else,
while หรอื for
- เคร่อื งหมาย // (หมายเหตบุ รรทดั เดยี ว) เป็นส่วนของผ้เู ขยี นโปรแกรมอธิบาย
เพ่ิมเติม ในคาส่งั ตา่ งๆ วา่ โปรแกรมทางานอยา่ งไรในแตล่ ะบรรทดั

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

- เครอื่ งหมาย /* */ (หมายเหตหุ ลายบรรทดั ) เป็นสว่ นของผเู้ ขยี นโปรแกรมอธิบาย
เพม่ิ เตมิ ในคาสงั่ ต่างๆ วา่ โปรแกรมทางานอย่างไรสามารถอธิบายไดห้ ลายบรรทัด

- เครื่องหมาย #define เปน็ คาสง่ั ในการกาหนดค่าคงที่ ให้กบั โปรแกรม
- เครอื่ งหมาย #include เป็นคาสง่ั ให้นาไฟล์อ่นื เขา้ มารว่ มกับไฟลโ์ ปรแกรมหลัก

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

3.3 การดาเนินการทางคณิตศาสตร์ เป็นเครอื่ งหมายทางคณติ ศาสตร์ ในการเขียน
โปรแกรม เพอ่ื หาผลลัพธจ์ ากการคานวณซงึ่ สามารถกระทากบั ข้อมูลไดห้ ลายรปู แบบ

- เครือ่ งหมาย + เป็นการบวกของตวั ถูกกระทาสองตัว
- เครื่องหมาย – เปน็ การลบของตัวถกู กระทาสองตวั
- เคร่อื งหมาย * เปน็ การคูณของตัวถกู กระทาสองตัว
- เครอ่ื งหมาย / เปน็ การหารของตัวถกู กระทาสองตวั
- เครอ่ื งหมาย % เปน็ การหารเอาเศษ ใชห้ าคา่ เศษท่ไี ด้จากการหาร

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

3.4 การดาเนินการเปรียบเทียบ เป็นเครื่องหมายท่ีใชใ้ นการเปรยี บเทยี บทางคณติ ศาสตร์
มเี คร่ืองหมายดงั ต่อไปน้ี

- เครื่องหมาย == เป็นการเปรยี บเทยี บเทา่ กับ
- เครื่องหมาย != เป็นการเปรยี บเทยี บไม่เทา่ กบั
- เคร่อื งหมาย < เปน็ การเปรยี บเทียบนอ้ ยกว่า
- เครือ่ งหมาย > เป็นการเปรยี บเทยี บมากกว่า
- เครื่องหมาย <= เป็นการเปรียบเทยี บนอ้ ยกวา่ หรอื เทา่ กบั
- เคร่ืองหมาย >= เป็นการเปรยี บเทยี บมากกวา่ หรอื เท่ากับ

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

3.5 การดาเนนิ การทางตรรกะ เปน็ เคร่อื งหมายท่ีใชเ้ ชือ่ มเงื่อนไข 2 เงื่อนไข หรอื
มากกว่า เพื่อให้การเปรียบเทียบมคี วามละเอยี ดมากขนึ้ โดยใช้สัญลักษณ์แทนในแต่ละ
เคร่อื งหมาย มีเครอ่ื งหมายดงั ต่อไปน้ี

- เครอ่ื งหมาย && ให้ค่าเป็นจรงิ เมื่อผลการเปรียบเทยี บคา่ ทัง้ สองเป็นจรงิ ทั้งคู่
- เครอื่ งหมาย || ใหค้ ่าเปน็ จรงิ เมอ่ื ผลการเปรยี บเทียบค่าทงั้ สองเป็นจรงิ ทั้งคู่ หรอื
ตวั แปรใดตวั หนง่ึ เปน็ จริง
- เครอื่ งหมาย ! ใหค้ า่ เปน็ จริง เม่อื ผลการเปรียบเทยี บเปน็ เทจ็

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

3.6 การดาเนินการระดับบิต เปน็ นาคา่ แต่ละบติ ของตัวแปรเดียวหรอื 2 ตัวมากระทากัน
ในระดบั บติ

- เครอื่ งหมาย & เป็นการแอนดร์ ะดบั บิต
- เคร่ืองหมาย | เปน็ การออร์ระดับบิต
- เครื่องหมาย ^ เป็นการเอ็กคลซู ฟี ออรร์ ะดับบติ
- เคร่อื งหมาย ~ เป็นการน็อตระดบั บติ
- เคร่อื งหมาย << เป็นการเลือ่ นบิตไปทางซ้าย
- เคร่ืองหมาย >> เป็นการเลอื่ นบติ ไปทางขวา

Ratchadanate Surumpai

3. ภำษำซีสำหรบั ไมโครคอนโทรลเลอร์ Arduino

3.7 ตวั ดาเนนิ การ เปน็ เครอ่ื งหมายทางคณติ ศาสตรข์ องตัวแปรเดียว เพื่อหาผลลัพธจ์ าก
การคานวณนัน้

เครื่องหมาย ++, เครอ่ื งหมาย -- , เครื่องหมาย +=, เครอื่ งหมาย -=
เครอื่ งหมาย *=, เครือ่ งหมาย /= , เครื่องหมาย %=, เครื่องหมาย &=
เครื่องหมาย |=, เครื่องหมาย ^=, เครือ่ งหมาย <<=, เคร่ืองหมาย >>=

Ratchadanate Surumpai

3. ภำษำซีสำหรับไมโครคอนโทรลเลอร์ Arduino

4. ตวั แปร เปน็ ชอ่ื เรยี กแทนพ้นื ท่ีเก็บข้อมลู ในหนว่ ยความจาของไมโครคอนโทรลเลอร์
4.1 ค่าคงที่ เป็นคาสั่งขอ้ ความที่กาหนดไว้ในโปรแกรม Arduino

- คาส่งั HIGH/LOW แทนสานะลอจกิ “1” กับลอจิก “0”
- คาส่ัง INPUT/OUTPUT ใช้สาหรบั กาหนดค่าอินพุตกบั เอาต์พตุ
- คาสง่ั true/false เปน็ คา่ คงทีแ่ บบบลู นี โดย true แทนสภาวะค่าใดๆท่ไี ม่ใช่ 0 ถอื
วา่ เปน็ จรงิ ส่วน false มคี า่ เป็น 0 หรือเป็นเท็จ
- คาสง่ั integer constants เป็นค่าคงทข่ี องเลขจานวนเตม็
- คาสัง่ floating point constants เป็นคา่ คงที่ของเลขทศนยิ ม

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

4.2 ชนิดของขอ้ มูล สามารถแบง่ ชนิดของข้อมลู ได้ดงั น้ี
- void ใช้เฉพาะในการประกาศฟงั กช์ นั่
- boolean มีค่าจริงหรอื เท็จ
- char มีคา่ ตั้งแต่ -127 ถงึ 127
- unsigned char มคี ่าตง้ั แต่ 0 ถึง 255
- byte มีค่าตัง้ แต่ 0 ถึง 255
- int มคี ่าตง้ั แต่ -32,7678 ถึง 32,767
- unsigned int มีคา่ ตั้งแต่ 0 ถึง 65,555

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

4.2 ชนดิ ของขอ้ มลู สามารถแบ่งชนิดของข้อมลู ได้ดังนี้
- word มคี ่าตง้ั แต่ 0 ถึง 65,555
- long มคี ่าต้ังแต่ -2,147,483,648 ถึง 2,147,483,647
- unsigned long มีคา่ ตง้ั แต่ 0 ถงึ 4,294,967,295
- float มคี า่ ตง้ั แต่ -3.4028235E+38 ถงึ 3.4028235E+38
- double มีค่าต้ังแต่ -3.4028235E+38 ถึง 3.4028235E+38
- string ตวั แปรสาหรบั เกบ็ ขอ้ ความ
- array ตัวแปรหลายตวั ท่ีถกู เก็บรวมไว้ในตัวแปรชือ่ เดยี วกนั

Ratchadanate Surumpai

3. ภำษำซีสำหรบั ไมโครคอนโทรลเลอร์ Arduino

5. ชดุ คาสงั่ เปน็ ชุดคาสง่ั ในการเขยี นโปรแกรมโดยมคี าสงั่ ต่างๆ ดงั น้ี
5.1 คาส่ังดจิ ติ อล อินพุต/เอาต์พุต

- คาสง่ั pinMode() เป็นการกาหนดพอรต์ เป็นอินพตุ หรอื เอาต์พุต
- คาส่ัง digitalWrite() เปน็ การเขียนขอ้ มลู ออกพอร์ตท่ีกาหนด
- คาสั่ง digitalRead() เปน็ การอ่านขอ้ มลู เขา้ พอร์ตที่กาหนด

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

5.2 คาสงั่ อนาลอ็ ก อนิ พตุ /เอาต์พุต
- คาส่งั analogReference() เป็นการกาหนดค่าแรงดันอา้ งอิงทใี่ ช้สาหรบั อนาลอ็ ก

อนิ พตุ
- คาสั่ง analogRead() เปน็ การอ่านแรงดนั ไฟฟ้าแบบอนาลอ็ กและแปลงเปน็

จานวนเตม็ มีค่าระหวา่ ง 0 ถงึ 1023
- คาสง่ั analogWrite() เป็นการใช้ PWM เขียนค่าออกทางพอร์ตท่กี าหนด

Ratchadanate Surumpai

3. ภำษำซีสำหรบั ไมโครคอนโทรลเลอร์ Arduino

5.3 คาส่ังเวลา
- คาสง่ั millis() เป็นการหนว่ งเวลามีหน่วยเป็นมลิ ลิวนิ าทขี อง Arduino ทันทีที่มี

ไฟเลย้ี งเขา้ Arduino
- คาสัง่ micros() เปน็ การหนว่ งเวลามีหน่วยเป็นไมโครวินาทีของ Arduino ทันทีที่มี

ไฟเลย้ี งเขา้ Arduino
- คาสง่ั delay() เป็นการหนว่ งเวลาตามคา่ ท่กี าหนด มหี น่วยเปน็ มลิ ลวิ ินาที
- คาสงั่ delayMicroseconds() เปน็ การหน่วงเวลาตามคา่ ที่กาหนด มีหน่วยเป็น

ไมโครวนิ าที

Ratchadanate Surumpai

3. ภำษำซสี ำหรับไมโครคอนโทรลเลอร์ Arduino

5.4 คาส่ังคณติ ศาสตร์
- คาสง่ั min() เปน็ การหาค่าต่าสดุ
- คาสั่ง max() เป็นการหาค่ามากสดุ
- คาสั่ง abs() เปน็ การหาคา่ สมบูรณ์ของตัวแปร
- คาสัง่ constrain() เป็นการตรวจสอบและการปรบั ค่าตัวแปรทกี่ าหนด
- คาส่งั map() เปน็ การปรบั ค่าตัวแปรจากเดิมให้อยรู่ ะหวา่ งคา่ ที่กาหนด
- คาสง่ั pow() เปน็ การหาค่าของตัวเลขยกกาลงั
- คาสง่ั sqrt() เป็นการหาค่าของรากท่สี องของตวั เลข

Ratchadanate Surumpai

3. ภำษำซีสำหรบั ไมโครคอนโทรลเลอร์ Arduino

5.5 คาสง่ั ตรีโกณมิติ
- คาสง่ั sin() เป็นการคานวณหาค่า sin
- คาสัง่ cos() เป็นการคานวณหาค่า cos
- คาสัง่ tan() เปน็ การคานวณหาค่า tan

5.6 คาสั่งสุม่ ตัวเลข
- คาส่ัง randomSeed() เปน็ การกาหนดค่าเริ่มตน้ ของฟังช่นั random
- คาสั่ง random() เป็นการสุม่ คา่ ตวั เลขระหวา่ งตัวเลขที่กาหนด

Ratchadanate Surumpai

3. ภำษำซีสำหรับไมโครคอนโทรลเลอร์ Arduino

5.7 คาสั่งบติ และไบต์
- คาสงั่ lowByte() เป็นตัวแปรของไบต์ตา่ สดุ
- คาสง่ั highByte() เป็นตัวแปรของไบตส์ งู สุด
- คาส่งั bitRead() เป็นการอา่ นบติ ของตวั แปร
- คาส่ัง bitWrite() เป็นการเขียนบิตของตัวแปร
- คาสัง่ bitSet() เป็นการต้งั บิตของตัวแปรเท่ากบั 1
- คาสง่ั bitClear() เปน็ การตงั้ บติ ของตวั แปรเทา่ กับ 0
- คาสง่ั bit() เป็นการตงั้ ค่าบติ ตามคา่ ทก่ี าหนด

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

5.8 คาส่งั อินเตอร์รัพทภ์ ายนอก
- คาส่งั attachInterrupt() เปน็ คาส่ังกาหนด และสร้างอินเตอรร์ พั ท์
- คาสัง่ detachInterrupt() เป็นคาสัง่ ปิดการรบั อินเตอรร์ พั ท์

5.9 คาสง่ั การอนิ เตอร์รพั ท์
- คาสงั่ interrupts() เป็นการเปดิ การใช้งานอนิ เตอรร์ ัพท์
- คาส่งั noInterrupts() เปน็ การปิดการใช้งานอนิ เตอรร์ ัพท์

Ratchadanate Surumpai

3. ภำษำซีสำหรบั ไมโครคอนโทรลเลอร์ Arduino

5.10 คาสัง่ การตดิ ต่อสอ่ื สาร
- คาส่ัง Serial.begin() เป็นการกาหนดอัตราการสง่ ขอ้ มูล
- คาสั่ง Serial.end() เป็นการปดิ ใช้งานการส่อื สารแบบอนกุ รม
- คาสง่ั Serial.available() เป็นการตรวจสอบการรบั ข้อมูลจากการสื่อสารแบบ

อนุกรม
- คาสงั่ Serial.read() เปน็ การอา่ นขอ้ มูลจากการสอื่ สารแบบอนุกรมที่ เข้ามา
- คาสั่ง Serial.peek() เป็นการส่งกลบั ไบต์ต่อไปของขอ้ มลู การสือ่ สารแบบอนกุ รม

Ratchadanate Surumpai

3. ภำษำซสี ำหรบั ไมโครคอนโทรลเลอร์ Arduino

5.10 คาสง่ั การตดิ ต่อสอื่ สาร
- คาสง่ั Serial.flush() เป็นการลบขอ้ มูลท้งั หมดในบัฟเฟอร์
- คาสัง่ Serial.print() เป็นการพมิ พ์ข้อมูลไปยงั พอร์ตอนกุ รม
- คาส่งั Serial.println() เปน็ การพิมพ์ข้อมลู ไปยังพอรต์ อนุกรม และขึ้นบรรทัดใหม่
- คาสง่ั Serial.write() เป็นการส่งขอ้ มูลไบต์ไปยังพอรต์ อนุกรม

Ratchadanate Surumpai


Click to View FlipBook Version