32
หน่วยที่ 5 ไลบรารี่โปรแกรมสาหรับ Arduino และการอ่านค่าแอนะล็อก เรียบเรียงโดยครูทันพงษ์ ภู่รักษ์ 1 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น หน่วยที5 ไลบรารี่โปรแกรมสาหรับ ARDUINO และการอ่านค่าแอนะล็อก สาระสาคัญ การพัฒนาโปรแกรมภาษา C/C++ ด้วย Arduino สาหรับบอร์ด Arduino ดาเนินการภายใต้การสนับสนุนของ ไฟล์ไลบรารีหลักที่ทาง Arduino จัดเตรียมให้ผนวกเข้ากับไฟล์ไลบรารีที่พัฒนาขึ้นมาเป็นเฉพาะสาหรับบอร์ด Arduino ทั้งนี้เพื่อช่วยลดความซับซ้อนในการเขียนโปรแกรมควบคุมลง Arduino IDE ได้บรรจุไฟล์ไลบรารีที่ช่วยให้การเขียน โปรแกรมภาษา C/C++ เพื่อให้ใช้งานไมโครคอนโทรลเลอร์ทาได้ง่ายขึ้น รวมถึงผู้เริ่มต้นใหม่ก็สามารถเรียนรู้เพื่อใช้ งานไมโครคอนโทรลเลอร์ได้ โดยไม่จาเป็นต้องศึกษาเพื่อลงลึกในรายละเอียดของสถาปัตยกรรม เนื้อหาสาระการเรียนรู5.1 ไลบรารี่โปรแกรมสาหรับ Arduino 5.2 ไลบรารี่เกี่ยวกับเวลา 5.3 ไลบรารี่เกี่ยวกับการอ่านค่าดิจิตอล 5.4 ไลบรารี่เกี่ยวกับการอ่านค่าแอนะล็อก 5.5 ไลบรารี่เกี่ยวกับการสื่อสารข้อมูลอนุกรม จุดประสงค์การเรียนรูจุดประสงค์ทั่วไป 1. เพื่อให้มีความรู้ความเข้าใจเกี่ยวกับไลบรารี่โปรแกรมสาหรับ Arduino และการอ่านค่าแอนะล็อก 2. เพื่อให้สามารถนาความรู้ไปประยุกต์ใช้ในการเขียนโปรแกรมกาหนดการทางานพื้นฐานของ Arduino 3. เพื่อให้ตระหนักถึงความสาคัญเกี่ยวกับไลบรารี่โปรแกรมสาหรับ Arduino และการอ่านค่าแอนะล็อก

หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

1 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

หนวยท 5 ไลบรารโปรแกรมส าหรบ ARDUINO และการอานคาแอนะลอก

สาระส าคญ

การพฒนาโปรแกรมภาษา C/C++ ดวย Arduino ส าหรบบอรด Arduino ด าเนนการภายใตการสนบสนนของไฟลไลบรารหลกททาง Arduino จดเตรยมใหผนวกเขากบไฟลไลบรารทพฒนาขนมาเปนเฉพาะส าหรบบอรด Arduino ทงนเพอชวยลดความซบซอนในการเขยนโปรแกรมควบคมลง Arduino IDE ไดบรรจไฟลไลบรารทชวยใหการเขยนโปรแกรมภาษา C/C++ เพอใหใชงานไมโครคอนโทรลเลอรท าไดงายขน รวมถงผเรมตนใหมกสามารถเรยนรเพอใชงานไมโครคอนโทรลเลอรได โดยไมจ าเปนตองศกษาเพอลงลกในรายละเอยดของสถาปตยกรรม

เนอหาสาระการเรยนร

5.1 ไลบรารโปรแกรมส าหรบ Arduino 5.2 ไลบรารเกยวกบเวลา 5.3 ไลบรารเกยวกบการอานคาดจตอล 5.4 ไลบรารเกยวกบการอานคาแอนะลอก 5.5 ไลบรารเกยวกบการสอสารขอมลอนกรม

จดประสงคการเรยนร

จดประสงคทวไป 1. เพอใหมความรความเขาใจเกยวกบไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก 2. เพอใหสามารถน าความรไปประยกตใชในการเขยนโปรแกรมก าหนดการท างานพนฐานของ Arduino 3. เพอใหตระหนกถงความส าคญเกยวกบไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก

Page 2: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

2 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

จดประสงคเชงพฤตกรรม

1. เลอกใชงานไลบรารโปรแกรมส าหรบ Arduino ได 2. เลอกใชงานไลบรารเกยวกบเวลาส าหรบ Arduino ได 3. เลอกใชงานไลบรารเกยวกบการอานคาดจตอลส าหรบ Arduino ได 4. เลอกใชงานไลบรารเกยวกบการอานคาแอนะลอกส าหรบ Arduino ได 5. เลอกใชงานไลบรารเกยวกบการสอสารขอมลอนกรมส าหรบ Arduino ได

Page 3: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

3 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

*************************************************************************************

เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก ใชเวลา 20 นาท วชา ไมโครคอนโทรลเลอรเบองตน รหสวชา (2127-2107) ระดบชน ประกาศนยบตรวชาชพ (ปวช.) สาขาวชา เมคคาทรอนกส ค าชแจง 1. แบบทดสอบมทงหมด 10 ขอ (10 คะแนน) 2. ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ลงในกระดาษค าตอบ

1. หนวยความจ าขอมลออพรอม ภายในตวไมโครฯเมอตองการใชงานตองผนวกไฟลไลบรารดวยค าสง ก. #include< EEPROM.d> ข. #include<EEPROM.o> ค. #include<EEPROM. b> ง. #include<EEPROM.h>

