i-duino Starter kit manual

Page 1

Arduino  1

    Arduino (www.arduino.cc) เปนโครงการระบบสมองกลฝงตัวแบบเปดเผยซอรส ทังส ้ วนของ ฮารดแวรและซอฟตแวรทีใช ่ ในการเขียนโปรแกรม พรอมทั้งมีไลบรารีสําหรับติดตอกับฮารดแวรได หลากหลาย ทําใหผูใชงาน Arduino ไมจําเปนตองมีความรูดานฮารดแวรมากนักก็สามารถเขียน โปรแกรมควบคุมอุปกรณตางๆ ได นอกจากนี้ยังมีนักพัฒนาจากทั่วโลกรวมกันพัฒนาไลบรารีเพิ่ม เติม ทําให Arduino มีความสามารถเพิ่มมากขึ้น จากตัวฮารดแวรของ Arduino ที่เปดกวาง ทําใหมีบริษัทตางๆ จากทั่วโลก ไดพัฒนาแผงวงจร Arduino เพิ่มเติมเปนรุนตางๆ รวมถึงแผงวงจร i-Duino UNO จากบริษัท อินโนเวตีฟ เอ็กเพอริเมนต จํากัด ซึงมี ่ การทํางานตรงกับฮารดแวร Arduino UNO ทําใหนักพัฒนาสามารถทดลองฮารดแวรของ Arduino ไดจริงจัง

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


2 Arduino

รูปที่ 1 สวนประกอบทีสํ่ าคัญของ i-Duino UNO แผงวงจรไมโครคอนโทรลเลอรสําหรับการเรียนรู 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


Arduino  3

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 ซึ่งเขากันไดกับ Arduino UNO R3 โดยใน i-Dunino UNO ไดเพิ่มเติมจุดตอพอรตอินพุตเอาตพุตทั้งหมดในรูปแบบที่มีการจัด ขาเหมือนจุดตอเซอรโวมอเตอรและสวิตชเพื่อเลือกระบบไฟเลี้ยง สงผลใหแผงวงจร i-Duino UNO มีความพรอมสําหรับการเรียนรูและใชงานไมโครคอนโทรลเลอรเปนอยางดี คุณสมบัติทางเทคนิคที่สําคัญมีดังนี้  ใชไมโครคอนโทรลเลอร 8 บิตเบอร ATmega328 ของ Atmel รองรับโปรแกรมควบคุมที่

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

16MHz จากคริสตอล

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

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

 มีจุดตอพอรตตามาตรฐานของ Arduino UNO และจุดตอแบบ IDC 3 ขา (ขาสัญญาณ, ไฟ

เลี้ยง และกราวด) รวม 14 จุด แบงเปนขาพอรตดิจิตอล 14 จุด (ขาพอรตหมายเลข 0 ถึง 13) และขา พอรตแบบดิจิตอลหรืออะนาลอก (กําหนดได) 6 จุด (หากใชเปนขาอินพุตอะนาลอกเปนขา A0 ถึง A5 และถาใชเปนขาพอรตดิจิตอลเปนขาพอรตหมายเลข 14 ถึง 19)  มีจุดตอระบบบัส 2 สาย (I2C) เพือขยายระบบ ่  มีจุดตอพอรตสือสารข ่ อมูลอนุกรม UART 4 ขา (TxD, RxD, ไฟเลี้ยง และกราวด)

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


รูปที่ 1-2 วงจรของแผงวงจร i-Duino UNO

4 Arduino


Arduino  5

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 มาตรฐาน บรรจุเฟรมแวรบูตโหลดเดอรทีตรงกั ่ บ Arduino UNO 100% สวนชิปที่ทําหนาทีเชื ่ ่อมตอกับพอรต USB ใชไมโครคอนโทรลเลอร ATmega16U2 ที่บรรจุเฟรมแวรเพื่อทําหนาทีเป ่ นตัวแปลงสัญญาณพอรต USB เปนสัญญาณขอมูลอนุกรม UART ความถี่สัญญาณนาฬิกาของวงจรคือ 16MHz จากคริสตอล


