27
เอกสารประกอบการเรียนการสอน วิชา: 618352 ไมโครโปรเซสเซอรและการเชื่อมตอ เรื่องที8: * การสื่อสารขอมูลแบบ OneWire * การเชื่อมตอกับ Temperature Sensor * การใชงาน Visual Basic ตอนที2 เว็บไซตรายวิชา: http://sites.google.com/site/618352 อาจารย ดร.โสภณ ผูมีจรรยา ภาควิชาวิศวกรรมไฟฟา คณะวิศวกรรมศาสตรและเทคโนโลยีอุตสาหกรรม มหาวิทยาลัยศิลปากร 1 ระบบบัส 1 สาย 2 ระบบบัส 1 สาย (1-Wire Bus) เปนระบบสื่อสารขอมูลอนุกรมที่มีความชาญ ฉลาดและใชจํานวนสายสัญญาณเพียง 1 เสนเทานั้น โดยไมตองมีสัญญาณนาฬิกามา ควบคุมจังหวะการถายทอดขอมูลเหมือนกับระบบสื่อสารขอมูลอนุกรมในแบบอื่น เนื่องจากสายขอมูลนั้นจะทําหนาที่เสมือนหนึ่งเปนสายสัญญาณนาฬิกาในตัว สวนคา ของขอมูลจะพิจารณาจากลักษณะของรูปสัญญาณที่ปรากฏบนสายสัญญาณในแตละ ชองของเวลาหรือตอไปนี้จะขอเรียกวา ไทมสล็อต (time-slot) โดยคาบเวลาต่ําสุดและ สูงสุดของสถานะตาง ในการสื่อสารขอมูลในแตละไทมสล็อต มีการกําหนด ขอบเขตไวอยางชัดเจน การถายทอดขอมูลจะเกิดขึ ้นในแตละไทมสล็อตนั้น รูปแบบ การถายทอดขอมูลเปนแบบอะซิงโครนัสในระดับบิต ไมมีการกําหนดความยาวของ ขอมูลเปนระดับไบต 3 คุณสมบัติของไทมสล็อต อุปกรณมาสเตอรเปนอุปกรณเพียงตัวเดียวบนระบบบัสที่สามารถอินิเชียล สายสัญญาณได โดยอุปกรณมาสเตอรจะเริ่มตนไทมสล็อตดวยการทําใหสายสัญญาณ เปนลอจิกต่ําในชวงเวลาหนึ่ง จากนั้นทําใหกลับมาเปนลอจิกสูง ถาหากอุปกรณสเลฟ ตองการสงขอมูลมายังอุปกรณมาสเตอร อุปกรณสเลฟจะเปนตัวควบคุมสภาวะของ สายสัญญาณตอไป จนเสร็จสิ้นกระบวนการ แตถาอุปกรณมาสเตอรตองการสงขอมูล ก็จะสามารถดําเนินการตอไปไดเลย ตัวอยางมาตรฐานการสื่อสารขอมูลแบบ OneWrie ไดแก รูปแบบการ สื่อสารขอมูลที่คิดคนโดย ดัลลัสเซมิคอนดักเตอร บางครั้งจึงเรียกระบบสื่อสารขอมูล แบบนี้วา ระบบสื่อสารขอมูลดัสลัสหนึ่งสาย (The Dallas 1-Wire Bus) 4 ฟงกชันของไทมสล็อตที่กําหนดโดยอุปกรณมาสเตอร มีดวยกัน 4 ฟงกชัน คือ 1. รีเซต (RESET) ใชในการเริ่มตนติดตอกับอุปกรณสเลฟ 2. อานขอมูล (READ DATA) ใชอานขอมูลที่สงมาจากอุปกรณสเลฟ 3. เขียนขอมูล “1” (WRITE ONE) ใชเขียนขอมูล “1” ไปยังอุปกรณสเลฟ ผานสายสัญญาณของระบบ 4. เขียนขอมูล “0” (WRITE ZERO) ใชเขียนขอมูล “0” ไปยังอุปกรณสเลฟ ผานสายสัญญาณของระบบ

เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

เอกสารประกอบการเรียนการสอน• วิชา: 618352 ไมโครโปรเซสเซอรและการเชื่อมตอ• เรื่องที่ 8: * การสื่อสารขอมูลแบบ OneWire

* การเชื่อมตอกับ Temperature Sensor * การใชงาน Visual Basic ตอนที่ 2• เว็บไซตรายวิชา: http://sites.google.com/site/618352• อาจารย ดร.โสภณ ผูมีจรรยา• ภาควิชาวิศวกรรมไฟฟา • คณะวิศวกรรมศาสตรและเทคโนโลยีอุตสาหกรรม• มหาวิทยาลัยศิลปากร 1

ระบบบัส 1 สาย

2

ระบบบัส 1 สาย (1-Wire Bus) เปนระบบสื่อสารขอมูลอนุกรมที่มีความชาญฉลาดและใชจํานวนสายสัญญาณเพียง 1 เสนเทานั้น โดยไมตองมีสัญญาณนาฬิกามาควบคุมจังหวะการถายทอดขอมูลเหมือนกับระบบสื่อสารขอมูลอนุกรมในแบบอื่น ๆ เนื่องจากสายขอมูลนั้นจะทําหนาที่เสมือนหนึ่งเปนสายสัญญาณนาฬิกาในตัว สวนคาของขอมูลจะพิจารณาจากลักษณะของรูปสัญญาณที่ปรากฏบนสายสัญญาณในแตละชองของเวลาหรือตอไปนี้จะขอเรียกวา ไทมสล็อต (time-slot) โดยคาบเวลาต่ําสุดและสูงสุดของสถานะตาง ๆ ในการสื่อสารขอมูลในแตละไทมสล็อต มีการกําหนดขอบเขตไวอยางชัดเจน การถายทอดขอมูลจะเกิดขึ้นในแตละไทมสล็อตนั้น รูปแบบการถายทอดขอมูลเปนแบบอะซิงโครนัสในระดับบิต ไมมีการกําหนดความยาวของขอมูลเปนระดับไบต

3

คุณสมบัติของไทมสล็อตอุปกรณมาสเตอรเปนอุปกรณเพียงตัวเดียวบนระบบบัสที่สามารถอินิเชียล

สายสัญญาณได โดยอุปกรณมาสเตอรจะเริ่มตนไทมสล็อตดวยการทําใหสายสัญญาณเปนลอจิกต่ําในชวงเวลาหนึ่ง จากนั้นทําใหกลับมาเปนลอจิกสูง ถาหากอุปกรณสเลฟ ตองการสงขอมูลมายังอุปกรณมาสเตอร อุปกรณสเลฟจะเปนตัวควบคุมสภาวะของสายสัญญาณตอไป จนเสร็จสิ้นกระบวนการ แตถาอุปกรณมาสเตอรตองการสงขอมูลก็จะสามารถดําเนินการตอไปไดเลย