2. servo เมอตองการใชงานตองผนวกไฟลไลบรารดวยค าสง ก. #include<servo.d> ข. #include<servo.h> ค. #include<servo.o> ง. #include <servo.b> 3. Arduino UNO บรรจฟงกชน Wire ส าหรบตดตอกบอปกรณผานบส ก. SPI ข. GSM ค. UART ง. I2C 4. Arduino UNO บรรจฟงกชนและค าสงส าหรบตดตอกบ SPI โดยตองใชขาพอรต ก. 12 (MISO), 11 (MOSI) และ 10 (SS) ข. 10 (MISO), 11 (MOSI) และ 12 (SS) ค. 13 (MISO), 12 (MOSI) และ 11 (SS) ง. 11 (MISO), 12 (MOSI) และ 13 (SS)

แบบทดสอบกอนเรยน หนวยท 5 เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก

Page 4: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

4 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

5. บส I2C Arduino UNO ตองใชขาพอรต ก. A4 (SDA) และ A5 (SCL) ข. A3 (SDA) และ A4 (SCL) ค. A2 (SDA) และ A3 (SCL) ง. A1 (SDA) และ A2 (SCL)

6. ฟงกชนเกยวกบพอรตอนพตเอาตพต ฟงกชน in เปนฟงกชนอะไร ก. อานคาสถานะลอจกของพอรตทก าหนด ข. ก าหนดขาพอรตทตองการอานคา ค. อานคาดจตอลจากพอรตอนกรม ง. อานคาดจตอลจากพอรตดจตอล 7. ฟงกชน out เปนฟงกชนอะไร ก. ก าหนดขาพอรตทตองการอานคา ข. ก าหนดขอมลดจตอลไปยงพอรตทก าหนด ค. อานคาดจตอลจากพอรตดจตอล 2 ง. อานคาดจตอลจากพอรตดจตอล 1 8. ฟงกชนการอานคาแอนะลอกของ Arduino UNO ใชพอรตอยางไร ก. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A0 ถง A6 ข. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A1 ถง A6 ค. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A2 ถง A6 ง. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A3 ถง A6 9. ฟงกชนเกยวกบการสอสารขอมลอนกรม เมอตองการใชงานชอง UART ตอสายสญญาณอยางไร ก. RxD (ขาพอรต A1) และ TxD (ขาพอรต A0) ข. RxD (ขาพอรต A0) และ TxD (ขาพอรต A1) ค. RxD (ขาพอรต 1) และ TxD (ขาพอรต 0) ง. RxD (ขาพอรต 0) และ TxD (ขาพอรต 1) 10. uart_available คอฟงกชนอะไร ก. ตวแปรจ านวนเตม 64 บต แบบไมคดเครองหมายของโมดล UART ข. ปดคาตวเลขใหอยในชวงทก าหนดของโมดล UART ค. ตรวจสอบการรบขอมลเขามาของโมดล UART ง. คาต าสดของชวงทก าหนดของโมดล UART

Page 5: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

5 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

การพฒนาโปรแกรมภาษา C/C++ ดวย Arduino ส าหรบบอรด Arduino ด าเนนการภายใตการสนบสนน

ของไฟลไลบรารหลกททาง Arduino จดเตรยมให ผนวกเขากบไฟลไลบรารทพฒนาขนมาเปนเฉพาะส าหรบบอรด

Arduino ทงนเพอชวยลดความซบซอนในการเขยนโปรแกรมควบคมลง Arduino IDE ไดบรรจไฟลไลบรารทชวยให

การเขยนโปรแกรมภาษา C/C++ เพอใชงานไมโครคอนโทรลเลอรท าไดงายขน

รวมถงผเรมตนใหมกสามารถเรยนรเพอใชงานไมโครคอนโทรลเลอรได โดยไมจ าเปนตองศกษาเพอลงลก

ในรายละเอยดของสถาปตยกรรมของไมโครคอนโทรลเลอร ไฟลไลบรารทส าคญและใชงานกบบอรด Arduino

ประกอบดวย

5.1 ไลบรารโปรแกรมส าหรบ Arduino

EEPROM บรรจไลบรารและค าสงส าหรบตดตอกบหนวยความจ าขอมลออพรอม ภายในตวไมโคร

คอนโทรลเลอร เมอตองการใชงานตองผนวกไฟลไลบรารไวในตอนตนของโปรแกรมดวยค าสง

#include <EEPROM.h>

LiquidCrystal บรรจไลบรารและค าสงส าหรบตดตอกบโมดล LCD แบบอกขระเพอแสดงผลขอความและ

ตวเลข รองรบทงการตดตอแบบ 4 บตและ 8 บต ใชงานไดกบโมดล LCD 8, 16 และ 20 ตวอกษร 1, 2 และ 4

บรรทด เมอตองการใชงานตองผนวกไฟลไลบรารไวในตอนตนของโปรแกรมดวยค าสง

#include <LiquidCrystal.h>

servo บรรจไลบรารและค าสงส าหรบขบเซอรโวมอเตอร ตองท างานรวมกบเซอรโวมอเตอรและตองใชไฟ

เลยงแยกส าหรบเซอรโวมอเตอร เมอตองการใชงานตองผนวกไฟลไลบรารไวในตอนตนของโปรแกรมดวยค าสง

#include <servo.h>

SoftwareSerial บรรจไลบรารและค าสงส าหรบใชงานขาพอรตของ Arduino ในการสอสารขอมลอนกรม

ไลบรารจะถกน ามาใชงานเมอ ขาเชอมตอพอรตอนกรมหลก (RxD และ TxD) ของ Arduino ถกใชงานไปแลว และ

มความตองการตดตออปกรณทตองใชการสอสารขอมลอนกรม การใชงานไลบรารน จะชวยใหผใชงานสามารถใช

ขาพอรตของ Arduino ขาอนทวางมาท าหนาทเปนขาพอรตส าหรบสอสารขอมลอนกรม เมอตองการใชงานตอง

