i-duino starter kit manual

40
Arduino 1 Arduino (www.arduino.cc) เปนโครงการระบบสมองกลฝงตัวแบบเปดเผยซอรส ทั้งสวนของ ฮารดแวรและซอฟตแวรที่ใชในการเขียนโปรแกรม พรอมทั้งมีไลบรารีสําหรับติดตอกับฮารดแวรได หลากหลาย ทําให ผูใชงาน Arduino ไมจําเปนตองมีความรูดานฮารดแวรมากนักก็สามารถเขียน โปรแกรมควบคุมอุปกรณตางๆ ได นอกจากนี้ยังมีนักพัฒนาจากทั่วโลกรวมกันพัฒนาไลบรารีเพิ่ม เติม ทําให Arduino มีความสามารถเพิ่มมากขึ้น จากตัวฮารดแวรของ Arduino ที่เปดกวาง ทําใหมีบริษัทตางๆ จากทั่วโลก ไดพัฒนาแผงวงจร Arduino เพิ่มเติมเปนรุนตางๆ รวมถึงแผงวงจร i-Duino UNO จากบริษัท อินโนเวตีฟ เอ็กเพอริเมนต จํากัด ซึ่งมีการทํางานตรงกับฮารดแวร Arduino UNO ทําใหนักพัฒนาสามารถทดลองฮารดแวรของ Arduino ไดจริงจัง รูปที่ 1-1 อุปกรณในชุด i-Duino Starter kit

Upload: innovative-experiment-coltd

Post on 27-Jul-2016

251 views

Category:

Documents


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: i-duino Starter kit manual

Arduino1

Arduino (www.arduino.cc) เป นโครงการระบบสมองกลฝ งต ัวแบบเป ดเผยซอร ส ทั ้งส วนของฮาร ดแวร และซอฟต แวร ที ่ใช ในการเขี ยนโปรแกรม พร อมทั้ งม ีไลบรารี ส ําหรั บติ ดต อกั บฮาร ดแวร ได หลากหลาย ทํ าให ผู ใช งาน Arduino ไม จํ าเป นต องมี ความรู ด านฮาร ดแวร มากนั กก็ สามารถเขี ยนโปรแกรมควบคุ มอุ ปกรณ ต างๆ ได นอกจากนี้ ยั งมี นั กพั ฒนาจากทั่ วโลกร วมกั นพั ฒนาไลบรารี เพิ่ มเติ ม ทํ าให Arduino มี ความสามารถเพิ่ มมากขึ้ น

จากตั วฮาร ดแวร ของ Arduino ที่ เป ดกว าง ทํ าให มี บริ ษั ทต างๆ จากทั่ วโลก ได พั ฒนาแผงวงจรArduino เพิ่ มเติ มเป นรุ นต างๆ รวมถึ งแผงวงจร i-Duino UNO จากบริ ษั ท อิ นโนเวตี ฟ เอ็ กเพอริ เมนต จํ ากั ด ซึ่ งมี การทํ างานตรงกั บฮาร ดแวร Arduino UNO ทํ าให นั กพั ฒนาสามารถทดลองฮาร ดแวร ของArduino ได จริ งจั ง

ร ูปที ่ 1-1 อ ุปกรณ ในช ุด i-Duino Starter kit

Page 2: i-duino Starter kit manual

2 Arduino

i-Duino Starter kit ค ือ ชุ ดเรี ยนรู ไมโครคอนโทรลเลอร อย างง ายก ับ Arduino ช ุดเริ ่มต นเร ียนรู นี ้จ ัดอ ุปกรณ ที ่จ ําเป นส ําหร ับการเริ ่มต นทดลองต ิดต อก ับอ ุปกรณ ภายนอกแบบต างๆ อาท ิ สว ิตช ต ัวต านทานปร ับค าได ต ัวตรวจจ ับ โมด ูลแสดงผล LCD เป นต น ประกอบด วย

1. แผงวงจร i-Duino UNO

2. LCD-IO Shield แผงวงจรโมดู ล LCD และอุ ปกรณ อิ นพุ ตอเนกประสงค

3. ZX-LDR แผงวงจรตรวจจั บแสง

4. ZX-SLED3C แผงวงจร LED สี RGB แบบโปรแกรมได

5. MCP9701 ไอซี วั ดอุ ณหภ ูมิ พร อมสายต อ

6. สาย miniB-USB

ร ูปที ่ 1 ส วนประกอบที ่สํ าค ัญของ i-Duino UNO แผงวงจรไมโครคอนโทรลเลอร สํ าหร ับการเร ียนรู

Page 3: i-duino Starter kit manual

Arduino3

1.1 แผงวงจรไมโครคอนโทรลเลอร i-Duino UNO

1.1.1 ภาพรวมทางฮาร ดแวร

i-Duino UNO ค ือแผงวงจรสํ าหร ับทดลองและใช งานไมโครคอนโทรลเลอร Arduino ที ่เข าก ันได กั บ Arduino UNO ราคาประหยั ด และมาพร อมกั บอุ ปกรณ คุ ณภาพสู ง บรรจุ วงจรภาคจ ายไฟแบบสวิ ตชิ ่งที่ มี เสถี ยรภาพ มี สวิ ตช เพื่ อเลื อกใช ไฟเลี้ ยงทั้ ง +5V และ +3.3V ทํ าให บอร ด i-Duino UNO เป นแผงวงจรArduino UNO compatible ในไม กี ่รุ นในโลกที่ รองร ับไฟเลี ้ยงทั้ งสองระบบ

ในรู ปที่ 1-1 แสดงส วนประกอบต างๆ ของแผงวงจร i-Duino UNO ซึ่ งเข ากั นได กั บ ArduinoUNO R3 โดยใน i-Dunino UNO ได เพิ่ มเติ มจุ ดต อพอร ตอิ นพุ ตเอาต พุ ตทั้ งหมดในรู ปแบบที่ มี การจั ดขาเหมื อนจุ ดต อเซอร โวมอเตอร และสวิ ตช เพื่ อเลื อกระบบไฟเลี้ ยง ส งผลให แผงวงจร i-Duino UNOมี ความพร อมสํ าหร ับการเร ียนรู และใช งานไมโครคอนโทรลเลอร เป นอย างดี

คุ ณสมบั ติ ทางเทคนิ คที่ สํ าคั ญมี ดั งนี้

ใช ไมโครคอนโทรลเลอร 8 บิ ตเบอร ATmega328 ของ Atmel รองรั บโปรแกรมควบคุ มที่ พั ฒนาจากภาษาแอสเซมบลี , เบสิ ก และ C โดยในที่ นี้ จะเน นไปที่ โปรแกรมภาษา C/C++ โดยภายในมี โมด ูลแปลงสั ญญาณอะนาลอกเป นดิ จิ ตอล ความละเอ ียด 10 บิ ต ให ค าของข อมู ลในช วง 0 ถึ ง 1,023จึ งนํ ามาต อกั บแผงวงจรตรวจจั บที่ ให ผลการทํ างานเป นแรงดั นไฟฟ าได ง าย มี หน วยความจํ าโปรแกรมแบบแฟลช 32 กิ โลไบต โปรแกรมใหม ได 10,000 ครั ้ง ม ีหน วยความจํ าข อมู ลอี อี พรอม 512ไบต และหน วยความจํ าข อมู ลแรม 1 กิ โลไบต

สั ญญาณนาฬิ กาหลั ก 16MHz จากคริ สตอล