ตัวอยางมาตรฐานการสื่อสารขอมูลแบบ OneWrie ไดแก รูปแบบการสื่อสารขอมูลที่คิดคนโดย ดัลลัสเซมิคอนดักเตอร บางครั้งจึงเรียกระบบสื่อสารขอมูลแบบนี้วา ระบบสื่อสารขอมูลดัสลัสหนึ่งสาย (The Dallas 1-Wire Bus)

4

ฟงกชันของไทมสล็อตที่กําหนดโดยอุปกรณมาสเตอรมีดวยกัน 4 ฟงกชัน คือ1. รีเซต (RESET) ใชในการเริ่มตนติดตอกับอุปกรณสเลฟ2. อานขอมูล (READ DATA) ใชอานขอมูลที่สงมาจากอุปกรณสเลฟ3. เขียนขอมูล “1” (WRITE ONE) ใชเขียนขอมูล “1” ไปยังอุปกรณสเลฟ

ผานสายสัญญาณของระบบ4. เขียนขอมูล “0” (WRITE ZERO) ใชเขียนขอมูล “0” ไปยังอุปกรณสเลฟ

ผานสายสัญญาณของระบบ

Page 2: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

5

ฟงกชันของไทมสล็อตในอุปกรณสเลฟมีดวยกัน 3 ฟงกชัน คือ1. ตอบสนอง (PRESENCE) ใชสําหรับตอบสนองการติดตอจากอุปกรณ

มาสเตอร โดยอุปกรณสเลฟตัวที่ถูกเลือกจากอุปกรณมาสเตอร จะตองสงสัญญาณตอบสนองลงบนสายสัญญาณ เพื่อแจงใหอุปกรณมาสเตอรทราบวา ขณะนี้สามารถติดตอกันไดแลว

2. เขียนขอมูล “1” (WRITE ONE) ใชสําหรับสงขอมูล “1” ไปยังอุปกรณมาสเตอรผานสายสัญญาณของระบบ ซึ่งจะสัมพันธกับไทมสล็อตการอานขอมูลของอุปกรณมาสเตอร

3. เขียนขอมูล “0” (WRITE ZERO) ใชสําหรับสงขอมูล “0” ไปยังอุปกรณมาสเตอรผานสายสัญญาณของระบบ ซึ่งจะสัมพันธกับไทมสล็อตการอานขอมูลของอุปกรณมาสเตอร

6

ไทมสล็อตการรีเซตและตอบสนองอุปกรณมาสเตอรซึ่งในที่นี้คือ ไมโครคอนโทรลเลอรจะทําใหเกิดการรีเซต

บนสายสัญญาณเพื่อแจงแกอุปกรณสเลฟ ดวยการทําใหสายสัญญาณเปนลอจิก “0” ตอเนื่องอยางนอย 480 ไมโครวินาที และจะตองทําใหสายสัญญาณกลับมาเปนลอจิก “1” ภายใน 480 ไมโครวินาทีหลังจากนั้น ถาหากมีอุปกรณสเลฟตออยูบนสายสัญญาณจะมีการตอบสนองสัญญาณรีเซตนั้นดวยสัญญาณตอบสนอง (PRESENCE) ดวยการทําใหสายสัญญาณเปนลอจิก “0” ตอเนื่องนานประมาณ 60 ถึง 240 ไมโครวินาที หลังจากที่สัญญาณรีเซตปรากฏขึ้นประมาณ 15 ถึง 60 ไมโครวินาที

การแยกแยะฟงกชันของแตละไทมสล็อต จะใชความยาวของคาบเวลาและลักษณะของรูปสัญญาณเปนตัวกําหนดและทุกครั้งที่มีการเปลี่ยนแปลงฟงกชันตองทําใหสายสัญญาณอยูในสภาวะวางเสมอ ซึ่งก็คือ การทําใหสายสัญญาณเปนลอจิกสูงอยางนอยเปนเวลา 1 ไมโครวินาที

7

ไทมสล็อตการรีเซตและตอบรับของอุปกรณบนระบบบัสหนึ่งสาย

8

ไทมสล็อตการอานขอมูลของไมโครคอนโทรลเลอรและการเขียนขอมูลของอุปกรณสเลฟ

เมื่อตองการอานขอมูลจากอุปกรณสเลฟ ไมโครคอนโทรเลอรจะทําใหสายสัญญาณเปนลอจิก “0” ประมาณ 1 ถึง 15 ไมโครวินาที จากนั้นตองทําใหสถานะของสายกลับมาเปนลอจิก “1” อุปกรณสเลฟจะสงขอมูลกลับมาใหไมโคคอนโทรลเลอร ถาขอมูลเปน “0” อุปกรณสเลฟจะทําใหสายสัญญาณเปนลอจิก “0” นานประมาณ 45 ไมโครวินาที แลวทําใหสายสัญญาณกลับมาสูสภาวะลอจิก “1” อีกครั้ง แตถาเปนขอมูล “1” อุปกรณสเลฟจะทําใหสายสัญญาณเปนลอจิก “1” ตอเนื่องไปอีก 45 ไมโครวินาที รวมเวลาทั้งหมดประมาณ 60 ถึง 120 ไมโครวินาที นั่นคือในไทมสล็อตนี้ตองใชเวลารวมไมเกิน 120 ไมโครวินาที ในขณะที่ไมโครคอนโทรลเลอรจะใชเวลาในการอานขอมูลอยูระหวาง 15 และ 60 ไมโครวินาทีหลังจากเริ่มตนไทมสล็อตนี้

Page 3: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

9

ไทมสล็อตการอานขอมูลของไมโครคอนโทรลเลอรซึ่งตรงกับสล็อตการเขียนขอมูลของอุปกรณสเลฟ

10

ไทมสล็อตการเขียนขอมูลของไมโครคอนโทรลเลอรเมื่อไมโครคอนโทรลเลอรตองการเขียนขอมูล จะเริ่มตนกระบวนการดวย

การทําใหสายสัญญาณเปนลอจิก “0” ประมาณ 1 ถึง 15 ไมโครวินาที จากนั้นทําใหสถานะของสายกลับมาเปนลอจิก “1” แลวดําเนินการเขียนขอมูลไดในทันที ถาตองการเขียนขอมูล 0 ไมโครคอนโทรลเลอรจะทําใหสายสัญญาณเปนลอจิก “0” นานประมาณ 45 ไมโครวินาที แลวทําใหสายสัญญาณกลับมาสูสภาวะลอจิก “1” อีกครั้ง แตถาตองการเขียนขอมูล “1” ไมโครคอนโทรลเลอรจะทําใหสายสัญญาณเปนลอจิก “1” ตอเนื่องไปอีก 45 ไมโครวินาที รวมเวลาทั้งหมดในไทมสล็อตนี้ประมาณ 60 ถึง 120 ไมโครวินาที