ผนวกไฟลไลบรารไวในตอนตนของโปรแกรมดวยค าสง #include <SoftwareSerial.h>

หนวยท 5ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก

Page 6: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

6 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

SPI บรรจไลบรารและค าสงส าหรบตดตอกบอปกรณผานบส SPI (Serial Peripheral Interface) โดย

ตองใชขาพอรต 12 (MISO), 11 (MOSI) และ 10 (SS) ในการตดตออปกรณทท างานผานบสแบบ SPI ประกอบ

ดวยไอซหนวยความจ าออพรอมในอนกรม 93Cxxx, ไอซแปลงสญญาณแอนะลอกเปนดจตอล, ไอซแปลง

สญญาณดจตอลเปนแอนะลอก, ไอซวดอณหภม , ไอซขบ LED ตวเลข 7 สวน เปนตน เมอตองการใชงานตองผนวก

ไฟลไลบรารไวในตอนตนของโปรแกรมดวยค าสง #include <SPI.h>

Wire บรรจไลบรารและค าสงส าหรบตดตอกบอปกรณผานบส I2C โดยตองใชขาพอรต A4 (SDA) และ

A5 (SCL) ในการตดตออปกรณ ทท างานผานบส I2C มมากมายเชนไอซหนวยความจ าออพรอมในอนกรม

24Cxxx , ไอซแปลงสญญาณแอนะลอกเปนดจตอล , ไอซแปลงสญญาณดจตอลเปนแอนะลอก ,ไอซวดอณภม ,

ไอซขยายพอรตอนพตเอาตพต, โมดลวทย FM, ตวตรวจจบความชน, ตวตรวจจบความดนบรรยากาศ, ตว

ตวตรวจจบความเรงแบบ 3 แกน เปนตน เมอตองการใชงานตองผนวกไฟลไลบรารไวในตอนตนของโปรแกรมดวย

ค าสง #include <Wire.h>

ส าหรบฮารดแวร Arduino Leonardo ซงบอรด Arduino กเปนฮารดแวรแบบหนงทเขากนไดม

ไลบรารพเศษทเพมเตมขนมานนคอ ไลบราร USB ในการใชงานไลบรารของไลบราร USB นไมตองท าการผนวก

ไลบรารเพมเตมแตอยางใด ผพฒนาโปรแกรมสามารถเรยกใชงานไลบรารไดเลย ไลบราร USB ม 2 ไลบรารยอยคอ

Mouse บรรจไลบรารและค าสงเพอท าใหฮารดแวร Arduino Leonardo หรอบอรด Arduino ท างาน

เปนเมาส USB

Keyboard บรรจไลบรารและค าสงเพอท าใหฮารดแวร Arduino Leonardo หรอบอรด Arduino ท างาน

เปนคยบอรด USB นอกเหนอไปจากไลบรารมาตรฐานและไลบราร USB ททาง Arduino เตรยมมาใหพรอมใชงาน

การเรยกใชงานชดค าสงยอยตางๆ เพอการพฒนาโปรแกรมควบคมส าหรบบอรด Arduino ผพฒนาตอง

ผนวกไฟลไลบรารหลก Arduino.h โดย #include <Arduino.h> เพอประกาศใหตวแปลภาษาหรอคอมไพเลอร

รจกชดค าสงยอยตางๆ ทก าลงจะถกเรยกใชงานจากไฟลไลบราร Arduino.h ไลบรารยอย ของไฟลไลบราร

Arduino.h ประกอบดวย

glcd บรรจไลบรารและค าสงส าหรบแสดงผลขอความ, ตวเลข และสรางภาพกราฟกสทจอแสดงผลแบบ

กราฟก LCD สของแผงวงจร GLCD-XT ไลบรารนมการการก าหนดขาใช งานทเฉพาะเจาะจง

sleep บรรจไลบรารและค าสงส าหรบการหนวงเวลา

in_out บรรจไลบรารและค าสงส าหรบอานคาอนพตดจตอลและสงคาออกทางขาพอรตเอาตพตดจตอล

analog บรรจไลบรารและค าสงส าหรบอานคาจากอนพตแอนะลอกทตอกบตวตรวจจบ

sound บรรจไลบรารและค าสงส าหรบสรางเสยงเพอขบออกล าโพง ฟงกชนนมการก าหนดขาใชงานท

เฉพาะเจาะจง

Page 7: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

7 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

motor บรรจไลบรารและค าสงส าหรบขบมอเตอรไฟตรง 2 ชอง ตองท างานรวมกบวงจรขบ

มอเตอรทใชไอซ TB6612 และตองใชไฟเลยงแยกส าหรบมอเตอรไฟตรง ไลบรารนมการก าหนดขาใชงานท

เฉพาะเจาะจง

servoMotor บรรจไลบรารและค าสงส าหรบขบเซอรโวมอเตอรตองท างานรวมกบเซอรโวมอเตอร

และตองใชไฟเลยงแยกส าหรบเซอรโวมอเตอร ไลบรารนมการก าหนดขาใชงานทเฉพาะเจาะจง

serial บรรจไลบรารและค าสงส าหรบสอสารขอมลอนกรมผานทางพอรต USB และผานทางขาพอรต TxD

และ RxD ของบอรด Arduino

IRremote บรรจไลบรารและค าสงส าหรบอานรหสของปมรโมตคอนโทรลอนฟราเรด ทใชในเครองใช

ไฟฟา เมอตองการใชงานไลบรารน ตองผนวกไฟลไวในตอนตนของโปรแกรมหลงค าสง #include <Arduino.h>

ดวยค าสง #include <IRremote.h> ในการเรยนรเพอใชงานบอรด Arduino จะใชไฟลไลบรารทงแบบมาตรฐาน

และไฟล Arduino.h รวมกน เพอชวยใหการพฒนาโปรแกรมส าหรบการใชงานมประสทธภาพสงสด และสามารถ