6 Arduino

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

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


Arduino  7

1.2 LCD-IO shield แผงวงจรโมดูล LCD และอุปกรณอินพุตเอาตพุต อเนกประสงคสําหรับ Arduino UNO และ i-Duino UNO เปนแผงวงจรทีติ่ ดตังอุ ้ ปกรณภายนอกเพืออํ ่ านวยความสะดวกในการเรียนรู ทดลอง และใชงาน แผงวงจรไมโครคอนโทรลเลอรยอดนิยมอยาง Arduino UNO และแผงวงจรทีเข ่ ากันได โดยเฉพาะอยาง ยิงกั ่ บบอรด i-Duino UNO ทังยั ้ งรองรับถึงแผงวงจร Arduino ในรุน Arduino Duemilanove และ Arduino Diecimila อีกดวย โดยบนแผงวงจรประกอบดวย 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


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

+

LDR Light

+

A

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

ZX-LDR +

10k

S

+

A

+

LDR

S

+

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


Arduino  9

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, หนาตาเมือต ่ อสายสัญญาณพรอมใชงานและกราฟคุณสมบัติ


10 Arduino

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

K1 Din

+V Dout GND

S

+

Di +

R1 150

Do

Di + Do

+ S

+V Din GND

K3

LED1 LED-RGB WS18211

K2 Dout

Di Do +-

รูปที่ 1-7 แผงวงจร ZX-SLED3C และวงจร LED-RGB WS2812 #1 Data In

LED-RGB WS2812 #3

LED-RGB WS2812 #5

LED-RGB WS2812 #n

Di

Di

Di

Di

+

+

+

+

-

-

-

-

Do

Do

Do

Do

Di

Di

Di

Di

+

+

+

+

-

-

-

-

Do

Do

Do

Do

LED-RGB WS2812 #2

LED-RGB WS2812 #4

LED-RGB WS2812 #6

LED-RGB WS2812 #n+1

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


Arduino  11



T0H

  

T0L

T1H

T1L









T0H







T0L

   

   



T1H Treset

T1L Treset

  

รูปที่ 1-9 รูปแบบของสัญญาณขอมูลทีใช ่ ในการติดตอกับ WS2812 ภายใน LED 3 สี RGB แบบโปรแกรมได การติดตอเพื่อควบคุมการทํางานจะกระทําผานจุดตอ Di หากตองการใชงานมากกวา 1 ชุด ก็ใหตอขา Do ของตัวแรกเขากับขา Di ของแผงวงจร ZX-SLED3C ตัวถัดไป ในแบบลูกโซหรือ Daisy chain แบบไมรูจบ นั่นคือ จะตอพวง LED ไปกี่ตัวก็ได ดังในรูปที่ 1-8 สําหรับรูปแบบสัญญาณขอมูล “0” และ “1” ของชิปควบคุม WS2812 แสดงในรูปที่ 1-9 จะเห็น ไดวา ใชความกวางของสัญญาณที่แตกตางกันเปนตัวกําหนดคาของขอมูล “0”, “1” และ RESET ไฟเลี้ยงของวงจรนี้ใชไดตังแต ้ +4.5 ถึง +6V ความถี่ของสัญญาณนาฬิกาภายในตัว LED คือ 800kHz ผูใช  งานสามารถเขียนโปรแกรมเพื่อสั่งให LED1 ขับเฉพาะแมสีแสง (แดง, เขียว, นํ้าเงิน) หรือผสมกันในอัตราสวนความสวางเทาใดก็ได ภายในชวง 0 ถึง 255 (256 ระดับ) และเมื่อตอพวง กัน ก็ยังสามารถควบคุม LED แตละดวงไดอยางอิสระ