11

ไทมสล็อตการเขียนขอมูล “1” ของไมโครคอนโทรลเลอรซึ่งตรงกับไทมสล็อตการอานขอมูลของอุปกรณสเลฟ

12

ไทมสล็อตการเขียนขอมูล “0” ของไมโครคอนโทรลเลอร

Page 4: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

13

รูปแบบของการสื่อสารขอมูลแบบ 1 สายการสื่อสารขอมูลในระบบบัสหนึ่งสายไมโครคอนโทรลเลอรจะติดตอกับ

อุปกรณสเลฟไดครั้งละ 1 ตัวเทานั้น ดังนั้น อุปกรณสเลฟแตละตัวตองมีขอมูลกําหนดแอดเดรสเฉพาะตัว โดยจะเก็บไวในหนวยความจํารอมภายในอุปกรณเลฟตัวนั้นๆ โดยปกติอุปกรณสเลฟในระบบบัสหนึ่งสายนี้จะมีหนวยความจําขนาด 64 บิต หรือ 8 ไบต สําหรับเก็บขอมูลตาง ๆ ที่สําคัญของอุปกรณแตละตัว ซึ่งประกอบดวย

1. รหัสของตระกูล จํานวน 8 บิต2. เลขหมายประจําตัว (serial number) จํานวน 48 บิต3. รหัสตรวจสอบความผิดพลาด (CRC: Cyclical Redundancy Check)

จํานวน 8 บิต

14

ผูใชงานสามารถอานขอมูลประจําตัวของอุปกรณสเลฟไดดวยการใชคําสั่ง Read ROM หรือคําสั่งอานหนวยความจํารอม ในกรณีที่บนสายสัญญาณมีอุปกรณ สเลฟเพียงตัวเดียวไมจําเปนตองอางแอดเดรสในการติดตอ

รูปแบบการติดตอบนระบบบัสหนึ่งสายเริ่มตนขึ้น เมื่ออุปกรณมาสเตอรทําการรีเซตและกําหนดแอดเดรสของอุปกรณที่ทําการติดตอ ถาหากมีอุปกรณสเลฟเพียงตัวเดียวสามารถขามขั้นตอนการติดตอกับหนวยความจํารอมในอุปกรณสเลฟได เรียกวิธีการดังกลาววา การไมติดตอหนวยความจํารอม หรือ สคิปรอม (Skip ROM) จากนั้นรอการตอบรับจากอุปกรณสเลฟ เมื่อการตอบรับสมบูรณก็จะสามารถเริ่มตนขั้นตอนการอานหรือเขียนขอมูลไดตอไป

15

ไอซีวัดอุณหภูมิ DS1820 / DS18B20

สัญลักษณใน Proteus16

หัวใจสําคัญของ DS1820 อยูที่ตัวตรวจจับอุณหภูมิและหนวยความจําความเร็วสูงที่ เรียกวา สแครตซแพค (scratchpad) ขนาด 9 ไบต มีการจัดสรรหนวยความจําแสดงดังรูป

Page 5: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

17

เมื่อวัดอุณหภูมิไดก็จะนําคาที่วัดไดนี้มาเก็บไวในสแครตซแพดที่ไบต 0 และ 1 ทั้งนี้เนื่องจากไอซี DS1820 สามารถใหขอมูลของอุณหภูมิไดละเอียดถึง 16 บิต เมื่อนํามาแปลงเปนขอมูลเลขฐานสิบจึงสามารถแสดงความละเอียดของคาอุณหภูมิไดถึง 0.5 องศาเซลเซียสและ 0.9 องศาฟาเรนไฮต โดยมียานวัดอุณหภูมิ -55 ถึง +125 องศาเซลเซียสหรือ -67 ถึง +257 องศาฟาเรนไฮต โดยคาขององศาฟาเรนไฮตตองใชการแปลงหนวยเขามาชวย ใชเวลาในการแปลงคาอุณหภูมิเปนขอมูลดิจิตอลประมาณ 200 มิลลิวินาที

สามารถกําหนดขอบเขตของอุณหภูมิที่ทําการวัดได และใหแจงเตือนเมื่อคาของอุณหภูมิสูงขึ้นหรือลดต่ําลงถึงคาที่กําหนด โดยคาอุณหภูมิที่กําหนดนี้จะเก็บไวที่สแครตชแพดในไบต 2 และ 3

18

คําสั่งเพื่อควบคุมการทํางานของ DS1820ในการติดตอกับไอซี DS1820 จะมีคําสั่งที่ตองสงใหแก DS1820 เพื่อ

กําหนดรูปแบบการทํางาน คําสั่งที่ใชมากที่สุดมีดวยกัน 3 คําสั่งดังนี้1. คําสั่งไมติดตอกับหนวยความจํารอม หรือ สคิปรอม (Skip ROM)

เนื่องจากในการใชงาน DS1820 โดยปกติแลวจะมี DS1820 อยูบนสายสัญญาณเพียงตัวเดียว จึงไมจําเปนตองใชขอมูลกําหนดแอดเดรส ดังนั้น จึงไมตองติดตอกับหนวยความจํารอมเพื่ออานขอมูล ขอมูลของคําสั่งสคิปรอมที่ตองสงให DS1820 คือ 0xCC

2. คําสั่งแปลงอุณหภูมิ (Convert T) มีคาเทากับ 0x44 เมื่อสงคําสั่งนี้ให DS1820 จะตองทําการวนลูปรออยางนอย 200 มิลลิวินาที เพื่อให DS1820 ไดใชเวลานี้ในการแปลงคาอุณหภูมิเปนขอมูลดิจิตอลมาเก็บไวในสแครตชแพด

19

3. คําสั่งอานขอมูลจากสแครตชแพค (Read Scratchpad) มีคาเทากับ 0xBE เมื่อสงคําสั่งนี้ DS1820 จะทยอยสงขอมูลคาอุณหภูมิออกมาทั้งหมด 9 ไบต

โครงสรางการทํางานภายในของไอซีตรวจอุณหภูมิ DS1820

20

ไอซีวัดอุณหภูมิเบอร DS1820

Page 6: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

21

ไอซีวัดอุณหภูมิเบอร DS18B20

22

ขั้นตอนการทํางานของโปรแกรมที่ใชในการติดตอกับ DS18201. เริ่มตนดวยการสงสถานะรีเซต2. รอการตอบรับจาก DS1820 3. เมื่อมีการตอบรับแลว จะสงคําสั่ง Skip ROM โดยคาที่สงไปคือ 0xCC เพื่อขาม