ท าความเขาใจไดงาย ทงนเพอประโยชนในการตอยอดการเรยนรของผใชงานในวงกวาง

5.2 ไลบรารเกยวกบเวลา

5.2.1 sleep และdelay

เปนไลบรารหนวงเวลาโดยประมาณภายในโปรแกรมในหนวยมลลวนาท

รปแบบ

void sleep(unsigned int ms)

void delay(unsigned int ms)

พารามเตอร

ms - ก าหนดคาเวลาทตองการหนวงในหนวยมลลวนาทมคา 0 ถง 65,535

ตวอยางท 5.1

sleep(20); // หนวงเวลาประมาณ 20 มลลวนาท

delay(1000); // หนวงเวลาประมาณ 1 วนาท

5.2.2 delay_us

เปนไลบรารหนวงเวลาโดยประมาณภายในโปรแกรมในหนวยไมโครวนาท

รปแบบ

void delay_us(unsigned int us)

Page 8: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

8 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

พารามเตอร

us - ก าหนดคาเวลาทตองการหนวงในหนวยไมโครวนาทมคา 0 ถง 65,535

ตวอยางท 5.2

delay_us(100); // หนวงเวลาประมาณ 100 ไมโครวนาท

5.3 ไลบรารเกยวกบการอานคาดจตอล

5.3.1 in

เปนไลบรารอานคาสถานะลอจกของพอรตทก าหนดเปนหนงในไลบราร การอานและเขยนคากบพอรต

อนพตเอาตพต

รปแบบ

char in(x)

พารามเตอร

x - ก าหนดขาพอรตทตองการอานคา

การคนคา

เปน 0 หร อ 1

ตวอยางท 5.4

char x; // ประกาศตวแปร x เพอเกบคาผลลพธจาการอานคาระดบสญญาณ

x = in(2); // อานคาดจตอลจากพอรตดจตอล 2 มาเกบไวทตวแปร x

5.3.2 out

เปนไลบรารก าหนดระดบสญญาณหรอขอมลดจตอลไปยงพอรตทก าหนด

รปแบบ

out(char _bit,char _dat)

พารามเตอร

bit - ก าหนดขาพอรตทตองการ

ตวอยางท 5.5

out(4,1); // ก าหนดใหขาพอรต 4/A6 เปนเอาตพตดจตอลและมคาเปน “1”

out(6,0); // ก าหนดใหขาพอรต 6/A7 เปนเอาตพตดจตอลและมคาเปน “0”

Page 9: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

9 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

5.4 ไลบรารเกยวกบการอานคาแอนะลอก

5.4.1 analog

เปนไลบรารอานคาขอมลแอนะลอก และแปลงเปนสญญาณดจตอลของไมโครคอนโทรลเลอร ทพอรต

A0 ถง A6 ซงใชในการเชอมตอกบตวตรวจจบ ทใหผลการท างานในรปแรงดนไฟฟาในยาน 0 ถ ง +5V

รปแบบ

unsigned int analog(unsigned char channel)

พารามเตอร

channel - ก าหนดชองอนพตแอนะลอกทตองการมคา 0 ถง 6 ซงตรงกบขาพอรต A0 ถง A6

การคนคา

เปนขอมลทไดจากการแปลงสญญาณของโมดลแปลงสญญาณแอนะลอกเปนดจตอลภายในไมโคร

คอนโทรลเลอร จากชองอนพตทก าหนด โดยขอมลมความละเอยด 10 บต ดงนนคาทเปนไปไดคอ 0 ถง 1,023

5.4.2 knob

เปนไลบรารอานคาขอมลจากตวตานทานปรบคาได KNOB มาเสยบเขากบบอรด Arduino มการท างาน

เหมอนกบค าสง analog() แตคาทอานไดมคาในชวง 80 ถง 1023 เนองจากตวตานทานปรบคาไดทเชอมตออย

รปแบบ

unsigned int knob()

การคนคา

คาทอานไดจากตวตานทานปรบคาได KNOB มคาระหวาง 80 ถง 1023

ตวอยางท 5.6

int val=0; // ก าหนดคาตวแปรส าหรบเกบคาแอนะลอก

val=knob(); // อานคาจากตวตานทานปรบคาได KNOB เกบในตวแปร val

5.4.3 sw_ok()

เปนไลบรารตรวจสอบสถานะสวตช OK บนแผงวงจร จะใชงานไดเมอน าแผงวงจรมาเสยบเขา

กบบอรด Arduino โดยใหสถานะ “เปนจรง” เมอมการกดสวตช และ “เปนเทจ” เมอไมมการกดสวตช

รปแบบ

unsigned char sw_ok()

การคนคา

1 (เปนจรง) เมอมการกดสวตช

0 (เปนเทจ) เมอไมมการกดสวตช

Page 10: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

10 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

ตวอยางท 5.7

if(sw_ok())

{

beep(); // เมอกดสวตช OK จะมเสยง “ตด” ดงออกล าโพง

}

5.4.4 sw_ok_press()

เปนไลบรารวนตรวจสอบการกดสวตช OK บนแผงวงจร ตองรอจนกระทงสวตชถกปลอยหลงจาก

การกดสวตช จงจะผานไลบรารนไปกระท าค าสงอนๆ

ตวอยางท 5.8

........

sw_ok_press(); // รอจนกระทงเกดกดสวตช OK

......

5.5 ไลบรารเกยวกบการสอสารขอมลอนกรม

เปนไฟลไลบรารสนบสนนชดค าสงเกยวกบการรบสงขอมลผานโมดลสอสารขอมลอนกรม (UART)

5.5.1 การเชอมตอทางฮารดแวร

เมอตองการใชงานชอง UART ใหตอสายจากจดตอพอรต USB บนบอรด Arduino (เปนจดตอเดยวกบท

ใชในการอปโหลด) เขากบพอรต USB ของคอมพวเตอร เมอตองการใชงานชอง UART ตอสายสญญาณเขากบจด