มี จุ ดต อพอร ต USB สํ าหรั บดาวน โหลดโปรแกรมและสื่ อสารข อมู ลกั บคอมพิ วเตอร

มี สวิ ตช RESET การทํ างาน

มี จุ ดต อพอร ตตามาตรฐานของ Arduino UNO และจุ ดต อแบบ IDC 3 ขา (ขาสั ญญาณ, ไฟเลี้ ยง และกราวด ) รวม 14 จุ ด แบ งเป นขาพอร ตดิ จิ ตอล 14 จุ ด (ขาพอร ตหมายเลข 0 ถึ ง 13) และขาพอร ตแบบดิ จิ ตอลหรื ออะนาลอก (กํ าหนดได ) 6 จุ ด (หากใช เป นขาอิ นพุ ตอะนาลอกเป นขา A0 ถึ งA5 และถ าใช เป นขาพอร ตดิ จิ ตอลเป นขาพอร ตหมายเลข 14 ถึ ง 19)

ม ีจ ุดต อระบบบั ส 2 สาย (I2C) เพื ่อขยายระบบ

ม ีจ ุดต อพอร ตสื่ อสารข อมู ลอนุ กรม UART 4 ขา (TxD, RxD, ไฟเลี้ ยง และกราวด )

ส วนวงจรสมบู รณ ของแผงวงจร i-Duino UNO แสดงในรู ปที่ 2

Page 4: i-duino Starter kit manual

4 Arduino

รู ปที่

1-2

วงจร

ของแ

ผงวง

จร i-

Duino

UNO

Page 5: i-duino Starter kit manual

Arduino5

1.1.2 เกี่ ยวก ับพอร ตสํ าหรั บต อใช งาน

แผงวงจร i-Duino UNO จ ัดเตร ียมจ ุดต อพอร ตที ่เข าก ับแผงวงจร Arduino UNO ท ําให รองร ับแผงวงจร Arduino shield ได ท ุกแบบ โดยมี ทั ้งสิ ้น 20 ขา แบ งเป นขาพอร ตอ ินพ ุตเอาต พ ุตด ิจ ิตอลอย างเดี ยว14 ขา (0 ถ ึง 13) และขาอ ินพ ุตเอาต พ ุตอะนาลอกและด ิจ ิตอลอ ีก 6 ขา (เป นขา A0 ถ ึง A5 เมื่ อกํ าหนดเป นอิ นพุ ตอะนาลอก และ 14 ถึ ง 19 เมื ่อก ําหนดเป นพอร ตด ิจ ิตอล)

นอกจากนั ้น ย ังเตร ียมจ ุดต อพอร ตที ่มี การจ ัดขาเหมื อนพอร ตต อเซอร โวมอเตอร นั ่นค ือ มี การจั ดเรี ยงขาในแบบสั ญญาณ-ไฟเลี้ ยง- กราวด ให กั บทุ กขาพอร ตตั้ งแต D0 ถึ ง D13 (หรื อ 0 ถึ ง 13) และA0 ถึ ง A5 (D14 ถึ ง D19 หรื อ 14 ถึ ง 19) และยั งเตรี ยมจุ ดต อพอร ตแบบ 4 ขาสํ าหรั บเชื่ อมต ออุ ปกรณ ระบบบั ส I2C และ UART ทํ าให สะดวกต อการเชื่ อมต อกั บอุ ปกรณ ภายนอกอย างมาก

1.1.3 เกี ่ยวก ับไมโครคอนโทรลเลอร หลั ก

บนแผงวงจร i-Duino UNO ใช ไมโครคอนโทรลเลอร เบอร ATmega328 ของ Atmel(www.atmel.com) เหม ือนก ับ Arduino UNO มาตรฐาน บรรจ ุเฟ ร มแวร บ ูตโหลดเดอร ที ่ตรงก ับ ArduinoUNO 100% ส วนชิ ปที่ ทํ าหน าที่ เชื่ อมต อกั บพอร ต USB ใช ไมโครคอนโทรลเลอร ATmega16U2ที่ บรรจุ เฟ ร มแวร เพื่ อทํ าหน าที่ เป นตั วแปลงสั ญญาณพอร ต USB เป นสั ญญาณข อมู ลอนุ กรม UART

ความถี่ สั ญญาณนาฬิ กาของวงจรคื อ 16MHz จากคริ สตอล

Page 6: i-duino Starter kit manual

6 Arduino

1.1.4 ภาคจ ายไฟ

บนแผงวงจร i-Duino UNO ใช ภาคจ ายไฟแบบสว ิตชิ่ งที่ ร ับแรงด ันอ ินพุ ตจากแจ กอะแดปเตอร ได 7 ถึ ง 20V ให แรงดั นไฟตรงเอาต พุ ต 2 ค าคื อ +5V และ +3.3V สํ าหรั บเลี้ ยงแผงวงจรทั้ งหมด โดยมี สวิ ตช เลื อกระดั บไฟเลี้ ยงที่ ต องการ ปกติ จะเลื อกไว ที่ +5V

นอกจากนี ้ยั งเล ือกใช ไฟเลี้ ยง +5V จากจุ ดต อพอร ต USB ได เพื่ อความคล องตั วในการทดลองและใช งาน หากมี การต อสาย USB และต อไฟเลี ้ยงเข าที ่แจ กอะแดปเตอร วงจรจะเลื อกรั บไฟเลี ้ยงจากแจ กอะแดปเตอร โดยอั ตโนมั ติ อย างไรก็ ตามการใช ไฟเลี้ ยงจากพอร ต USB เหมาะสํ าหรั บการต อใช งานกั บอุ ปกรณ ไม มากนั ก กระแสไฟฟ ารวมไม ควรเกิ น 100mA ทั้ งนี้ เพี ยงพอสํ าหรั บการต ออุ ปกรณ ทั้ งหมดในชุ ด i-Dunino Starter kit พร อมกั น

Page 7: i-duino Starter kit manual

Arduino7

1.2 LCD-IO shield แผงวงจรโมดู ล LCD และอุ ปกรณ อิ นพุ ตเอาต พุ ตอเนกประสงค สํ าหรั บ Arduino UNO และ i-Duino UNO

เป นแผงวงจรที ่ต ิดตั ้งอ ุปกรณ ภายนอกเพื ่ออ ํานวยความสะดวกในการเร ียนรู ทดลอง และใช งานแผงวงจรไมโครคอนโทรลเลอร ยอดน ิยมอย าง Arduino UNO และแผงวงจรที ่เข าก ันได โดยเฉพาะอย างยิ ่งก ับบอร ด i-Duino UNO ทั ้งย ังรองร ับถ ึงแผงวงจร Arduino ในรุ น Arduino Duemilanove และ ArduinoDiecimila อี กด วย โดยบนแผงวงจรประกอบด วย

1. โมดู ล LCD ขนาด 16 ตั วอั กษร 2 บรรทั ดพร อม LED ส องหลั ง (ต อกั บขาพอร ต 4 ถึ ง 7สํ าหรั บขา D4 ถึ ง D7, 8 สํ าหรั บขา RS และ 9 สํ าหรั บขา E)

2. LED 4 ดวง (ต อกั บขาพอร ต 11 ถึ ง 14/A0) พร อมตั วต านทานจํ ากั ดกระแสไฟฟ า