การตรวจสอบรหัส CRC แลวตามดวยการสงคําสั่งให DS1820 แปลงคาอุณหภูมิมาเก็บไวที่หนวยความจําสแครตซแพดภายในตัว DS1820 โดยคาที่สงไปคือ 0x44

4. หลังจากนั้น DS1820 ตองใชเวลาในการแปลงคาของอุณหภูมิ ดังนั้น จึงตองเรียกฟงกชันหนวงเวลาเพื่อรอ DS1820 แปลงคาอุณหภูมิ ซึ่งไมควรนอยกวา 200 มิลลิวินาที

5. หลังจากหนวงเวลาแลว จะเริ่มตนใหมอีกครั้ง ดวยการสงสถานะรีเซตและรอการตอบรับ

6. หลังจาก DS1820 ตอบรับแลว ไมโครคอนโทรลเลอร จะสงคําสั่ง Skip ROM อีกครั้ง

7. สงคําสั่งอานคาอุณหภูมิจาก DS1820 โดยคาที่สงไปคือ 0xBE8. สั่งใหไมโครคอนโทรลเลอร รับขอมูลอุณหภูมิ เขามาประมวลผล

23

ตัวอยางที่ 1 การอานคาอุณหภูมิจาก DS18B20มาแสดงผลที่ Serial Monitor

R 4.7K

24

ผลการรันที่ได

Page 7: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

25

ตัวอยางที่ 2 การอานคาอุณหภูมิจาก DS18B20 1 ตัว (Proteus)

DS18B20

26

ตัวอยางผลการรันที่ได

27

ตัวอยางที่ 3 การอานคาอุณหภูมิจาก DS18B20 2 ตัว (Proteus)

28

การกําหนด ROM Serial Number ของแตละตัว

Page 8: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

29 30

ตัวอยางผลการรันที่ได

31

DHT 11Humidity and Temperature Sensor

• ยานวัดความชื้น 20-90% RH โดยมีคาความแมนยํา ±5% RH ความละเอียดในการวัด 1 % แสดงผลแบบ 8 บิต

• ยานวัดอุณหภูมิ 0 -50 องศาเซลเซียส โดยมีคาความแมนยํา ±2 องศาเซลเซียส ความละเอียดในการวัด 1 องศาเซลเซียส แสดงผลแบบ 8 บิต

• กินกระแส 0.5 - 2.5 mA (ขณะทําการวัดคา) ที่ระดับแรงดัน 3 - 5.5 VDC

• อานคาสัญญาณ (Sample Rate) ทุก 1 วินาที

32

การตอใชงาน

ในการตอวัด จะตองใช Pull up resistor ขนาด 5k ohm โดยตอไวกับแหลงจายแรงดันและตอเขาไปที่ขา DATA โดยมีการตอขาใชงานดังนี้

Pin 1 ตอกับ VDD (ไฟเลี้ยง 3-5.5 VDC)Pin 2 ตอเปนขา DATAPin 3 ไมไดใชPin 4 ลงกราวด

Page 9: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

33

การสื่อสารขอมูลระหวาง DHT11 กับไมโครคอนโทรลเลอร (MCU) จะใชการสื่อสารขอมูลแบบ OneWire ที่เรียกวา วิธี Single-wire Two-way Serial interface ซึ่งเปนการสื่อสารอนุกรมสองทางโดยใชสายเสนเดียว โดยในที่นี้จะเรียก MCU วา Master และเรียก DHT11 วา Slave โดยจะมี Pull up resistor ทําหนาที่คงระดับแรงดันของสัญญาณในสาย Data ใหเปนแรงดันระดับสูง ในสภาวะที่ไมมีการสื่อสารขอมูล และจะมีแรงดันระดับต่ํา เมื่อมีอุปกรณ (จะเปน Master หรือ Slave ก็ได) ดึงสัญญาณลงในระดับต่ํา

ในการสื่อสารโดยใชสายเสนเดียวนั้น จําเปนตองใชโปรโตคอลที่ตกลงกันไวระหวางตัว MCU และ Slave ซึ่งการสื่อสารขอมูลระหวาง MCU กับ DHT11 มี 3 ขั้นตอนดังตอไปนี้

1. Request (Master จะเริ่มตนการติดตอสื่อสาร โดยรองขอการอานขอมูลไปยัง Slave)2. Response (Slave ตอบสนองการรองขอจาก Master)3. Data Reading (Master อานขอมูลจาก Slave 40 bit)

34

1. Request อันดับแรก Master (MCU) จะสง Start signal ที่เปนแรงดันระดับต่ํา อยาง

นอย 18 ms ไปที่ Slave เพื่อให Slave เขาใจวากําลังจะเริ่มการติดตอสื่อสาร และเปนการรองขอการอานขอมูลจาก Slave แลวรอไป 20-40 μs ดวยแรงดันระดับสูง เพื่อรอให Slave ตอบกลับ

MasterSlave

35

2. Responseเพื่อให Master รูวา Slave พรอมที่จะติดตอสื่อสารดวย ซึ่งถือวาเปนการ

ตอบสนองการรองขอจาก Master ในขั้นตอนนี้ Slave จะสงแรงดันระดับกลับไปนาน 80 μs จากนั้นจะรออีก 80 μs ดวยแรงดันระดับสูง กอนที่จะเริ่มสงขอมูลบิตแรกใหกับ Master

3. Data Reading ในขั้นตอนนี้ Master จะไดรับขอมูลจาก Slave จํานวน 40 บิต โดยสามารถ

ระบุไดวาเปนลอจิก 0 หรือ ลอจิก 1 ไดดังนี้- การสงบิตลอจิก 0 ตัว Slave จะดึงระดับแรงดันลงต่ํานาน50 μs และ

ปลอยใหเปนระดับแรงดันสูงนาน 26-28 μs (เรียกวาชวง Sending 0) - การสงบิตลอจิก 1 ตัว Slave จะดึงระดับแรงดันลงต่ํานาน 50 μs และ

ปลอยใหเปนระดับแรงดันสูงนาน 70 μs (เรียกวาชวง Sending 1) และเมื่อสงครบ 40 บิต แลว ระดับแรงดันในสาย Data จะเปนระดับ

แรงดันสูงตอไป36

ขอมูล 40 บิต จาก Slave (5x8 บิต) มีรูปแบบดังตอไปนี้

คาจํานวนเต็ม RH คาทศนิยม RH คาจํานวนเต็ม T คาทศนิยม T Check sum8 bit 8 bit 8 bit 8 bit 8 bit

ความชื้น หนวย %RH อุณหภูมิ หนวย oC

Part A Part B Part C Part D Part E

Check sum ใชสําหรับตรวจสอบความถูกตองในการสงขอมูลCheck sum = Part E = Part A + Part B + Part C + Part D

Page 10: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

37

ตัวอยางที่ 1 ขอมูล 40 บิต จาก Slave