ตอ RxD (ขาพอรต 0) และ TxD (ขาพอรต 1)

5.5.2 uart

เปนไลบรารส าหรบสงขอมลสายอกขระออกจากโมดล UART มอตราบอดเรมตนท 4,800 บต

วนาท

รปแบบ

void uart(char *p,...)

พารามเตอร

p - รบรหสของกลมขอความทตองการสงออกจากภาคสงของโมดล UART โดยสามารถก าหนด

รปแบบการแทรกสญลกษณพเศษเพอใชรวมในการแสดงผลไดดงน

รหสบงคบการท างาน

%c หรอ %C แสดงผลตวอกษร 1 ตว

%d หรอ %D แสดงผลตวเลขฐานสบชวงตงแต -32,768 ถง +32,767

Page 11: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

11 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

%l หรอ %L แสดงผลตวเลขฐานสบชวงตงแต -2,147,483,648 ถง +2,147,483,647

%f หรอ %F แสดงผลขอมลแบบจ านวนจรง (แสดงทศนยม 3 หลก)

\r ก าหนดใหขอความชดไปทางดานซายของบรรทด

\n ก าหนดใหขอความขนบรรทดใหม

5.5.3 uart_set_baud

เปนไลบรารก าหนดอตราบอดในการสอสารของโมดล UART กบคอมพวเตอร

รปแบบ

void uart_set_baud(unsigned int baud)

พารามเตอร

baud - อตราบอดในการสอสารของโมดล UART กบคอมพวเตอรมคา 2400 ถง 115,200

ตวอยางท 5.9

uart_set_baud(4800); // ก าหนดอตราบอดในการสอสารขอมลเปน 4,800 บตตอวนาท

5.5.4 uart_available

เปนไลบรารตรวจสอบการรบขอมลเขามาของโมดล UART เมอตดตอกบคอมพวเตอร

รปแบบ

unsigned char uart_available(void)

การคนคา

- เปน “0” เมอยงไมมขอมลเขามา

- มากกวา 0 เมอมขอมลเขามาโดยมคาเทากบจ านวนของอกขระทไดรบ

ตวอยางท 5.10

char x =uart_available();

// ตรวจสอบวามขอมลเขามาทางภาครบของโมดล UART หรอไมถา x มคามากกวา 0 แสดงวามขอมลเขา

5.5.5 uart_getkey

เปนไลบรารอานขอมลจากบฟเฟอรตวรบของโมดล UART

รปแบบ

char uart_getkey(void)

การคนคา

- เปน “0” เมอไมมการรบอกขระใดๆ เขามายงวงจรภาครบของโมดล UART

- เปนคาของอกขระทรบไดในรปแบบของรหสแอสก

Page 12: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

12 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

สรปเนอหาสาระส าคญ

ไลบรารโปรแกรมส าหรบ Arduino เปนไลบรารเกยวกบเวลา ไลบรารเกยวกบเสยง ไลบรารเกยวกบการอานคาดจตอล ไลบรารเกยวกบการอานคาแอนะลอก และไลบรารเกยวกบการสอสารขอมลอนกรม ทใชเปนประจ าคอไลบรารอานคาขอมลแอนะลอกและแปลงเปนสญญาณดจตอลของไมโครคอนโทรลเลอร ทพอรต A0 ถง A6 ซงใชในการเชอมตอกบตวตรวจจบทใหผลการท างานในรปแรงดนไฟฟาในยาน 0 ถ ง +5V รปแบบ unsigned int analog(unsigned char channel) พารามเตอร channel - ก าหนดชองอนพตแอนะลอกทตองการมคา 0 ถง 6 ซงตรงกบขาพอรต A0 ถง A6 การคนคาเปนขอมลทไดจากการแปลงสญญาณของโมดลแปลงสญญาณแอนะลอกเปนดจตอลภายในไมโครคอนโทรลเลอร จากชองอนพตทก าหนด โดยขอมลมความละเอยด 10 บต ดงนนคาทเปนไปไดคอ 0 ถง 1,023

Page 13: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

13 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก ใชเวลา 20 นาท ******************************************************************************************************* ค าชแจง แบบฝกหดมทงหมด 2 ตอน ประกอบดวยตอนท 1 และตอนท 2 (20 คะแนน) 2. แบบฝกหดตอนท 1 เปนค าถามแบบถก-ผด มทงหมด 20 ขอ (10 คะแนน) 3. แบบฝกหดตอนท 2 เปนค าถามแบบปรนย มทงหมด 10 ขอ (10 คะแนน)

ค าชแจง ใหผเรยนกาเครองหมายถก ในขอทคดวาถก และกาเครองหมายผด ในขอทคดวาผด ค าชแจง ใหผเรยนกาเครองหมายถก ในขอทคดวาถก และกาเครองหมายผด ในขอทคดวาผด 1. %c หรอ %C แสดงผลตวอกษร 1 ตว 2. %d หร อ %D แสดงผลตวเลขฐานสบชวงตงแต -32,768 ถง +32,767 3. %l หร อ %L แสดงผลตวเลขฐานสบชวงตงแต -2,147,483,648 ถง +2,147,483,647 4. %f หร อ %F แสดงผลขอมลแบบจ านวนจรง (แสดงทศนยม 3 หลก) 5. \r ก าหนดใหขอความชดไปทางดานซายของบรรทด 6. \n ก าหนดใหขอความขนบรรทดใหม 7. อตราบอดในการสอสารของโมดล UART กบคอมพวเตอรมคา 400 ถง 115,200 8. เมอตองการใชงานชอง UART ใหตอสายจากจดตอพอรต USB บนบอรด Arduino 9. การเชอมตอกบตวตรวจจบทใหผลการท างานในรปแรงดนไฟฟาในยาน 0 ถ ง +3.3V 10. sound(1200,500); // ก าเนดสญญาณเสยงความถ 500Hz นาน 1200 มลลวนาท