3. สว ิตช กดต ิดปล อยด ับ พร อมตั วต านทานพ ูลอ ัป 1 ตั ว (ต อก ับขาพอร ต 2) สํ าหรั บทดลองอิ นพุ ตดิ จิ ตอล

4. ต ัวต านทานปร ับค าได แบบม ีปุ มปร ับ (KNOB) 1 ต ัว (ต อกั บขาพอร ต A3/17) สํ าหร ับทดลองอ ินพ ุตอะนาลอก

5. ลํ าโพงเป ยโซสํ าหรั บขั บเสี ยง (ต อกั บขาพอร ต 10 - ติ ดตั้ งใต โมดู ล LCD)

ร ูปที ่ 1-4 ส วนประกอบของแผงวงจรโมด ูล LCD และอ ุปกรณ อ ินพุ ตเอาต พุ ตอเนกประสงค ส ําหร ับแผงวงจรไมโครคอนโทรลเลอร iDuino UNO

Page 8: i-duino Starter kit manual

8 Arduino

6. จุ ดต ออุ ปกรณ ระบบบั ส I2C (ต อกั บขาพอร ต A4/SDA/18 และ A5/SCL/19) สํ าหรั บต อก ับอ ุปกรณ ที ่ใช การสื ่อสารข อม ูลอน ุกรมแบบ 2 สายหร ือบ ัส I2C อาท ิ DS1307 ไอซ ีฐานเวลานาฬ ิกาจริ ง, MCP23016/17 ไอซี ขยายพอร ตอิ นพุ ตเอาต พุ ตดิ จิ ตอล, TMP006/007 ไอซี วั ดอุ ณหภู มิ แบบไม สั มผั ส, Pixy โมดู ลกล องตรวจจั บสี ของวั ตถุ , BMP085/BMP180 ตั วตรวจจั บความกดดั นอากาศ เป นต น โดยจั ดสรรเป นจุ ดต อแบบ JST

7. จุ ดต อพอร ตอ ินพุ ตเอาต พ ุตแบบ JST (ต อก ับขาพอร ต A1/15 และ A2/16) ใช งานเป นอ ินพ ุตเอาต พ ุตด ิจ ิตอล และอ ินพ ุตอะนาลอกได จ ึงน ําไปต อก ับต ัวตรวจจ ับอะนาลอก อาท ิ ไอซ ีว ัดอ ุณหภ ูม ิLM35/MCP9700/MCP9701, โมด ูลว ัดความช้ื น HIH4030, LDR ต ัวต านทานแปรค าตามแสง, GP2Y0Axxโมดู ลว ัดระยะทางด วยแสงอ ินฟราเรด, MQx ต ัวตรวจจ ับก าซ คว ัน และแอลกอฮอล เป นต น

8. มี คอนเน็ กเตอร IDC สํ าหรั บต อพอร ตทั้ งหมดของ Arduino โดยกํ าหนดตํ าแหน งตรงตามข อกํ าหนดของ Arduino UNO และบอร ดที่ เข ากั นได ทุ กรุ นก อนหน า

9. มี สวิ ตช RESET ที่ ต อตรงมาจากขา RESET ของบอร ด Arduino UNO, i-Duino UNO,Arduino Duemilanove และ Arduino Diecimila

สํ าหร ับไฟเลี ้ยงได มาจากไฟเลี้ ยง +5V ผ านมาทางคอนเน็ กเตอร ที ่ใช ในการเชื่ อมต อกั บบอร ดArduino UNO หร ือ i-Duino UNO

1.3 คุ ณสมบ ัติ ของชุ ดอุ ปกรณ ตรวจจ ับสั ญญาณ

1.3.1 แผงวงจรตรวจจั บแสง : ZX-LDR

ใช ตรวจจั บแสงสว าง เลื อกเอาต พุ ตได 2 แบบคื อ

+ แรงดั นเอาต พุ ตเพิ่ ม เมื่ อแสงตกกระทบ

+ แรงดั นเอาต พุ ตลดลง เมื่ อแสงตกกระทบ

มี วงจรและรู ปร างของแผงวงจรแสดงในรู ปที่ 1-5

A ZX-LDR

10k

LDR

+

+

+S

+S

LDRLight

A เม่ือแสงมากขึ้นแรงดันท่ีไดจะลดลง

เม่ือแสงมากขึ้นแรงดันท่ีไดจะมากขึ้น+

+

ร ูปที ่ 1-5 ร ูปร างและวงจรของแผงวงจรตรวจจ ับแสง

Page 9: i-duino Starter kit manual

Arduino9

1.3.2 ไอซี วั ดอุ ณหภู มิ MCP9701

เป นอ ุปกรณ ตรวจจ ับและว ัดอ ุณหภ ูม ิที ่ให ผลการท ํางานเป นแรงด ันไฟฟ าแบบเชิ งเส น ร ับรู การเปลี่ ยนแปลงของอุ ณหภู มิ ภายในเวลาไม ถึ ง 2 วิ นาที เชื่ อมต อกั บอิ นพุ ตอะนาลอก A0 ถ ึง A6 ของแผงวงจรหล ัก IPST-SE ได ทั นที ในรู ปที่ 1-6 แสดงการจ ัดขาและกราฟค ุณสมบั ต ิของไอซี ว ัดอ ุณหภ ูมิ เบอร MCP9701

คุ ณสมบั ติ ทางเทคนิ คของ MCP9701 ที่ ควรทราบ

เป นไอซี วั ดอุ ณหภู มิ ในกลุ มเทอร มิ สเตอร แบบแอกตี ฟที่ ให ผลการทํ างานแบบเชิ งเส น

ย านวั ด -40 ถึ ง +125 องศาเซลเซี ยส

ผลการวั ดอ างอิ งกั บหน วยขององศาเซลเซี ยสโดยตรง

ความผิ ดพลาดเฉลี่ ย 2 องศาเซลเซี ยส

ย านไฟเลี้ ยง +3.1 ถึ ง +5.5V กิ นกระแสไฟฟ าเพี ยง 6uA ใช แบตเตอรี่ เป นแหล งจ ายไฟได

ค าแรงดั นเอาต พุ ต 500mV (ที่ 0๐C) ถึ ง 2.9375V (ที่ 125๐)

ค าแรงดั นเอาต พ ุตต อการเปลี่ ยนแปลงอ ุณหภู มิ 19.5mV/๐C ใช งานกั บวงจรแปลงส ัญญาณอะนาลอกเป นดิ จิ ตอลความละเอี ยดตั้ งแต 8 บิ ตได โดยมี ความคลาดเคลื่ อนตํ่ า

ไม ต องการอุ ปกรณ ภายนอกต อเพิ่ มเติ มเพื่ อชดเชยการทํ างาน

ร ูปที ่ 1-6 การจ ัดขาของ MCP9701, หน าตาเมื ่อต อสายส ัญญาณพร อมใช งานและกราฟค ุณสมบั ต ิ

Page 10: i-duino Starter kit manual

10 Arduino

1.4 แผงวงจร LED 3 สี แบบโปรแกรมได : ZX-SLED3Cเป นแผงวงจร LED ขนาดเล็ กที่ มี คุ ณสมบั ติ ใหญ เกิ นตั ว ขั บแสงสี ได สารพั ดจากการผสมของ