0011 0101 0000 0000 0001 1000 0000 0000 0100 1101คาจํานวนเต็ม RH คาทศนิยม RH คาจํานวนเต็ม T คาทศนิยม T Check sum

ตรวจสอบความถูกตองของขอมูลที่ไดรับ0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100 1101Check sum 0100 1101 ตรง กับที่คํานวณได 0100 1101 แสดงวาขอมูลที่รับมา มีความถูกตอง

โดยคาความชื้นและอุณหภูมิที่ไดมีคาดังนี้ความชื้น = 0011 0101 = 53 %RHอุณหภูมิ = 0001 1000 = 24 oC

38

ตัวอยางที่ 2 ขอมูล 40 บิต จาก Slave

0011 0101 0000 0000 0001 1000 0000 0000 0100 1001คาจํานวนเต็ม RH คาทศนิยม RH คาจํานวนเต็ม T คาทศนิยม T Check sum

ตรวจสอบความถูกตองของขอมูลที่ไดรับ0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100 1101Check sum 0100 1001 ไมตรง กับที่คํานวณได 0100 1101 แสดงวาขอมูลที่รับมา ไมถูกตอง

โดยตองมีการอานคาใหมอีกครั้งหนึ่ง

39

การเชื่อมตอ DHT11 กับ Arduino

40

ตัวอยางที่ 4 การอานคาจาก DHT11มาแสดงผลที่ Serial Monitor

Page 11: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

41

ผลการรันที่ได

42

ตัวอยางผลการรันที่ไดในกรณีที่ DHT11 ไมไดตออยูกับ Arduino

43

ตัวอยางที่ 5 การอานคาจาก DHT11มาแสดงผลที่ VB

44

โคดสําหรับ Arduino

Page 12: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

45

โคดสําหรับ GUI

46

ผลการรันที่ได

47

ตัวอยางที่ 6 การสงคาจาก DHT11 มาแสดงผลที่ VB แบบคั่นดวยเครื่องหมาย , และนําหนาดวยตัวอักษร

48

Page 13: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

• ตัวเลข– จํานวนเต็ม (Short, Integer, Long)– ทศนิยม (Single, Double, Decimal)

• ตัวอักษร– ตัวอักษรตัวเดียว (Char)– ชุดตัวอักษร หรือ ขอความ (String)

• ลอจิก– มี 2 คา คือ จริง กับ เท็จ (Boolean)

49

ชนิดของขอมูลใน VB ชนิดของขอมูลใน VB (ตอ)

50

ชนิดของขอมูล ขนาด (ไบต) คําอธิบาย

Boolean 2 เก็บคาแบบบูลีน หรือ ลอจิกเปนคา จริง หรือ เท็จ

Char 2 เก็บรหัส Unicode ของตัวอักขระ

Short 2 เก็บเลขจํานวนเต็มคาระหวาง -32768 ถึง 32767

Integer 4 เก็บเลขจํานวนเต็ม ขนาด 4 ไบต แบบคิดเครื่องหมาย

Uinteger 4 เก็บเลขจํานวนเต็ม ขนาด 4 ไบต แบบไมคิดเครื่องหมาย

51

ชนิดของขอมูล ขนาด (ไบต) คําอธิบาย

Long 8 เก็บเลขจํานวนเต็ม ขนาด 8 ไบต แบบคิดเครื่องหมาย

Ulong 8 เก็บเลขจํานวนเต็ม ขนาด 8 ไบต แบบไมคิดเครื่องหมาย

Single 4 เก็บเลขทดศนิยมความละเอียดต่ําDouble 8 เก็บเลขทดศนิยมความละเอียดสูงDecimal 16 เก็บเลขทดศนิยมขนาดใหญมาก

ชนิดของขอมูลใน VB (ตอ)

52

ชนิดของขอมูล ขนาด (ไบต) คําอธิบาย

String 2 ไบตตอตัวอักษร

เก็บขอความที่เปนชุดตัวอักษร

Date 8 เก็บขอมูลเกี่ยวกับวัน เดือน และปObject 4 เก็บออบเจกตของขอมูลใดๆ

ชนิดของขอมูลใน VB (ตอ)

Page 14: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

การเปลี่ยนชนิดของขอมูลใน VB• ใน VB มีชนิดขอมูลมากมาย• การทํางานสวนใหญจะตองทํางานกับขอมูลชนิดเดียวกันเทานั้น• การรับขอมูลเขาในตัวแปรของ VB สวนใหญจะเปนสตริง (ขอความ)• ถาตองการนําสตริง (ขอความ) ไปคํานวณหรือประมวลผลจะตองเปลี่ยนสตริงให

เปนขอมูลประเภทที่ตองการกอน

53

การเปลี่ยนชนิดของขอมูลใน VB• วิธีการแปลงชนิดขอมูลมีดังตอไปนี้– Implicit Conversion– Data Type Conversion Function– คลาส Convert– ฟงกชัน CType– เมธอด TryParse– ฟงกชัน Val

54

การแปลงชนิดขอมูลดวย Implicit Conversion• เปนการกําหนดคาผานทาง Assignment Operator โดยตรง• วิธีนี้ทําไดโดยการเขียนลงไปในคําสั่งโดยตรง• เชน การนําขอมูลชนิด Byte กับชนิด Byte มาบวกกันแลวนําไปเก็บไวในตัวแปรที่

เปนชนิด Integer• การแปลงจะถูกตองเมื่อแปลงขอมูลชนิดเล็กไปเก็บไวในชนิดที่เทากันหรือใหญ

กวา• ถาแปลงขอมูลชนิดใหญไปเก็บไวในชนิดที่เล็กกวา จะเกิดการผิดพลาดของขอมูล

ที่เก็บได

55

การแปลงชนิดขอมูลดวย Data Type Conversion Function• เปนการนําฟงกชันที่ VB เตรียมไวใหมาใชสําหรับแปลงขอมูลชนิดตาง ๆ ใหเปน

ขอมูลชนิดที่ตองการ โดยีรูปแบบการใชงานดังนี้

Var = FuncName(expression)

โดยที่ Var เปนตัวแปรสําหรับรับผลที่ไดจากการแปลง FuncName เปนชื่อฟงกชันที่ใชแปลง expression เปนชนิดขอมูลที่ตองการแปลง

56

Page 15: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

57

ชื่อฟงกชัน ไปเปนขอมูลชนิด ตัวอยางการใชงาน ผลลัพธCBool Boolean CBool(“True”) TrueCByte Byte Cbyte(“234.123”) 234CInt Integer Cint(“3000.457”) 3000CLng Long CLng(“10000000”) 10000000CDec Decimal CDec(“4598.8976”) 4598.8976

ตัวอยางฟงกชันที่ใชเปลี่ยนขอมูลสตริงไปเปนขอมูลชนดิอื่นๆ