1.5 อะแดปเตอรไฟตรง (อุปกรณเสริมทีต่ องแนะนํา) ถึงแมวาแผงวงจร i-Duino UNO จะเลือกจายไฟไดจากจุด ต อพอร ต USB แต ก็ มี ข อจํ ากั ดด านความสามารถในการ จายกระแสไฟฟา หากมีอุปกรณภายนอกตอรวมดวยเทาทีมี่ ในชุด i-Duino Starter Kit กระแสไฟฟาจากพอรต USB ยังเพียงพอ แต ถาหากมีอุปกรณที่ตองการกระแสไฟฟาพอสมควรตอเพิ่มเขามา เชน ตองการตอแผงวงจร ZX-SLED3C อีก 3 ชุด กระแสไฟฟา จากพอรต USB จะไมเพียงพอ จึงตองตอแหลงจายไฟตรงภาย นอกที่มีความสามารถในการจายกนระแสไฟาไดมากกวาเขาที่ แจกอะแดปเตอร อะแดปเตอรทีแนะนํ ่ าคือ +6.5V 2A หรือ +9V 2A ปลายสายเปนหัวปลั๊กแบบบารเรล (barrel) ซึ่งเปนมาตรฐานที่พบโดยทั่วไป


12 Arduino

1.6 ขอมูลของสายสัญญาณที่ใชในชุด i-Duino Starter kit 1.6.1 สาย JST3AA-8 : สายเชื่อมตอระหวางแผงวงจร

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

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

GND S +5V

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


Arduino  13

    สําหรับ i-Duino UNO นั้นมีลักษณะการใชงานเหมือนกัน Arduino Uno รวมไปถึงโปรแกรม ที่ใชและวิธีการเขียนโปรแกรม โดยจะใชโปรแกรม Arduino สําหรับเขียนโปรแกรมควบคุมบอรด iDuino 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 เพื่อไปยังขั้นตอนตอไป


14 Arduino

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

2.2 ตรวจสอบการติดตั้งไดรเวอรของ i-Duino UNO ในการใชงานแผงวงจร i-Duino UNO ครั้งแรก จะตองตรวจสอบวา คอมพิวเตอรที่ใชงานนั้น ติดตังไดรเวอร ้ แลวหรือไม (2.2.1) ตอสาย miniB-USB กับพอรต USB ของคอมพิวเตอร


Arduino  15

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

(2.2.3) หลังจากทีต่ อแผงวงจร i-Duino UNO เขากับคอมพิวเตอรแลว ใหเปดหนาตาง Device Manager ขึนมาเพื ้ อดู ่ วาไดรเวอรไดติดตังเรี ้ ยบรอยแลวหรือไม ถายังไมไดติดตังจะปรากฏรายชื ้ ออยู ่ ใน  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


16 Arduino

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

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


Arduino  17

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


18 Arduino

เมนู (Menu) แถบเครืองมื ่ อ (Tools bar) แถบเลือกโปรแกรม (Tab) พื้นที่สําหรับเขียนโปรแกรม (Text Editor)

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

พืนที ้ แสดงสถานะการทํ ่ างาน (Status area) พืนที ้ แสดงข ่ อความ (Message area)

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

2.3 ทดสอบการทํางานของโปรแกรม Arduino (2.3.1) เปดโปรแกรม Arduino IDE หนาตางหลักของโปรแกรมจะปรากฏขึ้นมา ดังรูปที่ 2-1 (2.3.2) กอนจะเริมใช ่ งาน ใหตรวจสอบการตังค ้ าของโปรแกรมใหเรียบรอยเสียกอน ซึงมี ่ ดวยกัน 2 เรืองที ่ จะต ่ องตรวจสอบคือ ชนิดของแผงวงจรทีเชื ่ อมต ่ อและตําแหนงของพอรตทีใช ่ ในการเชือมต ่ อ (2.3.3) เริ่มจากกําหนดแผงวงจรที่นํามาเชือมต ่ อ เลือกไปที่ Tools > Board > Arduino Uno


Arduino  19

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