แม สี แสง RGB ใช การสื่ อสารข อมู ลอนุ กรมกั บไมโครคอนโทรลเลอร ด วยขาพอร ตเพี ยงขาเดี ยว เพื่ อควบคุ มสี ปรั บเลื อกความสว าง ทั้ งยั งต อพ วงกั นแบบอนุ กรมหรื อเป นแบบลู กโซ ได ด วย และเมื่ อต อพ วงกั นก็ ยั งสั่ งการควบคุ ม LED แต ละชุ ดแยกกั นได อย างอิ สระ ต อพ วงกั นได ไม รู จบ เพิ่ มลู กเล นในการแสดงผลได หลากหลายตามจิ นตนาการ

อุ ปกรณ สํ าคั ญของแผงวงจรนี้ คื อ LED 3 สี RGB แบบโปรแกรมได ภายใน LED บรรจุ ชิ ปส ําหร ับควบค ุมการทํ างานเบอร WS2812 ต ิดต อสื ่อสารข อม ูลอน ุกรมก ับไมโครคอนโทรลเลอร ภายนอกด วยสายสั ญญาณเพี ยงเส นเดี ยว ในรู ปที่ 1-7 แสดงหน าตาและวงจรของแผงวงจร ZX-SLED3C

DinGND

+V +

S

K1Din K3

DoutGND

+V +

S

K2Dout

Di+

Do

Di+

Do

R1150

LED1LED-RGBWS18211

Di+ -

Do

ร ูปที ่ 1-7 แผงวงจร ZX-SLED3C และวงจร

Di

+

-

Do

Di

+

-

Do

Data In Di

+

-

Do

Di

+

-

Do

Di

+

-

Do

Di

+

-

Do

Di

+

-

Do

Di

+

-

Do

LED-RGBWS2812 #1

LED-RGBWS2812 #3

LED-RGBWS2812 #5

LED-RGBWS2812 #2

LED-RGBWS2812 #4

LED-RGBWS2812 #6

LED-RGBWS2812 #n

LED-RGBWS2812#n+1

ร ูปที ่ 1-8 แนวทางการต อพ วง ZX-SLED3C แผงวงจร LED 3 ส ี RGB แบบโปรแกรมได ในแบบไม รู จบ

Page 11: i-duino Starter kit manual

Arduino11

การติ ดต อเพื่ อควบคุ มการทํ างานจะกระทํ าผ านจุ ดต อ Di หากต องการใช งานมากกว า 1 ชุ ดก็ ให ต อขา Do ของตั วแรกเข าก ับขา Di ของแผงวงจร ZX-SLED3C ต ัวถั ดไป ในแบบลู กโซ หรื อ Daisychain แบบไม รู จบ นั่ นคื อ จะต อพ วง LED ไปกี่ ตั วก็ ได ดั งในรู ปที่ 1-8

สํ าหร ับร ูปแบบสั ญญาณข อมู ล “0” และ “1” ของชิ ปควบค ุม WS2812 แสดงในรู ปที ่ 1-9 จะเห ็นได ว า ใช ความกว างของสั ญญาณที่ แตกต างกั นเป นตั วกํ าหนดค าของข อมู ล “0”, “1” และ RESET

ไฟเลี้ ยงของวงจรนี้ ใช ได ตั้ งแต +4.5 ถึ ง +6V ความถี่ ของสั ญญาณนาฬิ กาภายในตั ว LED คื อ800kHz ผู ใช งานสามารถเขี ยนโปรแกรมเพื่ อสั่ งให LED1 ขั บเฉพาะแม สี แสง (แดง, เขี ยว, นํ้ าเงิ น)หรื อผสมกั นในอั ตราส วนความสว างเท าใดก็ ได ภายในช วง 0 ถึ ง 255 (256 ระดั บ) และเมื่ อต อพ วงกั น ก็ ยั งสามารถควบคุ ม LED แต ละดวงได อย างอิ สระ

T0H T0L

T1H T1L

Treset

T0H

T0L

T1H

T1L

Treset

ร ูปที ่ 1-9 ร ูปแบบของส ัญญาณข อม ูลที ่ใช ในการต ิดต อก ับ WS2812 ภายใน LED 3 ส ี RGB แบบโปรแกรมได

1.5 อะแดปเตอร ไฟตรง (อ ุปกรณ เสร ิมที ่ต องแนะน ํา)

ถึ งแม ว าแผงวงจร i-Duino UNO จะเลื อกจ ายไฟได จากจุ ดต อพอร ต USB แต ก็ มี ข อจํ ากั ดด านความสามารถในการจ ายกระแสไฟฟ า หากมี อ ุปกรณ ภายนอกต อร วมด วยเท าที ่ม ีในช ุดi-Duino Starter Kit กระแสไฟฟ าจากพอร ต USB ยั งเพี ยงพอ แต ถ าหากมี อุ ปกรณ ที่ ต องการกระแสไฟฟ าพอสมควรต อเพิ่ มเข ามาเช น ต องการต อแผงวงจร ZX-SLED3C อี ก 3 ชุ ด กระแสไฟฟ าจากพอร ต USB จะไม เพี ยงพอ จึ งต องต อแหล งจ ายไฟตรงภายนอกที่ มี ความสามารถในการจ ายกนระแสไฟ าได มากกว าเข าที่ แจ กอะแดปเตอร

อะแดปเตอร ที ่แนะนํ าค ือ +6.5V 2A หร ือ +9V 2A ปลายสายเป นห ัวปลั๊ กแบบบาร เรล (barrel)ซึ่ งเป นมาตรฐานที่ พบโดยทั่ วไป

Page 12: i-duino Starter kit manual

12 Arduino

1.6 ข อมู ลของสายสั ญญาณที่ ใช ในชุ ด i-Duino Starter kit

1.6.1 สาย JST3AA-8 : สายเชื่ อมต อระหว างแผงวงจร

สาย JST3AA-8 ใช เชื่ อมต อระหว างแผงวงจร LCD-IO กั บแผงวงจรตรวจจั บและแผงวงจรอุ ปกรณ ต างๆ เป นสายแพ 3 เส น ยาว 8 นิ้ ว ปลายสายทั้ งสองด านติ ดตั้ งคอนเน็ กเตอร แบบ JST 3 ขาตั วเมี ย ระยะห างระหว างขา 2 มิ ลลิ เมตร มี การจั ดขาดั งนี้

ระยะหางระหวางขา 2 มม. ระยะหางระหวางขา 2 มม.

GNDS

+5V

1.6.2 สาย miniB-USB

เป นสายส ัญญาณส ําหร ับเชื ่อมต อระหว างพอร ต USB ของคอมพ ิวเตอร ก ับแผงวงจร i-Duino UNO

Page 13: i-duino Starter kit manual

Arduino13

สํ าหรั บ i-Duino UNO นั้ นมี ลั กษณะการใช งานเหมื อนกั น Arduino Uno รวมไปถึ งโปรแกรม

ที่ ใช และวิ ธี การเขี ยนโปรแกรม โดยจะใช โปรแกรม Arduino สํ าหรั บเขี ยนโปรแกรมควบคุ มบอร ด i-Duino UNO

2.1 การติ ดตั้ งโปรแกรม

(2.1.1) ดาวน โหลดไฟล ติ ดตั้ งจาก http://www.arduino.cc/en/Main/Software โดยเลื อกเป นWindows Installer

(2.1.2) เมื่ อดาวน โหลดเสร็ จแล ว ให ด ับคลิ กเป ดไฟล arduino-1.6.3-windows.exe (ต ัวเลขเวอร ชั นอาจมี การเปลี่ ยนแปลงตามการปรั บปรุ งล าสุ ด) เพื่ อทํ าการติ ดตั้ งโปรแกรม