58

ชื่อฟงกชัน ไปเปนขอมูลชนิด ตัวอยางการใชงาน ผลลัพธCSng Single CSng(“10000.7117”) 10000.71CDbl Double CDbl(“10000.7117”) 10000.7117Cdate Date CDate(“7 Jan 2011”) 7/1/2011 0:00:00Cstr String CStr(“975.7773”) “975.7773”

ตัวอยางฟงกชันที่ใชเปลี่ยนขอมูลสตริงไปเปนขอมูลชนดิอื่นๆ (ตอ)

การแปลงชนิดขอมูลดวยคลาส Convert• ตัวอยางของชนิดขอมูลที่สามารถเปลี่ยนไดมีดังตอไปนี้– เปลี่ยนขอมูลจาก Char ไปเปน Integer, Long, String, Object– เปลี่ยนขอมูลจาก Byte, Integer, Long, String ไปเปน Char– เปลี่ยนขอมูลจาก Boolean ไปเปน Byte, Char, Integer, Long, String, Object – เปลี่ยนขอมูลจาก Byte, Short, Integer, Long, String ไปเปน Boolean– เปนชนิดขอมูลระหวาง DateTime กับ String– เปนชนิดขอมูลระหวาง Numeric (Single กับ Double) กับ String

59

เมธอดที่สําคัญของคลาส Convert• ChangType ใชเปลี่ยนคาไปเปนชนิดขอมูลที่ตองการ

เชนDim x As Integer, y As Stringy = Convert.ChangType(x,TypeCode.String)

• GetTypeCode ใชสําหรับตรวจสอบวาตัวแปรที่ใชอยูนี้เปนขอมูลชนิดใด

60

Page 16: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

เมธอดที่สําคัญของคลาส Convert (ตอ)• ToBoolean ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Boolean

เชนDim x As Integer, y As Booleany = Convert.ToBoolean(x)

• ToByte ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Bytey = Convert.ToByte(x)

61

เมธอดที่สําคัญของคลาส Convert (ตอ)• ToChar ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Char

y = Convert.ToChar(x)

• ToDateTime ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด DateTimey = Convert.ToDateTime(x)

• ToDecimal ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Decimaly = Convert.ToDecimal(x)

62

เมธอดที่สําคัญของคลาส Convert (ตอ)• ToDouble ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Double

y = Convert.ToDouble(x)

• ToInt16 ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิดจํานวนเต็ม 16 บิต หรือ Shorty = Convert.ToInt16(x)

• ToInt32 ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิดจํานวนเต็ม 32 บิต หรือ Integery = Convert.ToInt32(x)

63

เมธอดที่สําคัญของคลาส Convert (ตอ)• ToInt64 ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิดจํานวนเต็ม 64 บิต หรือ Long

y = Convert.ToDouble(x)

• ToSingle ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Singley = Convert.ToSingle(x)

• ToString ใชเปลี่ยนคาที่กําหนดไปเปนขอมูลชนิด Stringy = Convert.ToString(x)

64

Page 17: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

65

การแปลงชนิดขอมูลดวยฟงกชัน CType• จะระบุบชนิดของมูลที่ตองการแปลง โดยมีรูปแบบการใชงานดังนี้

Varname = CType(value,NewType)

โดยที่ VarName เปนตัวแปรสําหรับรับผลที่ไดจากการแปลง value เปนตัวแปรหรือขอมูลที่ตองการแปลง NewType เปนชนิดขอมูลใหมที่ตองการ

• เชนdataInteger = CType(dataDouble,Integer)

66

การแปลงชนิดขอมูลดวยเมธอด TryParse• จะแปลงขอมูลชนิดขอความใหเปนตัวเลขที่สามารถคํานวณได โดยมีรูปแบบการ

ใชงานดังนี้

dataType.TryParse(string,variable)

โดยที่ dataType เปนชนิดขอมูลประเภทตัวเลข string เปนขอความที่ตองการแปลง variable เปนชื่อตัวแปรที่จะนํามาใชเก็บขอมูล

ซึ่งเปนขอมูลชนิดเดียวกับ dataType

67

String (ขอความ) Double.TryParse Decimal.TryParse Integer.TryParse“62” 62 62 62“-9” -9 -9 -9

“12.55” 12.55 12.55 0“$5” 0 0 0“7%” 0 0 0

“122a” 0 0 0“1 345” 0 0 0

“ 1” (ขอความวาง) 0 0 0

ตัวอยางการใชงานเมธอด TryParse

68

การแปลงชนิดขอมูลดวยฟงกชัน Val• จะแปลงขอมูลชนิดขอความใหเปนตัวเลข

ตัวอยางการใชงานฟงกชัน Val ผลลัพธตัวเลขVal(“456”) 456

Val(“24,500”) 24Val(“123X”) 123Val(“25%”) 25

Val(“ 12 34 ”) 1234Val(“$56.88”) 0

Val(“Abc”) 0Val(“ “) 0

Page 18: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

69

การคํานวณทางคณิตศาสตรดวยคลาส Math

ชื่อ คําอธิบาย ตัวอยาง ผลลัพธAbs หาคาสัมบูรณของ

จํานวนที่กําหนดMath.Abs(-4) 4

Acos หาคามุม Cosine ของจํานวนที่กําหนด

Math.Acos(1) 0

Asin หาคามุม Sine ของจํานวนที่กําหนด

Math.Asin(1) 1.5708 (90 องศา)

Atan หาคามุม Tangent ของจํานวนที่กําหนด

Math.Atan(0.5) 0.4636

70

การคํานวณทางคณิตศาสตรดวยคลาส Math (ตอ)ชื่อ คําอธิบาย ตัวอยาง ผลลัพธ

Atan2 หาคามุม Tangent ของผลหารจํานวนทั้งสอง

Math.Atan2(1,2) 0.4636

Ceiling หาคาจํานวนเต็มนอยที่สุดที่มากกวาหรือเทากับจํานวนที่กําหนด

Math.Ceiling(4.2) 5

Cos หาคา Cosine ของมุมที่กําหนด

Math.Cos(0) 1

Cosh หาคา Hyperbolic Cosine ของมุมที่กําหนด

Math.Cosh(1) 1.543

71

การคํานวณทางคณิตศาสตรดวยคลาส Math (ตอ)ชื่อ คําอธิบาย ตัวอยาง ผลลัพธ

Exp หาคา e ยกกําลังตามจํานวนที่กําหนด

Math.Exp(1) 2.71828

Floor หาคาจํานวนเต็มที่มากที่สุดที่นอยกวาหรือเทากับคาที่กําหนด

Math.Floor(4.2) 4

IEEERemainder หาคาเศษจากการหารจํานวนทั้งสอง

IEEERemainder(10,3) 1

Log หาคาลอการิทึมฐาน e ของจํานวนที่กําหนด