สําหรับ COMxx จะขึนอยู ้ กั บตําแหนงของพอรต COM ทีไดรเวอร ่ ของแผงวงจร i-Duino UNO สรางขึน้ โดยตรวจสอบไดจาก Device Manager ถาไมมีการเชือมต ่ อแผงวงจรไวหรือการเชือม ่ ตอลมเหลว อันอาจเกิดจากการไมจายไฟเลียงหรื ้ อสายตอพอรต USB ขาด ก็จะไมมีรายการแสดงใหเลือก (2.3.5) เมื่อกําหนดคาเรียบรอยแลว ใหทดสอบการทํางานของโปรแกรม Arduino ดวยคําสัง่ void setup() {} void loop() {}

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

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


20 Arduino

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

(2.3.9) เขียนโปรแกรมตอไปนี้ แลวบันทึกเปน BlinkTest.ino void 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 ก็ได


Arduino  21

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

(2.3.12) LED ที่ตําแหนง D13 จะติดกะพริบทุกๆ 0.5 วินาที เมื่อไดตามนี้ เปนอันเสร็จสิ้นการติดตังและทดสอบใช ้ งานโปรแกรม Arduino กับแผงวงจร i-Duino UNO แลว


22 Arduino


Arduino  23

   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 ดวงขึ้นดานบนและขอบของแผงวงจรดานซายเสมอกัน


24 Arduino

3.2 ตัวอยางโปรแกรมสําหรับทดสอบการทํางาน 3.2.1 ขับ LED พื้นฐาน (LED_IO1.ino)

int led_11 = 11; void setup() { pinMode(led_11, OUTPUT); } void loop() { digitalWrite(led_11, HIGH); delay(1000); digitalWrite(led_11, LOW); delay(1000); }

// assign led_11 is pin 11

// Set pin 11 as output

// // // //

turn wait turn wait

the for the for

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

LED on a second LED off a second


Arduino  25

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

int led_11 = 11; // int led_12 = 12; // int led_13 = 13; // int led_14 = 14; // void setup() { pinMode(led_11, OUTPUT); // pinMode(led_12, OUTPUT); // pinMode(led_13, OUTPUT); // pinMode(led_14, OUTPUT); // } void loop() { digitalWrite(led_11, HIGH); digitalWrite(led_12, LOW); digitalWrite(led_13, LOW); digitalWrite(led_14, LOW); delay(1000);

assign assign assign assign Set Set Set Set

led_11 led_12 led_13 led_14

led_11 led_12 led_13 led_14

as as as as

(pin (pin (pin (pin

pin pin pin pin 11) 12) 13) 14)

// // // // //

turn turn turn turn wait

the the the the for

LED on LED off LED off LED off a second

11 12 13 14 to to to to

digitalWrite(led_11, digitalWrite(led_12, digitalWrite(led_13, digitalWrite(led_14, delay(1000);

LOW); HIGH); LOW); LOW);

// // // // //

turn turn turn turn wait

the the the the for

LED off LED on LED off LED off a second

digitalWrite(led_11, digitalWrite(led_12, digitalWrite(led_13, digitalWrite(led_14, delay(1000);

LOW); LOW); HIGH); LOW);

// // // // //

turn turn turn turn wait

the the the the for

LED off LED off LED on LED off a second

digitalWrite(led_11, digitalWrite(led_12, digitalWrite(led_13, digitalWrite(led_14, delay(1000);

LOW); LOW); LOW); HIGH);

// // // // //

turn turn turn turn wait

the the the the for

LED off LED off LED off LED on a second

output output output output

}

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


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 คอยๆ สวางขึ้นอีกครัง้


Arduino  27

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

int piezo = 10; void setup() { pinMode(piezo, OUTPUT); } void loop() { tone(piezo,500); delay(5000); noTone(piezo); delay(5000); }

// assign piezo is pin 10

// Set pin 10 as output

// // // //

generate the tone 500Hz wait for 5 second stop generating the tone wait for 5 second

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


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


Arduino  29

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

#include <LiquidCrystal.h> int SW1 = 2; int piezo = 10; int buttonState = 0;