แบบฝกหดหนวยท 5

แบบฝกหดตอนท 1

Page 14: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

14 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

ค าชแจง ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ใหครบทกขอ 1. LiquidCrystal เมอตองการใชงานตองผนวกไฟลไลบรารดวยค าสง

ก. #include < LiquidCrystal.o> ข. #include < LiquidCrystal.h> ค. #include < LiquidCrystal.b> ง. #include < LiquidCrystal.d>

2. SoftwareSerial ในการสอสารขอมลอนกรม ไลบรารจะถกน ามาใชงานเมอ ก. พอรตอนกรมหลก (RxD และ TxD) ของ Arduino ไมถกใชงาน ข. พอรตอนกรมหลก (RxD และ TxD) ของ Arduino เสย ค. พอรตอนกรมหลก (RxD และ TxD) ของ Arduino ถกใชงาน ง. พอรตอนกรมหลก (RxD และ TxD) ของ Arduino ท างานไดปกต

3. ในการตดตออปกรณทท างานผานบสแบบ SPI ประกอบดวย ก. ไอซแปลงสญญาณแอนะลอกเปนดจตอล ข. ไอซแปลงสญญาณดจตอลเปนแอนะลอก, ค. ไอซวดอณหภม , ไอซขบ LED ตวเลข 7 สวน

ง. ถกทกขอ 4. ไลบราร Serial.println() มรปแบบอยางไร

ก. Serial.print(b,FORMAT); ข. Serial.println(b,FORMAT); ค. initialization; condition;

ง. Serial.print(b,FORMAT); กบ Serial.println(b,FORMAT); 5. Arduino Leonardo สามารถเรยกใชงานไลบราร USB โดยม 2 ไลบรารยอยคอ ก. Mouse / Keypad ข. Mouse / Keyboard ค. Keypad / Keyboard ง. USB 1 / USB 2

แบบฝกหดตอนท 2

Page 15: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

15 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

6. ไลบรารเกยวกบเวลา มอะไรบาง ก. deboun และ delay ข. sleep และ boun

ค. boun และ delay ง. sleep และdelay

7. sleep และ delay ก าหนดคาเวลาทตองการหนวงในหนวยใด ก. มลลวนาท ข. ไมโครวนาท

ค. นาโนวนาท ง. วนาท

8. ไลบรารเกยวกบการอานคาแอนะลอก เปนไลบรารเกยวกบ ก. อานคาขอมลแอนะลอกแปลงเปนสญญาณแอนะลอก ข. อานคาขอมลดจตอลและแปลงเปนสญญาณดจตอล ค. อานคาขอมลดจตอลและแปลงเปนสญญาณแอนะลอก ง. อานคาขอมลแอนะลอกและแปลงเปนสญญาณดจตอล

9. UART มอตราบอดเรมตนท ก. 9600 ข. 2400

ค. 19200 ง. 4800

10. uart_available คอไลบรารอะไร ก. คาต าสดของชวงทก าหนด ข. ตรวจสอบการรบขอมลเขามาของโมดล UART ค. ปดคาตวเลขทนอยกวาหรอมากกวาใหอยในชวงทก าหนด ง. ตวแปรจ านวนเตม 64 บต แบบไมคดเครองหมาย

Page 16: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

16 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

***************************************************************************************************ค าชแจง ใหผเรยนทกคนท าการทดลองตามปฎบตการทดลองหนวยท 5 เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอกใชเวลา 180 นาท ( 20 คะแนน)

จดประสงคเชงพฤตกรรม

1. สามารถใชไลบรารไดถกตอง 2. สามารถแกปญหาในการท างานของบอรด Arduino Uno R3 ได 3. สามารถตอใชงานและอพโหลดโปรแกรมใหกบบอรด Arduino Uno R3 ได

อปกรณการทดลอง

1. เครองคอมพวเตอรและโปรแกรม Arduino IDE 1.6.9 1 ชด 2. USB Cable Arduino Uno R3 1 เสน 3. Arduino Uno R3 Board 1 บอรด ขอควรระวง 1. ควรระวงไมวางบอรด Arduino Uno R3 หรอชลตางๆ บนโตะโลหะหรอทวางทเปนโลหะเพราะอาจเกดการลดวงจรของภาคจายไฟได

2. ไมควรตอสายตอวงจรในบอรด Arduino Uno R3 ทงไว ควรถอดสายตอวงจรออกใหหมด เพราะผลการทดลองอาจเกดการผดพลาดไมเปนไปตามทฤษฎได

3. ไมควรถอดสายสายโหลด USB เขาออกตลอดเวลา เพราะอาจท าใหภาคจายไฟของบอรด Arduino Uno R3 เสยหายได

ปฏบตการทดลองหนวยท 5 เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก

Page 17: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

17 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

การทดลองท 5.1 การลบขอมลใน EEPROM

EEPROM Library บรรจไลบรารและค าสงส าหรบตดตอกบหนวยความจ าขอมลออพรอม ภายในตว

ไมโครคอนโทรลเลอร เมอตองการใชงานตองผนวกไฟลไลบรารไวในตอนตนของโปรแกรมดวยค าสง

#include <EEPROM.h>

Hardware Required

Arduino or Genuino Board

Circuit / Schematics

.

CODE