Math.Log(10) 2.3026

72

การคํานวณทางคณิตศาสตรดวยคลาส Math (ตอ)

ชื่อ คําอธิบาย ตัวอยาง ผลลัพธLog10 หาคาลอการิทึมฐาน 10

ของจํานวนที่กําหนดMath.Log10(100) 2

Max หาคาสูงสุดของคาทั้งสอง

Math.Max(5,4) 5

Min หาคาต่ําสุดของคาทั้งสอง

Math.Min(5,4) 4

Pow หาคายกกําลัง Math.Pow(2,3) 8

Page 19: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

73

การคํานวณทางคณิตศาสตรดวยคลาส Math (ตอ)

ชื่อ คําอธิบาย ตัวอยาง ผลลัพธRound หาคาปดเศษ Math.Round(2.11) 2

Sign หาเครื่องหมายหนาจํานวนที่กําหนด

Math.Sign(-4) -1

Sin หาคา Sine ของมุมที่กําหนด

Math.Sin(1.5708) 0.9999

Sinh หาคา Hyperbolic Sine ของมุมที่กําหนด

Math.Sinh(1) 1.1752

74

การคํานวณทางคณิตศาสตรดวยคลาส Math (ตอ)

ชื่อ คําอธิบาย ตัวอยาง ผลลัพธSqrt หาคารากที่สองของคาที่

กําหนดMath.Sqrt(9) 3

Tan หาคา Tangent ของมุมที่กําหนด

Math.Tan(0) 0

75

ฟงกชันที่ทํางานกับ Stringชื่อ คําอธิบาย ตัวอยาง ผลลัพธ

Len หาจํานวนตัวอักษรในสตริง Len(“AAA”) 3InStr หาวาสตริงนี้มีอยูในอีกสตริง

หนึ่งหรือไมถาไมมีคืนคา 0 ถามีคืนคาตําแหนงที่พบสตริง

Instr(“Hello World”, “World”) 7

Mid หาคาสตริงตามตําแหนงและความยาวที่กํานหด

Mid(“Hello World”,7,5) “World”

UCase เปลี่ยนใหเปนตัวอักษรตัวใหญ UCase(“Hello”) “HELLO”LCase เปลี่ยนใหเปนตัวอักษรตัวเล็ก LCase(“Hello”) “hello”

76

ฟงกชันที่ทํางานกับ Stringชื่อ คําอธิบาย ตัวอยาง ผลลัพธ

LTrim เอาชองวางดานซายของสตริงออก LTrim(“ Hello ”) “Hello ”RTrim เอาชองวางดานขวาของสตริงออก RTrim(“ Hello ”) “ Hello”Trim เอาชองวางทั้งซายและขวาของสตริงออก Trim(“ Hello ”) “Hello”Asc เปลี่ยนตัวอักขระเปนรหัส ASCII Asc(“A”) 65Chr เปนรหัส ASCII เปนตัวอักขระ Chr(65) “A”Space สรางอักขระชองวางตามจํานวนที่กําหนด Space(5) “ “

Page 20: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

77

การทํางานกับขอความดวยคลาส String• เมธอดที่สําคัญของคลาส String• เมธอดแบบนี้จะเปน Share Method โดยผูใชไมจําเปนตองสรางออบเจ็กตขึ้นมา แต

ก็สามารถใชงานไดทันที • มีรูปแบบตอไปนี้

String.<ชื่อเมธอด>• เมธอดตางๆ ที่สําคัญมีดังตอไปนี้

Compare ConcatCopy Join

78

Compare• ทําหนาที่เปรียบเทียบคาสตริงทั้งสองคา • ตัวอยางเชน

String.Compare(“A”, “B”) จะไดผลลัพธเปน -1 เนื่องจาก “A” นอยกวา “B”String.Compare(“C”, “B”) จะไดผลลัพธเปน 1 เนื่องจาก “C” มากกวา “B”String.Compare(“A”, “A”) จะไดผลลัพธเปน 0 เนื่องจาก “A” เทากับ “A”

79

ตาราง ASCII Code

80

Concat• ทําหนาที่เชื่อมตอสตริงเขาดวยกัน • ตัวอยางเชน

Dim MyString As String = “Hello”Dim YourString As String = “World!”String.Concat(MyString, “ “, YourString)จะไดคําวา “Hello World!”

Page 21: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

81

Copy• ทําหนาที่คัดลอกคาสตริงตัวหนึ่งไปไวในสตริงอีกตัวหนึ่ง• ตัวอยางเชน

Dim MyString As String = “Hello”Dim YourString As StringYourString = String.Copy(MyString)คาในตัวแปร YourString จะมีคาเปน “Hello”

82

Join• ทําหนาที่เชื่อมตอสตริงในอารเรย และคั่นสตริงแตละตัวดวยตัวอักษรที่กําหนด• ตัวอยางเชน

Dim MyString As String() = {“Hello”,”and”,”welcome”,”to”,”my”,”world!”}String.Join(“ “,MyString)ผลที่ไดคือ “Hello and welcome to my world!”

83

• คุณสมบัติที่สําคัญของออบเจ็กต String• การใชคุณสมบัติประเภทนี้เราจะตองสรางออบเจ็กต String ขึ้นมากอนจึงจะใชงาน

ได • ในคลาสนี้มีคุณสมบัติที่นาสนใจดังนี้

CharLength

84

Char• ทําหนาที่แสดงตัวอักษรในตําแหนงที่กําหนด• ตัวอยางเชน

Dim MyString As String = “Hello World”MyString.Chars(1)ผลที่ไดคือ “e” เพราะอยูในตําแหนงชองเบอร 1 (การนับจะเริ่มนับจากชองเบอร 0 เปนตนไป)

Page 22: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

85

Length• ทําหนาที่นับจํานวนตัวอักษรในสตริง • ตัวอยางเชน

Dim MyString As String = “Hello World”MyString.Lengthผลที่ไดคือ 11 มาจาก Hello 5 ตัว ชองวาง 1 ตัว และ World 5 ตัว รวมเปน 11 ตัวอักษร

86

• เมธอดที่สําคัญของออบเจ็กต String• เมื่อสรางออบเจ็กตของ String ขึ้นมาแลว สามารถนําเมธอดของออบเจ็กตนี้มา

ใชได• เมธอดที่นาสนใจดังนี้

CompareTo PadLeft Split TrimStartStartsWith PadRight SubstringEndsWith Insert ToLowerEquals Remove ToUpperIndexOf Replace TrimLastIndexOf Split TrimEnd

87

CompareTo• ทําหนาที่เปรียบเทียบคาของสตริง 2 ตัว ผลลัพธที่ไดกลับมาจะเหมือนกับเมธอด

Compare• ตัวอยางเชน