// include the LiquidCrystal library code // Assign SW1 is pin 2 // Assign piezo is pin 10 // variable for reading // the pushbutton status LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // initialize LCD library void setup() { // set up the LCD’s columns and rows lcd.begin(16, 2); lcd.clear(); // clear a message on LCD pinMode(SW1, INPUT); // Set SW1 (pin 2) to input mode pinMode(piezo, OUTPUT); // Set pin 10 as output mode } void loop() { buttonState = digitalRead(SW1); // read the state of the button if (buttonState == LOW) { // set the cursor to column 0, line 0 lcd.setCursor(0, 0); lcd.print(“Press SW1”); // print a message to the LCD tone(piezo,500); // generate the tone 500Hz } else { lcd.clear(); // clear a message on LCD noTone(piezo); // stop generating the tone } }

เมือรั ่ นโปรแกรม ระบบจะรอการกดสวิตช SW1 บนแผงวงจร LCD-IO ้ เมือกดสวิ ่ ตช SW1 ทีโมดู ่ ล LCD แสดงขอความ Press SW1 พรอมกับขับเสียง “ติด” เมือปล ่ อยสวิตช หนาจอแสดงผลจะถูกลางขอความ และเสียงจากลําโพงเงียบลง


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


Arduino  31

3.2.8 สวิตชแสง (LDR_Night_SW.ino) ตอสายจากเอาตพุตแรงดันแปรคาตามแสง พอรต A1/15

#include <LiquidCrystal.h> int LDR = A1; int value = 0; int led_11 = 11;

+

ของแผงวงจร ZX-LDR เขาทีจุ่ ดตอ

// include the LiquidCrystal library code // assign A1 input for the LDR sensor // variable to store LDR sensor value // 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


32 Arduino

lcd.print(value); delay(200); lcd.clear(); if(value<150) { digitalWrite(led_11, HIGH); } else { digitalWrite(led_11, LOW); }

// print a value to the LCD // wait for 200 milisecond // clear a message on LCD

// turn the LED on

// 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


Arduino  33 #include <LiquidCrystal.h> int MCP9701 = A2; int value = 0; float Temp;

// // // //

include the LiquidCrystal library assign A2 input for MCP9701 Sensor sensor variable 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


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


Arduino  35 #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 time CRGB leds[NUM_LEDS]; // this is an array of leds void setup() { delay(1000); LEDS.setBrightness(255); // set the brightness of LED LEDS.addLeds<WS2811, PIN_DATA, RGB>(leds, NUM_LEDS); } void loop() { for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::Red; // set red color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::Magenta; // set magenta color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::Blue; // set blue color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::Cyan; // set cyan color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::Green; // set green color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::Yellow; // set yellow color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } for(int i = 0 ; i < NUM_LEDS ; i++) { leds[i] = CRGB::White; // set white color LEDS.show(); // show this color on LED delay(interval); // interval time of LED operation } }

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


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 }


Arduino  37 for(int j = 0 ; j < 255 ; j++) { for(int i = 0 ; i < NUM_LEDS { leds[i] = CRGB(0, 255 - j, LEDS.show(); } delay(interval); } for(int j = 0 ; j < 255 ; j++) { for(int i = 0 ; i < NUM_LEDS { leds[i] = CRGB(j, 0, 255 LEDS.show(); } delay(interval); // LED }

; i++) j); // fade color // show this color on LED // LED interval time

; i++) j); // fade color // show this color on 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 แผงตอเนื่องกัน


38 Arduino

#include <FastSPI_LED2.h> // include the FastSPI_LED2 library #define NUM_LEDS 5 // define the quantities of ZX-SLED3C // set the interfaced port as pin 19 #define PIN_DATA 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 } 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 ทัง้ 5 แผงเพื่อขับ LED ใหเปนสี ตางๆ แบบนุมนวล  เหมือนกับโปรแกรมในหัวขอ 3.2.11 เริมจากสี ่ แดงเปนสีเหลือง, เขียว, นําเงิ ้ น, ฟา, บานเย็น แลววนกลับมาทีสี่ แดง โดยการทํางานจะเกิดขึนพร ้ อมกันทังหมด ้




Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.