(2.1.3) เข าสู หน าติ ดตั้ งโปรแกรม คลิ กกดปุ ม I Agree เพื่ อไปยั งขั้ นตอนต อไป

Page 14: i-duino Starter kit manual

14 Arduino

(2.1.4) คลิ กตอบรั บการติ ดตั้ งและรอจนกระทั่ งการติ ดตั้ งโปรแกรมเสร็ จสิ้ น คลิ กปุ ม Closeเพื่ อสิ ้นสุ ดการติ ดตั ้งโปรแกรม

2.2 ตรวจสอบการติ ดตั้ งไดรเวอร ของ i-Duino UNO

ในการใช งานแผงวงจร i-Duino UNO ครั้ งแรก จะต องตรวจสอบว า คอมพิ วเตอร ที่ ใช งานนั้ นติ ดตั้ งไดรเวอร แล วหรื อไม

(2.2.1) ต อสาย miniB-USB กั บพอร ต USB ของคอมพิ วเตอร

Page 15: i-duino Starter kit manual

Arduino15

(2.2.2) ต อสาย miniB-USB ด านหั วต อ miniB เข ากั บแผงวงจร i-Duino UNO

(2.2.3) หล ังจากที ่ต อแผงวงจร i-Duino UNO เข าก ับคอมพ ิวเตอร แล ว ให เป ดหน าต าง DeviceManager ขึ ้นมาเพื ่อด ูว าไดรเวอร ได ต ิดตั ้งเร ียบร อยแล วหร ือไม ถ าย ังไม ได ต ิดตั ้งจะปรากฏรายชื ่ออยู ในOther devices โดยแสดงชื ่อเป น Arduino Uno และม ีร ูปไอคอนที ่ม ีเครื ่องหมายตกใจส ีเหล ืองแสดงอยู

ซึ ่งหมายความว า ย ังไม ได ต ิดตั ้งไดรเวอร นั ่นเอง ด ังนั ้นจะต องทํ าการต ิดตั ้งไดรเวอร ให ก ับแผงวงจร i-Duino UNO โดยไดรเวอร ที ่ต องการนั ้นมาพร อมก ับโปรแกรม Arduino

(2.2.4) เป ดโฟลเดอร ของโปรแกรม Arduino > drivers จะพบกั บไฟล ที่ ชื่ อว า dpinst-amd64กั บ dpinst-x86 ซึ่ งเป นไฟล ติ ดตั้ งไดรเวอร สํ าหรั บระบบปฏิ บั ติ การวิ นโดวส 64 และ 32 บิ ต

สํ าหรั บวิ นโดวส 64 บิ ต ให เลื อก dpinst-amd64

สํ าหรั บวิ นโดวส 32 บิ ต ให เลื อก dpinst-x86

Page 16: i-duino Starter kit manual

16 Arduino

(2.2.5) เมื่ อหน าต างติ ดตั้ งไดรเวอร แสดงขึ้ นมา คลิ กปุ ม Next

(2.2.6) รอจนกระทั่ งการติ ดตั้ งไดรเวอร เสร็ จสิ้ น คลิ กปุ ม Finish

Page 17: i-duino Starter kit manual

Arduino17

(2.2.7) กลั บไปดู ที่ Device Manager อี กครั้ ง จะพบว า ไดรเวอร ของ i-Duino UNO ถู กติ ดตั้ งเรี ยบร อยแล ว โดยแสดงที่ หั วข อ Port (COM & LPT) มี ชื่ อว า Arudiono Uno (COMxx) โดย xxคื อหมายเลขพอร ตอน ุกรมเสมื อนที ่เก ิดขึ้ น ซึ่ งจะแตกต างกั นไปในคอมพิ วเตอร แต ละเครื่ อง จากภาพตั วอย างเป น COM23

Page 18: i-duino Starter kit manual

18 Arduino

ร ูปที ่ 2-1 แสดงส วนประกอบของโปรแกรม Arduino1.6.3

แถบเครื่ องมื อ (Tools bar)

แถบเลื อกโปรแกรม (Tab)

พื้ นที่ แสดงข อความ (Message area)

Serial Monitorคลิ กเพื่ อเป ดหน าต างสํ าหรั บรั บและส งข อมู ลอนุ กรมระหว างฮาร ดแวร Arduino กั บคอมพิ วเตอร

เมนู (Menu)

พื้ นที่ สํ าหรั บเขี ยนโปรแกรม(Text Editor)

2.3 ทดสอบการทํ างานของโปรแกรม Arduino

(2.3.1) เป ดโปรแกรม Arduino IDE หน าต างหลั กของโปรแกรมจะปรากฏขึ้ นมา ดั งรู ปที่ 2-1

(2.3.2) ก อนจะเริ ่มใช งาน ให ตรวจสอบการตั ้งค าของโปรแกรมให เร ียบร อยเส ียก อน ซึ ่งม ีด วยก ัน2 เรื ่องที ่จะต องตรวจสอบค ือ ชน ิดของแผงวงจรที ่เชื ่อมต อและตํ าแหน งของพอร ตที ่ใช ในการเชื ่อมต อ

(2.3.3) เริ่ มจากกํ าหนดแผงวงจรที่ นํ ามาเชื่ อมต อ เลื อกไปที่ Tools > Board > Arduino Uno

พื้ นที่ แสดงสถานะการทํ างาน (Status area)

Page 19: i-duino Starter kit manual

Arduino19

(2.3.4) เลื อกพอร ตที่ ใช ในการเชื่ อมต อ เลื อกไปที่ Tools > Serial Port > COMxx

ส ําหร ับ COMxx จะขึ ้นอยู ก ับต ําแหน งของพอร ต COM ที ่ไดรเวอร ของแผงวงจร i-DuinoUNO สร างขึ ้น โดยตรวจสอบได จาก Device Manager ถ าไม ม ีการเชื ่อมต อแผงวงจรไว หร ือการเชื ่อมต อล มเหลว อ ันอาจเก ิดจากการไม จ ายไฟเลี ้ยงหร ือสายต อพอร ต USB ขาด ก ็จะไม ม ีรายการแสดงให เล ือก

(2.3.5) เมื่ อกํ าหนดค าเรี ยบร อยแล ว ให ทดสอบการทํ างานของโปรแกรม Arduino ด วยคํ าสั่ ง

void setup()

{}

void loop()

{}

(2.3.6) ทํ าการคอมไพล โค ดด วยการคลิ กที่ ปุ มเครื่ องหมายถู กที่ ชื่ อว า Verify

(2.3.7) อาจเล ือกคอมไพล ได จากเมนู Sketch > Verify / Compile หรื อกดคี ย Ctrl และ R ก ็ได

Page 20: i-duino Starter kit manual

20 Arduino

(2.3.8) เนื ่องจากคํ าสั ่งที่ ให ทดสอบเป นคํ าสั ่งเปล าๆ ดั งนั้ นจะต องคอมไพล ผ าน ที ่ช องสถานะการทํ างานบนที่ แถบข างล างของโปรแกรม Arduino แสดงข อความ Done compiling

(2.3.9) เขี ยนโปรแกรมต อไปนี้ แล วบั นทึ กเป น BlinkTest.inovoid setup()

{

pinMode(13, OUTPUT); // initialize digital pin 13 as an output.

}

void loop()