Dim MyString As String = “Hello World!”Dim OtherString As String = “Hello Cruel World!”MyString.CompareTo(OtherString)ผลที่ไดคือ 1 เนื่องจากคําวา “Hello World!” มากกวาคําวา “Hello Cruel World!” เพราะเมื่อเปรียบเทียบทีละตัวมาจนถึงตัว W จะพบวามากกวาตัว C

88

StartsWith• ทําหนาที่ตรวจสอบวาสตริงที่เราคนหา เริ่มตนดวยสตริงที่กําหนดหรือไม• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.StartsWith(“Hello”)ผลที่ไดคือ True

Page 23: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

89

EndsWith• ทําหนาที่ตรวจสอบวาสตริงที่เราคนหา ลงทายดวยสตริงที่กําหนดหรือไม• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.EndsWith(“Hello”)ผลที่ไดคือ False

90

Equals• ทําหนาที่เปรียบเทียบวาคาสตริงทั้งสองเทากันหรือไม• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.Equals(“Hello World!”)ผลที่ไดคือ True

91

IndexOf• ทําหนาที่หาตําแหนงของสตริงที่เราคนหา ถาไมพบจะคืนคา -1 แตถาพบจะแสดง

ตําแหนงของสตริงนั้นออกมา• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.IndexOf(“l”)ผลที่ไดคือ 2โดยจะคนหาจากซายไปขวา (เอาตัวแรกที่เจอ)

92

LastIndexOf• ทําหนาที่หาตําแหนงสุดทายที่พบสตริง ถาไมพบจะคืนคา -1 แตถาพบจะแสดง

ตําแหนงของสตริงนั้นออกมา• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.LastIndexOf(“l”)ผลที่ไดคือ 9โดยจะคนหาจากขวาไปซาย (เอาตัวแรกที่เจอ)

Page 24: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

93

PadLeft• ทําหนาที่ใสตัวอักขระทางดานซายของสตริง เพื่อใหสตริงนั้นมีจํานวนอักขระครบ

ตามที่เราตองการ• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.PadLeft (20,“#”)ผลที่ไดคือ “########Hello World!”รวมแลวมีทั้งหมด 20 ตัวอักษร

94

PadRight• ทําหนาที่ใสตัวอักขระทางดานขวาของสตริง เพื่อใหสตริงนั้นมีจํานวนอักขระครบ

ตามที่เราตองการ• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.PadRight (20,“#”)ผลที่ไดคือ “Hello World!########”รวมแลวมีทั้งหมด 20 ตัวอักษร

95

Insert• ทําหนาที่แทรกสตริงไปยังตําแหนงอินเด็กซที่เรากําหนด• ตัวอยางเชน

Dim MyString As String = “Once a time”MyString.Insert (4,“ upon”)ผลที่ไดคือ “Once upon a time”

96

Remove• ทําหนาที่ลบสตริงตามตําแหนงที่กําหนดและจํานวนที่กําหนด• ตัวอยางเชน

Dim MyString As String = “Hello Beautiful World!”MyString.Remove (5,10)ผลที่ไดคือ “Hello World!”

Page 25: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

97

Replace• ทําหนาที่แทนที่สตริงดวยขอความสตริงตัวใหมที่กําหนด• ตัวอยางเชน

Dim MyString As String = “Hello Good World!”MyString.Replace (“Good”,”Beautiful”)ผลที่ไดคือ “Hello Beautiful World!”

98

Split• ทําหนาที่แยกสตริงออกเปนสวนยอยๆ แลวเก็บไวในอารเรยแบบสตริง โดยการ

แยกจะแยกตามอักขระที่กําหนด• ตัวอยางเชน

Dim str As String = “AAA,BBB,CCC”Dim out() As Stringout = str.Split(“,”)ผลที่ไดคือ out(0) = “AAA”

out(1) = “BBB”out(2) = “CCC”

99

Substring• ทําหนาที่แสดงสตริงตําแหนงที่ตองการและตามจํานวนที่กําหนด• ตัวอยางเชน

Dim str As String = “Visual Basic”str.Substring(0,3)ผลที่ไดคือ “Vis”

100

ToLower• ทําหนาที่แปลงตัวอักขระในสตริงทั้งหมดใหเปนตัวพิมพเล็ก• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.ToLower()ผลที่ไดคือ “hello world!”

Page 26: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

101

ToUpper• ทําหนาที่แปลงตัวอักขระในสตริงทั้งหมดใหเปนตัวพิมพใหญ• ตัวอยางเชน

Dim MyString As String = “Hello World!”MyString.ToUpper()ผลที่ไดคือ “HELLO WORLD!”

102

Trim• ทําหนาที่ลบชองวางทางซายและขวาของสตริงออก• ตัวอยางเชน

Dim MyString As String = “ Big “MyString.Trim()ผลที่ไดคือ “Big”

103

TrimEnd• ทําหนาที่ลบชองวางทางขวาของสตริงออก• ตัวอยางเชน

Dim MyString As String = “ Big “MyString.TrimEnd()ผลที่ไดคือ “ Big”

104

TrimStart• ทําหนาที่ลบชองวางทางซายของสตริงออก• ตัวอยางเชน

Dim MyString As String = “ Big “MyString.TrimStart()ผลที่ไดคือ “Big “

Page 27: เอกสารประกอบการเรียนการสอน · 2017-03-20 · เอกสารประกอบการเรียนการสอน •

105

เอกสารอางอิง• http://www.thaieasyelec.com/• http://www.arduitronics.com/• http://www.myarduino.net/• http://www.arduino.org/• https://www.arduino.cc/• ประจิน พลังสันติกุล, พื้นฐานภาษา C สําหรับ Arduino, กรุงเทพ: แอพซอฟตเทค, 2553• Basic Electronic + Arduino (Pre-Lab) Workshop for Cpre, หองปฏิบัติระบบสมองกลฝงตัว

(Embedded Syatem Lab) ภาควิชาวิศวกรรมไฟฟาและคอมพิวเตอร คณะวิศวกรรมศาสตร มจพ. 12 ตุลาคม 2557

• เรียนรูการใชงาน Arduino เบื้องตน, ชมรม MAKER SPACE PSRU ศูนยเทคโนโลยีสารสนเทศ มหาวิทยาลัยราชภัฏพิบูลสงคราม

• Julien Bayle, C Programming for Arduino, PACKT publishing• สมชาย เบียนสูงเนิน, สรางและพัฒนาอุปกรณดวยไมโครคอนโทรลเลอร,กรุงเทพ: ทริปเพิ้ล เอ็ด

ดูเคชั่น, 2557• ธีรวัฒน ประกอบผล. การเขียนแอพพลิเคชันดวย Visual Basic 2010 ฉบับสมบูรณ. พิมพครั้งที่ 4.

กรุงเทพฯ: รีไววา, 2557.