/* * EEPROM Clear * * Sets all of the bytes of the EEPROM to 0.

Page 18: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

18 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

* Please see eeprom_iteration for a more in depth * look at how to traverse the EEPROM. * This example code is in the public domain. */ #include <EEPROM.h> void setup() { // initialize the LED pin as an output. pinMode(13, OUTPUT); /*** Iterate through each byte of the EEPROM storage. Larger AVR processors have larger EEPROM sizes, E.g: - Arduno Duemilanove: 512b EEPROM storage. - Arduino Uno: 1kb EEPROM storage. - Arduino Mega: 4kb EEPROM storage. Rather than hard-coding the length, you should use the pre-provided length function. This will make your code portable to all AVR processors. ***/ for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } // turn the LED on when we're done digitalWrite(13, HIGH); } void loop() { /** Empty loop. **/ } ผลการทดลอง............................................................................................................................. ........................................................................................................................................................................... ...................................................................................................................................................................................................................................................................................................................................................... ........................................................................................................................................................................... ..............................................

Page 19: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

19 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

การทดลองท 5.2 การอานขอมลใน EEPROM

Hardware Required

Arduino or Genuino Board

Circuit / Schematics

Code

/* * EEPROM Read * Reads the value of each byte of the EEPROM and prints it * to the computer. * This example code is in the public domain. */ #include <EEPROM.h>

Page 20: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

20 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

// start reading from the first byte (address 0) of the EEPROM int address = 0; byte value; void setup() { // initialize serial and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } } void loop() { // read a byte from the current address of the EEPROM value = EEPROM.read(address); Serial.print(address); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); /*** Advance to the next address, when at the end restart at the beginning. Larger AVR processors have larger EEPROM sizes, E.g: - Arduno Duemilanove: 512b EEPROM storage. - Arduino Uno: 1kb EEPROM storage. - Arduino Mega: 4kb EEPROM storage. Rather than hard-coding the length, you should use the pre-provided length function. This will make your code portable to all AVR processors. ***/ address = address + 1; if (address == EEPROM.length()) { address = 0; } /***

Page 21: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

21 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an EEPROM address is also doable by a bitwise and of the length - 1. ++address &= EEPROM.length() - 1; ***/ delay(500); } ผลการทดลอง.............................................................................. .......................................................................................................................................................................................................................... ........................................................................................................................................................................... ........................................................................................................................... ........................................................................................................................................................................................................................... ........................................................................................................................................................................... ............................................

การทดลองท 5.3 การเขยนขอมลลง EEPROM

Hardware Required

Arduino or Genuino Board

Page 22: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

22 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

Circuit / Schematics

Code

/* * EEPROM Write * Stores values read from analog input 0 into the EEPROM. * These values will stay in the EEPROM when the board is * turned off and may be retrieved later by another sketch. */ #include <EEPROM.h> /** the current address in the EEPROM (i.e. which byte we're going to write to next) **/ int addr = 0; void setup() { /** Empty setup. **/ } void loop() { /*** Need to divide by 4 because analog inputs range from 0 to 1023 and each byte of the EEPROM can only hold a value from 0 to 255. ***/

Page 23: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

23 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

int val = analogRead(0) / 4; /*** Write the value to the appropriate byte of the EEPROM. these values will remain there when the board is turned off. ***/ EEPROM.write(addr, val); /*** Advance to the next address, when at the end restart at the beginning. Larger AVR processors have larger EEPROM sizes, E.g: - Arduno Duemilanove: 512b EEPROM storage. - Arduino Uno: 1kb EEPROM storage. - Arduino Mega: 4kb EEPROM storage. Rather than hard-coding the length, you should use the pre-provided length function. This will make your code portable to all AVR processors. ***/ addr = addr + 1; if (addr == EEPROM.length()) { addr = 0; } /*** As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an EEPROM address is also doable by a bitwise and of the length - 1. ++addr &= EEPROM.length() - 1; ***/ delay(100); } ผลการทดลอง............................................................................................................................. ................................................................................................................................... ........................................................................ ..............

Page 24: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

24 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

............................................................................................................................. ..............................................

การทดลองท 5.4 Software Serial

Hardware Required

Arduino or Genuino Board

Circuit / Schematics

Code /* Software serial multple serial test Receives from the hardware serial, sends to software serial. Receives from software serial, sends to hardware serial. The circuit: * RX is digital pin 10 (connect to TX of other device) * TX is digital pin 11 (connect to RX of other device) Note:

Page 25: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

25 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 Not all pins on the Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). created back in the mists of time modified 25 May 2012 by Tom Igoe based on Mikal Hart's example This example code is in the public domain. */ #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { // Open serial communications and wait for port to open: Serial.begin(57600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port mySerial.begin(4800); mySerial.println("Hello, world?"); } void loop() { // run over and over if (mySerial.available()) { Serial.write(mySerial.read());

Page 26: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

26 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

} if (Serial.available()) { mySerial.write(Serial.read()); } } ผลการทดลอง............................................................................................................................. ......................................................................................................................... ............................................................................................................................................................................................................................. ........................................................................................................................................................................... ..............................................

การทดลองท 5.5 Two Port Receive

Hardware Required

Arduino or Genuino Board

Circuit / Schematics

Page 27: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

27 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

Code

/* Software serial multple serial test Receives from the two software serial ports, sends to the hardware serial port. In order to listen on a software port, you call port.listen(). When using two software serial ports, you have to switch ports by listen()ing on each one in turn. Pick a logical time to switch ports, like the end of an expected transmission, or when the buffer is empty. This example switches ports when there is nothing more to read from a port The circuit: Two devices which communicate serially are needed. * First serial device's TX attached to digital pin 10(RX), RX to pin 11(TX) * Second serial device's TX attached to digital pin 8(RX), RX to pin 9(TX) Note: Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 Not all pins on the Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). created 18 Apr. 2011 modified 19 March 2016 by Tom Igoe based on Mikal Hart's twoPortRXExample This example code is in the public domain. */ #include <SoftwareSerial.h> // software serial #1: RX = digital pin 10, TX = digital pin 11 SoftwareSerial portOne(10, 11);

Page 28: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

28 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