{

digitalWrite(13, HIGH); // turn the LED on

delay(500); // wait for 0.5 second

digitalWrite(13, LOW); // turn the LED off

delay(500); // wait for 0.5 second

}

(2.3.10) คลิ กปุ ม Upload เพื่ อทํ าการคอมไพล และอั ปโหลดโค ด

หรื อเลื อกจากเมนู File > Upload ก็ ได

Page 21: i-duino Starter kit manual

Arduino21

(2.3.11) จะเห็ น LED ที ่ตํ าแหน ง Rx และ Tx ที่ มุ มบนดานซ ายติ ดกะพริ บตามการรั บส งข อมู ลจนกระทั ่งการอั ปโหลดโปรแกรมเสร ็จสิ้ น

(2.3.12) LED ที่ ตํ าแหน ง D13 จะติ ดกะพริ บทุ กๆ 0.5 วิ นาที

เมื่ อได ตามนี้ เป นอั นเสร็ จสิ้ นการติ ดตั้ งและทดสอบใช งานโปรแกรม Arduino กั บแผงวงจร i-Duino UNO แล ว

Page 22: i-duino Starter kit manual

22 Arduino

Page 23: i-duino Starter kit manual

Arduino23

3.1 การติ ดตั้ งทางฮาร ดแวร

(3.1.1) ปลดไฟเลี้ ยงแผงวงจร i-Duino UNO ออก รวมถึ งสาย miniB-USB ด วย

(3.1.2) เลื อกสวิ ตช ไฟเลี้ ยงบนแผงวงจร i-Duino UNO ไปที่ 5V

(3.1.3) นํ าแผงวงจร LCD-IO เสี ยบเข ากั บแผงวงจร i-Duino โดยหั นแผงวงจรด านที่ มี LED 4ดวงขึ้ นด านบนและขอบของแผงวงจรด านซ ายเสมอกั น

Page 24: i-duino Starter kit manual

24 Arduino

3.2 ตั วอย างโปรแกรมสํ าหร ับทดสอบการทํ างาน

3.2.1 ขั บ LED พ้ื นฐาน (LED_IO1.ino)

int led_11 = 11; // assign led_11 is pin 11

void setup()

{

pinMode(led_11, OUTPUT); // Set pin 11 as output

}

void loop()

{

digitalWrite(led_11, HIGH); // turn the LED on

delay(1000); // wait for a second

digitalWrite(led_11, LOW); // turn the LED off

delay(1000); // wait for a second

}

เมื่ อรั นโปรแกรม LED ที่ พอร ต 11 บนแผงวงจร LCD-IO จะกะพริ บ

Page 25: i-duino Starter kit manual

Arduino25

3.2.2 ขั บไฟว่ิ ง 4 ดวง (LED_IO4.ino)

int led_11 = 11; // assign led_11 as pin 11int led_12 = 12; // assign led_12 as pin 12int led_13 = 13; // assign led_13 as pin 13int led_14 = 14; // assign led_14 as pin 14void setup(){

pinMode(led_11, OUTPUT); // Set led_11 (pin 11) to outputpinMode(led_12, OUTPUT); // Set led_12 (pin 12) to outputpinMode(led_13, OUTPUT); // Set led_13 (pin 13) to outputpinMode(led_14, OUTPUT); // Set led_14 (pin 14) to output

}void loop(){

digitalWrite(led_11, HIGH); // turn the LED ondigitalWrite(led_12, LOW); // turn the LED offdigitalWrite(led_13, LOW); // turn the LED offdigitalWrite(led_14, LOW); // turn the LED offdelay(1000); // wait for a second

digitalWrite(led_11, LOW); // turn the LED offdigitalWrite(led_12, HIGH); // turn the LED ondigitalWrite(led_13, LOW); // turn the LED offdigitalWrite(led_14, LOW); // turn the LED offdelay(1000); // wait for a second

digitalWrite(led_11, LOW); // turn the LED offdigitalWrite(led_12, LOW); // turn the LED offdigitalWrite(led_13, HIGH); // turn the LED ondigitalWrite(led_14, LOW); // turn the LED offdelay(1000); // wait for a second

digitalWrite(led_11, LOW); // turn the LED offdigitalWrite(led_12, LOW); // turn the LED offdigitalWrite(led_13, LOW); // turn the LED offdigitalWrite(led_14, HIGH); // turn the LED ondelay(1000); // wait for a second

}

เมื่ อรั นโปรแกรม LED 4 ดวงบนแผงวงจร LCD-IO จะติ ดดั บในแบบไฟว่ิ งจากขวาไปซ าย

Page 26: i-duino Starter kit manual

26 Arduino

3.2.3 ไฟวู บ (PWM.ino)

int led_11 = 11; // assign led_11 is pin 11

void setup()

{

pinMode(led_11, OUTPUT); // aet pin 11 as output

}

void loop()

{

// fade from min to max with 5 points per step (from 0 to 255)

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)

{

analogWrite(led_11, fadeValue); // drive LED

delay(100); // wait for 100 milisecond

}

// fade from max to min with 5 points per step (from 255 to 0)

for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5)

{

analogWrite(led_11, fadeValue); // drive LED

delay(100); // wait for 100 milisecond

}

}

เมื่ อรั นโปรแกรม แผงวงจร i-Duino UNO ท ําการขั บ LED ที ่พอร ต 11 ให ค อยๆ สว างขึ้ นด วยสั ญญาณPWM จนกระทั่ งสว างที่ สุ ด แล วค อยๆ หรี่ ลงจนดั บ แล ววนกลั บมาขั บให LED ค อยๆ สว างขึ้ นอี กครั้ ง

Page 27: i-duino Starter kit manual

Arduino27

3.2.4 ขั บเสี ยงอย างง าย (Piezo.ino)

int piezo = 10; // assign piezo is pin 10

void setup()

{

pinMode(piezo, OUTPUT); // Set pin 10 as output

}

void loop()

{

tone(piezo,500); // generate the tone 500Hz

delay(5000); // wait for 5 second

noTone(piezo); // stop generating the tone

delay(5000); // wait for 5 second

}

เมื่ อรั นโปรแกรม จะได ยิ นเสี ยงความถี่ ประมาณ 500Hz ดั งและเงี ยบสลั บกั นทุ กๆ 5 วิ นาที

Page 28: i-duino Starter kit manual

28 Arduino

3.2.5 แสดงข อความบนโมดู ล LCD อย างง าย (LCD_Hello.ino)

#include <LiquidCrystal.h> // include the LiquidCrystal library

// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup()

{

lcd.begin(16, 2); // set up the LCD’s columns and rows

lcd.clear(); // clear a message on LCD

}

void loop()

{

lcd.setCursor(2, 0);

// set the cursor to column 2, line 0 (first row)

lcd.print(“Hello, world!”); // Print a message to the LCD

}

เมื่ อรั นโปรแกรม ที่ จอแสดงผลของโมดู ล LCD แสดงข อความ Hello, world! ที่ บรรทั ดบนหากไม เห็ นการแสดงผล ให ใช ไขควงเล็ กปรั บที่ ตั วต านทานปรั บค าได ที่ ตํ าแหน ง LCD บนแผงวงจร LCD-IO

Page 29: i-duino Starter kit manual

Arduino29

3.2.6 รั บค าจากสวิ ตช SW1 เพื่ อแสดงผลบนโมดู ล LCD (SW1_LCD.ino)

#include <LiquidCrystal.h> // include the LiquidCrystal library codeint SW1 = 2; // Assign SW1 is pin 2int piezo = 10; // Assign piezo is pin 10int buttonState = 0; // variable for reading

// the pushbutton statusLiquidCrystal lcd(8, 9, 4, 5, 6, 7); // initialize LCD libraryvoid setup(){

lcd.begin(16, 2); // set up the LCD’s columns and rowslcd.clear(); // clear a message on LCDpinMode(SW1, INPUT); // Set SW1 (pin 2) to input modepinMode(piezo, OUTPUT); // Set pin 10 as output mode

}void loop(){

buttonState = digitalRead(SW1); // read the state of the buttonif (buttonState == LOW){

lcd.setCursor(0, 0); // set the cursor to column 0, line 0lcd.print(“Press SW1”); // print a message to the LCDtone(piezo,500); // generate the tone 500Hz

}else{

lcd.clear(); // clear a message on LCDnoTone(piezo); // stop generating the tone

}

}

เมื่ อรั นโปรแกรม ระบบจะรอการกดสวิ ตช SW1 บนแผงวงจร LCD-IO

เมื่ อกดสวิ ตช SW1 ที่ โมดู ล LCD แสดงข อความ Press SW1 พร อมกั บขั บเสี ยง “ติ้ ด”

เมื่ อปล อยสวิ ตช หน าจอแสดงผลจะถู กล างข อความ และเสี ยงจากลํ าโพงเงี ยบลง

Page 30: i-duino Starter kit manual

30 Arduino

3.2.7 อ านค าจาก KNOB แสดงผลบนโมดู ล LCD (Analog_LCD.ino)

#include <LiquidCrystal.h> // include the LiquidCrystal library

int Knob = A3; // assign Knob is input pin A3

// for the potentiometer

int analogValue = 0;

// initialize the library with the microcontroller pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup()

{

lcd.begin(16, 2); // set LCD’s columns and rows

lcd.clear(); // clear a message on LCD

}

void loop()

{

analogValue = analogRead(Knob); // read analog value from KNOB

lcd.print(“Analog :”); // print a message to the LCD

lcd.setCursor(9, 0); // set the cursor to

// column 9, line 0(first row)

lcd.print(analogValue); // print a message to the LCD

delay(200); // wait for 200 milisecond

lcd.clear(); // clear a message on LCD

}

เมื่ อรั นโปรแกรม ที่ จอแสดงผลโมดู ล LCD แสดงข อความ

Analog : xxxx

โดยค า xxxx เปลี่ ยนแปลงตามการปรั บปุ ม KNOB บนแผงวงจร LCD-IO

Page 31: i-duino Starter kit manual

Arduino31

3.2.8 สวิ ตช แสง (LDR_Night_SW.ino)

ต อสายจากเอาต พุ ตแรงดั นแปรค าตามแสง + ของแผงวงจร ZX-LDR เข าที่ จุ ดต อพอร ต A1/15

#include <LiquidCrystal.h> // include the LiquidCrystal library code

int LDR = A1; // assign A1 input for the LDR sensor

int value = 0; // variable to store LDR sensor value

int led_11 = 11; // assign led_11 is pin 11

// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup()

{

lcd.begin(16, 2); // set up the LCD’s columns and rows

lcd.clear(); // clear a message on LCD

pinMode(LDR, INPUT); // Set A1 to input mode

pinMode(led_11, OUTPUT); // Set pin 11 as output

}

void loop()

{

lcd.print(“Night Switch”); // print a message to the LCD

value = analogRead(LDR); // read analog value from LDR Sensor

lcd.setCursor(0, 1); // set the cursor second line

Page 32: i-duino Starter kit manual

32 Arduino

lcd.print(value); // print a value to the LCD

delay(200); // wait for 200 milisecond

lcd.clear(); // clear a message on LCD

if(value<150)

{

digitalWrite(led_11, HIGH); // turn the LED on

}

else

{

digitalWrite(led_11, LOW); // turn the LED off

}

}

เมื่ อรั นโปรแกรม i-Duino จะอ านค าแสงจากพอร ต A1/15 แล วนํ ามาแสดงที่ บรรทั ดที่ สอง (บรรทั ดล าง)ของโมดู ล LCD โดยบรรทั ดแรกหรื อบรรทั ดบนแสดงข อความ Night Switch ค างไว จากนั้ นใช มื อบั งตั วต านทานแปรค าตามแสงบนแผงวงจร ZX-LDR จนกระทั่ งค าที่ อ านได ค าตํ่ ากว า 150 จะเห็ น LED ที่ พอร ต 11บนแผงวงจร LCD-IO ติ ดสว าง

3.2.9 เครื ่องว ัดอุ ณหภู มิ ระบบตั วเลขอย างง าย (EasyTemp.ino)

ต อสายวั ดอุ ณหภู มิ ไอซี MCP9701 เข าที่ จุ ดต อพอร ต A2/16 ของแผงวงจร i-Duino UNO

Page 33: i-duino Starter kit manual

Arduino33

#include <LiquidCrystal.h> // include the LiquidCrystal library

int MCP9701 = A2; // assign A2 input for MCP9701 Sensor

int value = 0; // sensor variable

float Temp; // assign Temp is float variable

// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup()

{

lcd.begin(16, 2); // set up the LCD’s columns and rows

lcd.clear(); // clear messages on LCD

}

void loop()

{

lcd.print(“THERMOMETER”); // print a message to the LCD

for(int i=0;i<20;i++)

{

value = value+analogRead(MCP9701);

// read and average analog value from MCP9701(pin A2)

}

value = (value/20);

Temp = ((float(value)*0.25)-25.51); // calculate real temperature

lcd.setCursor(0, 1); // set the cursor to second line

lcd.print(Temp); // print a value to the LCD

lcd.setCursor(7, 1); // set the cursor to column 7, line 2

lcd.print(“Celsius”); // print message to the LCD

delay(200); // wait for 200 milisecond

lcd.clear(); // clear a message on LCD

}

เมื่ อรั นโปรแกรม iDuino UNO แสดงข อความ THERMOMETER ที่ บรรทั ดบนของโมดู ล LCDจากนั้ นอ านค าจากพอร ต A2 ซึ่ งต อกั บไอซี วั ดอุ ณหภู มิ MCP9701 นํ ามาคํ านวณเพื่ อหาค าอุ ณหภู มิ จริ งในหน วยองศาเซลเซี ยส แล วนํ ามาแสดงผลที่ บรรทั ดล างของโมดู ล LCD ตามด วยชื่ อหน วยของอุ ณหภู มิ Celsius

Page 34: i-duino Starter kit manual

34 Arduino

3.2.10 ขั บ LED 3 สี แบบโปรแกรมได (SLED3C-1.ino)

ต อแผงวงจร ZX-SLED3C จากจุ ด Din เข าที่ จุ ดต อพอร ต A5/19

ส วนขา Dout จะเป นขาเอาต พุ ตข อมู ลสํ าหรั บต อไปยั งแผงวงจร ZX-SLED3C ในชุ ดต อไป

ไฟเลี้ ยงของวงจรนี้ ใช ได ตั้ งแต +4.5 ถึ ง +6V ความถี่ ของสั ญญาณนาฬิ กาภายในตั ว LED คื อ800kHz ผู ใช งานสามารถเขี ยนโปรแกรมเพื่ อสั่ งให LED1 ขั บเฉพาะแม สี แสง (แดง, เขี ยว, นํ้ าเงิ น)หรื อผสมกั นในอั ตราส วนความสว างเท าใดก็ ได ภายในช วง 0 ถึ ง 255 (256 ระดั บ) และเมื่ อต อพ วงกั น ก็ ยั งสามารถควบคุ ม LED แต ละดวงได อย างอิ สระ