// software serial #2: RX = digital pin 8, TX = digital pin 9 // on the Mega, use other pins instead, since 8 and 9 don't work on the Mega SoftwareSerial portTwo(8, 9); void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // Start each software serial port portOne.begin(9600); portTwo.begin(9600); } void loop() { // By default, the last intialized port is listening. // when you want to listen on a port, explicitly select it: portOne.listen(); Serial.println("Data from port one:"); // while there is data coming in, read it // and send to the hardware serial port: while (portOne.available() > 0) { char inByte = portOne.read(); Serial.write(inByte); } // blank line to separate data from the two ports: Serial.println(); // Now listen on the second port portTwo.listen(); // while there is data coming in, read it // and send to the hardware serial port: Serial.println("Data from port two:"); while (portTwo.available() > 0) {

Page 29: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

29 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

char inByte = portTwo.read(); Serial.write(inByte); } // blank line to separate data from the two ports: Serial.println(); } ผลการทดลอง............................................................................................................................. ........................................................................................................................................................................................................................ .............................................................................................................................. ........................................................................................................................................................................... ..............................................

Page 30: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

30 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

สรปผลการทดลอง ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

ปญหาอปสรรคหรอขอเสนอแนะ

...........................................................................................................................................................................

........................................................................................................................................................................... ตารางการประเมนผลคะแนนภาคปฏบต

หวขอการพจารณาภาคปฏบต ระดบคะแนน การทดลองท 5.1 EEPROM Clear 4 คะแนน การทดลองท 5.2 EEPROM Read 4 คะแนน

การทดลองท 5.3 EEPROM Write 4 คะแนน การทดลองท 5.4 Software Serial 4 คะแนน การทดลองท 5.5 Two Port Receive 4 คะแนน

รวมคะแนนภาคปฏบต

…........คะแนน

Page 31: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

31 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

**********************************************************************************

เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก ใชเวลา 20 นาท วชา ไมโครคอนโทรลเลอรเบองตน รหสวชา (2127-2107) ระดบชน ประกาศนยบตรวชาชพ (ปวช.) สาขาวชา เมคคาทรอนกส ค าชแจง 1. แบบทดสอบมทงหมด 10 ขอ (10 คะแนน) 2. ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ลงในกระดาษค าตอบ

1. หนวยความจ าขอมลออพรอม ภายในตวไมโครฯเมอตองการใชงานตองผนวกไฟลไลบรารดวยค าสง ก. #include<EEPROM.o> ข. #include< EEPROM.d> ค. #include<EEPROM.h> ง. #include<EEPROM. b>

2. servo เมอตองการใชงานตองผนวกไฟลไลบรารดวยค าสง ก. #include<servo.h> ข. #include<servo.d> ค. #include <servo.b> ง. #include<servo.o> 3. Arduino UNO บรรจฟงกชน Wire ส าหรบตดตอกบอปกรณผานบส ก. GSM ข. SPI ค. I2C ง. UART 4. Arduino UNO บรรจฟงกชนและค าสงส าหรบตดตอกบ SPI โดยตองใชขาพอรต ก. 10 (MISO), 11 (MOSI) และ 12 (SS) ข. 12 (MISO), 11 (MOSI) และ 10 (SS) ค. 11 (MISO), 12 (MOSI) และ 13 (SS) ง. 13 (MISO), 12 (MOSI) และ 11 (SS)

แบบทดสอบหลงเรยน หนวยท 5 เรอง ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก

Page 32: หน่วยที่ 5 ARDUINO และการอ่านค่าแอนะล็อก · หน่วยที่ 5 ไลบรารี่โปรแกรมส าหรับ

หนวยท 5 ไลบรารโปรแกรมส าหรบ Arduino และการอานคาแอนะลอก เรยบเรยงโดยครทนพงษ ภรกษ

32 เอกสารประกอบการสอนวชาไมโครคอนโทรลเลอรเบองตน

5. บส I2C Arduino UNO ตองใชขาพอรต ก. A1 (SDA) และ A2 (SCL) ข. A2 (SDA) และ A3 (SCL) ค. A3 (SDA) และ A4 (SCL) ง. A4 (SDA) และ A5 (SCL)

6. ฟงกชนเกยวกบพอรตอนพตเอาตพต ฟงกชน in เปนฟงกชนอะไร ก. ก าหนดขาพอรตทตองการอานคา ข. อานคาสถานะลอจกของพอรตทก าหนด ค. อานคาดจตอลจากพอรตดจตอล ง. อานคาดจตอลจากพอรตอนกรม 7. ฟงกชน out เปนฟงกชนอะไร ก. ก าหนดขอมลดจตอลไปยงพอรตทก าหนด ข. ก าหนดขาพอรตทตองการอานคา ค. อานคาดจตอลจากพอรตดจตอล 1 ง. อานคาดจตอลจากพอรตดจตอล 2 8. ฟงกชนการอานคาแอนะลอกของ Arduino UNO ใชพอรตอยางไร ก. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A3 ถง A6 ข. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A2 ถง A6 ค. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A1 ถง A6 ง. ก าหนดชองอนพตแอนะลอกทตองการตรงกบขาพอรต A0 ถง A6 9. ฟงกชนเกยวกบการสอสารขอมลอนกรม เมอตองการใชงานชอง UART ตอสายสญญาณอยางไร ก. RxD (ขาพอรต 0) และ TxD (ขาพอรต 1) ข. RxD (ขาพอรต 1) และ TxD (ขาพอรต 0) ค. RxD (ขาพอรต A0) และ TxD (ขาพอรต A1) ง. RxD (ขาพอรต A1) และ TxD (ขาพอรต A0) 10. uart_available คอฟงกชนอะไร ก. คาต าสดของชวงทก าหนดของโมดล UART ข. ตรวจสอบการรบขอมลเขามาของโมดล UART ค. ปดคาตวเลขใหอยในชวงทก าหนดของโมดล UART ง. ตวแปรจ านวนเตม 64 บต แบบไมคดเครองหมายของโมดล UART