มี สิ ่งที ่ต องทํ าก อนการเข ียนโปรแกรมค ือ ติ ดตั้ งไลบรารี FastSPI_LED2 โดยดาวน โหลดได ที ่ https://github.com/nethoncho/FastSPI_LED2/archive/master.zip เมื ่อดาวน โหลดมาแล วให ด ําเน ินการด ังนี ้

(1) ทํ าการแตกไฟล จะได โฟลเดอร FastSPI_LED2-Master

(2) เปลี่ ยนชื่ อโฟลเดอร เป น FastSPI_LED2

(3) คั ดลอกไปยั ง C:\Arduino\libraries

เมื ่อต ออ ุปกรณ และต ิดตั ้งไลบรารี เร ียบร อย ทํ าการเข ียนโปรแกรมต อไปนี ้ แล วอั ปโหลดไปย ังแผงวงจร i-Duino UNO

Page 35: i-duino Starter kit manual

Arduino35

#include <FastSPI_LED2.h> // include the FastSPI_LED2 library#define NUM_LEDS 1 // define the quantities of ZX-SLED3C#define PIN_DATA 19 // set the interfaced port as 19#define interval 300 // set the LED interval timeCRGB leds[NUM_LEDS]; // this is an array of ledsvoid setup(){

delay(1000);LEDS.setBrightness(255); // set the brightness of LEDLEDS.addLeds<WS2811, PIN_DATA, RGB>(leds, NUM_LEDS);

}void loop(){

for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::Red; // set red colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::Magenta; // set magenta colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::Blue; // set blue colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::Cyan; // set cyan colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::Green; // set green colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::Yellow; // set yellow colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB::White; // set white colorLEDS.show(); // show this color on LEDdelay(interval); // interval time of LED operation

}}

เมื่ อรั นโปรแกรม i-Duio UNO ส งข อมู ลไปยั งแผงวงจร ZX-SLED3C เพื่ อขั บ LED ให เป นสี ต างๆ 7 สี เริ่ มจากสี แดง, บานเย็ น, นํ้ าเงิ น, ฟ า, เขี ยว, เหลื อง และขาว แล ววนกลั บมาที่ สี แดง

Page 36: i-duino Starter kit manual

36 Arduino

3.2.11 ขั บ LED 3 สี แบบอนุ กรมให เปลี่ ยนสี แบบนุ มนวล (FadeSLED3C.ino)

ต อแผงวงจร ZX-SLED3C เข าที่ จุ ดต อพอร ต A5/19

#include <FastSPI_LED2.h> // include the FastSPI_LED2 library

#define NUM_LEDS 1 // define the quantities of ZX-SLED3C

#define PIN_DATA 19 // set the interfaced port as pin 19

#define interval 100 // set the LED interval time

CRGB leds[NUM_LEDS]; // this is an array of leds

void setup()

{

delay(1000);

LEDS.setBrightness(100); // set the brightness of LED

LEDS.addLeds<WS2811, PIN_DATA, RGB>(leds, NUM_LEDS);

}

void loop()

{

for(int j = 0 ; j < 255 ; j++)

{

for(int i = 0 ; i < NUM_LEDS ; i++)

{

leds[i] = CRGB(255 - j, j, 0); // fade color

LEDS.show(); // show this color on LED

}

delay(interval); // LED interval time

}

Page 37: i-duino Starter kit manual

Arduino37

for(int j = 0 ; j < 255 ; j++)

{

for(int i = 0 ; i < NUM_LEDS ; i++)

{

leds[i] = CRGB(0, 255 - j, j); // fade color

LEDS.show(); // show this color on LED

}

delay(interval); // LED interval time

}

for(int j = 0 ; j < 255 ; j++)

{

for(int i = 0 ; i < NUM_LEDS ; i++)

{

leds[i] = CRGB(j, 0, 255 - j); // fade color

LEDS.show(); // show this color on LED

}

delay(interval); // LED interval time

}

}

เมื่ อรั นโปรแกรม i-Duio UNO ส งข อมู ลไปยั งแผงวงจร ZX-SLED3C เพื่ อขั บ LED ให เป นสี ต างๆ แบบนุ มนวล เริ่ มจากสี แดงเป นสี เหลื อง, เขี ยว, นํ้ าเงิ น, ฟ า, บานเย็ น แล ววนกลั บมาที่ สี แดง

การเปลี ่ยนสี ในโปรแกรมนี้ จะค อยๆ เปลี่ ยนอย างช าๆ ในช วงรอยต อระหว างสี ก็ จะเกิ ดแสงสี ที่ อ อนแล วค อยๆ เข มขึ้ นจนเป นสี หล ักอย างเต ็มที่ แล วก็ เริ่ มเปล่ี ยนสี อี กคร้ั ง

3.2.12 ขั บ LED 3 สี โปรแกรมได แบบต อพ วง 5 ดวง (FadeSLED3C-5.ino)

ต อแผงวงจร ZX-SLED3C ชุ ดแรกเข าที ่จุ ดต อพอร ต A5/19 ของแผงวงจร i-Duino UNO จากนั ้นนํ าแผงวงจร ZX-SLED3C แผงที่ 2 มาต อพ วงกั บชุ ดแรก ทํ าการต อ 5 แผงต อเนื่ องกั น

Page 38: i-duino Starter kit manual

38 Arduino

#include <FastSPI_LED2.h> // include the FastSPI_LED2 library#define NUM_LEDS 5 // define the quantities of ZX-SLED3C#define PIN_DATA 19 // set the interfaced port as pin 19#define interval 100 // set the LED interval timeCRGB leds[NUM_LEDS]; // this is an array of ledsvoid setup(){

delay(1000);LEDS.setBrightness(100); // set the brightness of LEDLEDS.addLeds<WS2811, PIN_DATA, RGB>(leds, NUM_LEDS);

}void loop(){

for(int j = 0 ; j < 255 ; j++){

for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB(255 - j, j, 0); // fade colorLEDS.show(); // show this color on LED

}delay(interval); // LED interval time

}for(int j = 0 ; j < 255 ; j++){

for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB(0, 255 - j, j); // fade colorLEDS.show(); // show this color on LED

}delay(interval); // LED interval time

}for(int j = 0 ; j < 255 ; j++){

for(int i = 0 ; i < NUM_LEDS ; i++){

leds[i] = CRGB(j, 0, 255 - j); // fade colorLEDS.show(); // show this color on LED

}delay(interval); // LED interval time

}

}

เมื่ อรั นโปรแกรม i-Duio UNO ส งข อมู ลไปยั งแผงวงจร ZX-SLED3C ทั้ ง 5 แผงเพื่ อขั บ LED ให เป นสี ต างๆ แบบนุ มนวล เหมื อนกั บโปรแกรมในหั วข อ 3.2.11 เริ่ มจากสี แดงเป นสี เหลื อง, เขี ยว, นํ้ าเงิ น, ฟ า, บานเย็ นแล ววนกลั บมาที่ สี แดง โดยการท ํางานจะเก ิดขึ้ นพร อมกั นทั ้งหมด

Page 39: i-duino Starter kit manual
Page 40: i-duino Starter kit manual