Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ใบความรู้ หน่วยที่ 1

ใบความรู้ หน่วยที่ 1

Published by nongkratom, 2017-09-21 05:27:02

Description: ใบความรู้ หน่วยที่ 1 วิชาไมโครคอนโทรลเลอร์

Search

Read the Text Version

ไมโครคอนโทรลเลอร์นายนิยม เฒ่าทอง[ ]

ArduinoAll Starter Kit ชดุ ทดลองอาดโู น สาหรับผเู ้ รมิ่ ตน้คมู่ อื ทดลองอาดูโนสาหรบั ผูเ้ รมิ่ ตน้ จรงิ จรงิ

กลา่ วแนะนาเกยี่ วกบั ชุดคทิ นี้เป้าหมายโดยรวมของชดุ คทิ นค้ี อื ไดร้ ับความสนกุ สนานจากการทดลองกับอุปกรณ์ทหี่ ลากหลายชนดิทาความเขา้ ใจและทดลองไดง้ า่ ย เหมาะสาหรับผทู ้ เ่ี พงิ่ หัดเริ่มตน้ ศกึ ษาอาดโู นและวงจรอเิ ล็กทรอนิกส์นอกเหนอื จากความสนกุ แลว้ เรายังหวังว่าจะไดร้ ับความรูค้ วามเขา้ ใจในการใชง้ านอปุ กรณ์อิเลก็ ทรอนิกส์ ร่วมกับการเขยี นโปรแกรมเพอ่ื ควบคมุ อปุ กรณส์ มองกลฝังตัวโดยใชบ้ อร์ดอาดโู น เพอื่เป็ นพน้ื ฐานความรู ้ ตอ่ ยอดไปสกู่ ารเขยี นโปรแกรมและพฒั นาวงจร ทซี่ ับซอ้ นดว้ ยตนเองได ้เกย่ี วกบั ArduinoAll……………….เกยี่ วกบั ปัญหาพวกเราพยามทาการเขยี น และออกแบบการทดลอง เพอื่ ใหม้ คี ณุ ภาพและความถกู ตอ้ งมากทส่ี ดุ แตใ่ นบางครัง้ อาจมีขอ้ ผดิ พลาดทคี่ าดไม่ถงึ ไปบา้ ง หรอื มปี ัญหาทดลองแลว้ ไมอ่ อก ผดิ พลาดไม่ทางานสามารถแวะมาเยย่ี มและเสนอขอ้ ซกั ถาม ปัญหาตา่ ง ๆ พวกเราจะพยายามปรับปรงุ และชว่ ยแกไ้ ขปัญหาดงั กลา่ วใหด้ ที ส่ี ดุ ไดท้ ่ี www.arduinoall.com (พวกเราชอบปัญหาและขอ้ เสนอแนะของคณุ เพราะนั่นแปลวา่ เราจะปรับปรุงใหด้ ที สี่ ดุ )ขอบคณุ ทีใ่ หค้ วามไวว้ างใจเลอื กผลติ ภณั ฑจ์ าก ArduinoAll

หาขอ้ มูลการทดลองทงั้ หมดไดจ้ ากหนา้ นี้กอ่ นทพ่ี วกเราจะเรม่ิ ทดลองสว่ นประกอบของแตล่ ะชนิ้ สว่ นการตดิ ตงั้ ซอฟตแ์ วร์การเขยี นโปรแกรมเล็ก ๆ เบอื้ งตน้อิเล็กทรอนกิ สเ์ ลก็ ๆ เบอื้ งตน้ทดลองวงจรวงจรท่ี 1 : เรมิ่ ตน้ กับ Arduino ดว้ ยหลอดไฟ LED กระพริบวงจรที่ 2 : สนกุ กบั หลอดไฟ LED 8 ดวงวงจรที่ 3 : มอเตอร์หมนุ ๆ ควบคมุ โดย ทรานซสิ เตอร์วงจรท่ี 4 : เซอร์โววงจรท่ี 5 : ควบคมุ หลอดไฟ LED หลายดวงดว้ ย IC 74HC595 ชฟิ รีจสิ เตอร์วงจรท่ี 6 : เสยี งเพลง ขบั รอ้ งโดย เปียโซวงจรที่ 7 : กดป่ มุ สวิตช์วงจรที่ 8 : บดิ ๆ หมุน ๆ ตัวตา้ นทานปรับคา่ ได ้วงจรที่ 9 : ตรวจจบั แสงดว้ ย LDRวงจรท่ี 10 : ตรวจวัดอณุ หภมู สิ ภาพแวดลอ้ มรอบ ๆ ตัวดว้ ยเซ็นเซอร์ DS18B20วงจรท่ี 11 : ควบคมุ เครื่องใชไ้ ฟฟ้าขนาดใหญด่ ว้ ยรเี ลย์วงจรที่ 12 : ควบคมุ รเี ลยห์ ลาย ๆ ตวั ง่าย ๆ ดว้ ย IC 2003วงจรที่ 13 : ตรวจจับความสั่นไหวดว้ ยเซนเซอร์ Tiltวงจรท่ี 14 : ผสมแสงหลอดไฟประกายรงุ ้ จากหลอดไฟ LED 3 สีวงจรที่ 15 : ใสส่ วิตช์ 4x4 ป่ มุ เพอ่ื ป้อนขอ้ มลู จากภายนอกใหก้ ับอาดโู นวงจรท่ี 16 : ทาสวติ ชร์ หสั ไวล้ ็อกผไู ้ ม่ประสงคด์ มี าใชง้ านวงจรท่ี 13 : ตรวจจับสง่ิ กดี ขวางวัดระยะทาง ดว้ ยเสยี งอัลตราโซนิกซ์

วงจรที่ 17 : บันทกึ ขอ้ มลู ใสเ่ มมโมรีการ์ด ดว้ ย SD Card Moduleวงจรท่ี 14 : ตรวจจับความเคลอ่ื นไหวของบคุ คลดว้ ย PIRวงจรท่ี 15 : วัดอณุ หภมู แิ ละความชนื้ พรอ้ มกนั ดว้ ย เซน็ เซอร์ DHT11วงจรที่ 16 : สั่งงานแบบไรส้ ายควบคมุ อาดโู น ดว้ ยรีโมทอินฟาเรดวงจรที่ 19 : ใสน่ าฬกิ าใหอ้ าดโู นดว้ ยโมดลู DS1302วงจรที่ 20 : แสดงผลขอ้ ความแบบง่ายๆ ดว้ ย LCDวงจรที่ 21 : รโี มท RF 4 ชอ่ งแบบงา่ ยวงจรท่ี 22 : ควบคมุ อาดโู นแบบไรส้ ายดว้ ย Bluetoothวงจรท่ี 23 : สรา้ งระบบ RFID ไวใ้ ชง้ านเองวงจรท่ี 24 : จาแนกแยกสดี ว้ ยเซนเซอร์สีวงจรที่ 25 : ลาแสงเรเซอรต์ รวจจบั ผบู ้ กุ รกุวงจรที่ 26 : ตรวจวัดสภาพความกดอากาศและอุณหภมู ดิ ว้ ย IC…วงจรที่ : วัดความเอยี งดว้ ยเซน็ เซอร์

การตดิ ตงั้ โปรแกรมโปรแกรมนใ้ี ชส้ าหรับเขยี นโคดโปรแกรมลงในอาดโู น 1. ดาวนโ์ หลดโปรแกรมไดท้ ี่ http://arduino.cc/en/Main/Software 2. คลายซฟิ ไฟล์ 3. สรา้ งไอคอนไวท้ ห่ี นา้ Desktop 4. เสยี บสาย USB Arduino รอใหข้ นึ้ กลอ่ งป๊ อปอัพ 5. เพมิ่ ไดรเวอรฮ์ ารด์ แวร์ ( ในกรณที วี่ นิ โดว์หาไมเ่ จอ )

พ้นื ฐานการเขยี นโปรแกรมเบอ้ื งต้นอาดโู นใชภ้ าษา C ในการเขยี นโปรแกรม นเ่ี ป็ นพนื้ ฐานเลก็ ๆ นอ้ ย ๆ สาหรับคนทไี่ มค่ อ่ ยมคี วามรดู ้ า้ นการเขยี นโปรแกรม คณุ ไม่ตอ้ งกงั วลว่าจะทาไม่ได ้นเ่ี ป็ นบรรยายสรปุ ง่าย ๆ สัน้ ๆ ซง่ึ เพยี งพอสาหรับผุ ้เริ่มตน้ ทจ่ี ะทดลองและเขยี นโปรแกรมส่งั งานอาดโู น สาหรับขอ้ มลู เชงิ ลกึ และรายละเอยี ดเพมิ่ เตมิ ดไู ดท้ ่ีเว็บไซต์ http://www.Arduino.ccโครงสรา้ งอาดโู นแตล่ ะโปรแกรม (หรือทเี่ รียกว่าสเกทช)์ มฟี ังกช์ นั ทจี่ าเป็ นอยู่ 2 ฟังกช์ นั (หรือเรยี กวา่ รทู นี )ฟงั กช์ นั setup : void setup(){} โคดทัง้ หมดทอี่ ยใู่ นปีกกาน้จี ะถกู เรียกใชเ้ ป็ นครัง้ แรก 1 ครัง้ ใช ้สาหรับกาหนดคา่ เร่ิมตน้ ตา่ ง ๆ ใหก้ ับโปรแกรม กอ่ นทโ่ี ปรแกรมสว่ นอ่นื จะทางานฟงั กช์ นั loop : void loop(){} ฟังกช์ ันนจ้ี ะทางานหลังจากฟังกช์ นั setup ทางานเสร็จ เมื่อทางานในฟังกช์ นั นี้เสร็จ โคดจะวงิ่ กลับไปทาทบ่ี รรทดั แรกในฟังกช์ ันนีใ้ หมอ่ ีกครัง้ แบบนไี้ ปเรอื่ ย ๆ จนกว่าจะถอดปล๊กัรปู แบบการเขยี นโปรแกรมสญั ลกั ษณ์ // ใชส้ าหรับคอมเมนทโ์ คดโปรแกรม 1 บรรทดั โคดทอ่ี ยหู่ ลัง // นจ้ี ะไมถ่ กู นาไปรวมในโปรแกรมสญั ลกั ษณ์ /**/ ใชส้ าหรับคอมเมนทโ์ คดโปรแกรมหลายบรรทดั โคดทอี่ ยรู่ ะหวา่ ง /* */ นจ้ี ะไม่ถกูนาไปรวมในโปรแกรมสญั ลกั ษณ์ {} บล็อกปีกกา ใชส้ าหรับกาหนดขอบเขตของโคด เชน่ ในสว่ นของฟังกช์ นั หรอื สว่ นของคาส่ังลปูสญั ลกั ษณ์ ; เซมโิ คลอน ใชส้ าหรับเมอื่ จบคาส่ัง (ถา้ ไม่มีเซมโิ คลอนตอนจบคาสง่ั จะคอมไพลไ์ มผ่ า่ นเพราะโปรแกรมไมร่ ูว้ า่ จบคาส่ังทใ่ี ด)ตวั แปรโปรแกรมไมม่ อี ะไรมากไปกวา่ คาส่ังที่ใชเ้ คล่ือนยา้ ยตวั เลขไปยังตาแหน่งตา่ ง ๆ แบบชาญฉลาด ตวั แปรถกู ใชใ้ นการเกบ็ และเคลือ่ นยา้ ยตัวเลขint (integer) เลขจานวนเต็มใชห้ นว่ ยความจา 2 ไบต์ในการเกบ็ ( 16 บติ ) ใชเ้ กบ็ จานวนเต็มทีไ่ มม่ จี ุดทศนยิ ม สามารถเกบ็ คา่ ไดร้ ะหวา่ ง –32,768 – 32,768long เลขจานวนเต็มใชห้ น่วยความจา 4 ไบต์ในการเกบ็ สามารถเกบ็ ค่าจานวนเต็มทไ่ี มม่ ีจุดทศนยิ มไดร้ ะหวา่ ง -2,147,483,648 ถงึ 2,147,483,647

float เลขทศนยิ มใชห้ นว่ ยความจา 4 ไบต์ในการเก็บ เก็บเลขทีเ่ ป็ นทศนยิ มไดร้ ะหวา่ ง -3.4028235E+38 ถงึ 3.4028235E+38.char (character) เกบ็ ตวั อกั ษร 1 ตวั ท่ีใช ้รหสั แอสกโี คด (เชน่ ‘A’ = 65) ใช ้หน่วยความจา 1 ไบต์ (8 บติ ) อาดโู นจัดการขอ้ ความโดยการเอาอกั ษรหลาย ๆ ตวั มาเรียงต่อกนั หรือเรยี กวา่ อเรย์ของ charBoolean ตัวแปรใชเ้ ก็บค่าจรงิ หรือเท็จมปี ระสทิ ธภิ าพมากเพราะใชห้ นว่ ยความจาแค่ 1บติ เท่านนั้คาสง่ั ทางคณิตศาสตร์โอเปอรเ์ รเตอรถ์ กู ใชใ้ นการจัดการตัวเลข เชน่ เดยี วกบั คณติ ศาสตร์= ใชก้ าหนดคา่ ใหก้ บั ตัวแปร เชน่ x = 10*2 (ตอนนี้ x มคี ่าเทา่ กบั 20)% เรยี กวา่ มอดดูโล ใชเ้ กบ็ เศษจากการหาร เชน่ 12%10 (ผลลพั ทค์ ือ 2)+ ใชบ้ วกตัวเลข- ใชล้ บตัวเลข* ใชค้ ูณตวั เลข/ ใชห้ ารตัวเลขคาสง่ั เปรยี บเทยี บใชส้ าหรับเปรียบเทียบขอ้ มลู== ถา้ เทา่ กนั เชน่ 12==10 ผลลัพธค์ อื false!= ถา้ ไมเ่ ทา่ กนั เชน่ 12 !=10 ผลลพั ธค์ อื true< ถา้ นอ้ ยกวา่ เชน่ 10 < 12 ผลลัพธค์ อื true> ถา้ มากกวา่ เชน่ 10 > 12 ผลลพั ธค์ ือ false>= ถา้ มากกวา่ หรอื เท่ากบั เชน่ 12>=12 ผลลพั ธค์ ือ true<= ถา้ นอ้ ยกวา่ หรอื เทา่ กบั เชน่ 12<=12 ผลลพั ธค์ ือ true

คาสง่ั ควบคุมใชส้ ั่งใหโ้ ปรแกรมทาตามเงอื่ นไข หรือควบคุมใหท้ างานครัง้ ตอ่ ไปอยา่ งไรคาสง่ั if (ถา้ เป็ นแบบนจ้ี ะใหท้ าอะไร)if(เงอื่ นไขคาสั่งเปรียบเทียบ){}else if(เงอ่ื นไขคาสง่ั เปรยี บเทียบ){}else{}คาส่งั นี้ จะทางานโคดคาสง่ั ท่อี ยูใ่ นวงเล็บปี กกา ถา้ เงอ่ื นไขเป็ นจรงิ กจ็ ะจบคาสั่ง แตถ่ า้ไมใ่ ชจ่ ะตรวจสอบเงอ่ื นไขตอ่ ไปท่ี else if ถา้ เงอื่ นไขเงอ่ื นไขเป็ นจรงิ ก็จะจบคาสง่ั แต่ถา้ไมใ่ ชก่ จ็ ะทาคาส่งั ต่อไปคอื else ซง่ึ แปลวา่ ทางานสว่ นนเี้ ลยโดยไมต่ อ้ งตรวจสอบเพราะไมม่ คี าสั่ง if มแี ต่ elseคาสง่ั for (กาหนดจะใหท้ ากร่ี อบ)for(int i=0;i<เงอื่ นไขหรือจานวนรอบ;i++){}ใชเ้ มอ่ื ตอ้ งการทางานซา้ ๆ ตามจานวนรอบทก่ี าหนดดจิ ติ อลpinMode(pin,mode);ใชค้ าสัง่ นีเ้ พอื่ เซต พนิ โหมด , พนิ คอื เลขของขาทคี่ ณุ ตอ้ งการ เชน่ ตาแหนง่ ขาท่ี 0 –19 (อนาล็อก 0-5 คือ ขาที่ 14-19) โหมด คอื จะสั่งใหข้ านใี้ ชส้ าหรบั รับขอ้ มลู เป็ นอนิ พตุหรือใชส้ ่งสัญญาณออกเป็ นเอาต์พทุ mode สามารถเซตได ้3 แบบคือ INPUT,OUTPUT, INPUT_PULLUPdigitalWrite(pin,value);เซตค่าใหก้ บั ขาทีถ่ กู เซตเป็ นเอาตพ์ ตุ วา่ จะใหเ้ ป็ นคา่ HIGH หรือเลข1 (5 โวลต์) หรอืLOW หรือเลข 0 (0 โวลต์)Int digitalRead(pin);อา่ นค่าจากขาทีถ่ กู เซตเป็ นอนิ พตุ วา่ เป็ น HIGH หรอื เลข 1( 5 โวลต์) หรอื LOW หรอืเลข 0 (0 โวลต์)

อะนาล็อกอาดโู นเป็ นอปุ กรณท์ เี่ ป็ นดจิ ติ อล แต่มคี วามสามารถทีจ่ ะจัดการขอ้ มลู ทเี่ ป็ นอะนาล็อกโดยการแปลงใหเ้ ป็ นสัญญาณดจิ ติ อลได ้analogWrite(pin,value);สาหรบั ขาของอาดโู นท่ีรองรับโหมดการทางานแบบ PWM (pulse width modulationขา 3,5,6,9,10,11) ซงึ่ สามารถเปิดปิดสญั ญาณออกทางขาไดไ้ วมาก ๆ จะทาใหด้ ูเหมอื นเป็ นขอ้ มลู เอาตพ์ ตุ แบบอะนาล็อก ขอ้ มลู เอาตพ์ ตุ value มคี า่ ตงั้ แต่ 0 – 255(0% duty cycle ประมาณ 0 โวลต์ และ 100% duty cycle ประมาณ 5 โวลต์)int analogRead(pin);เมอ่ื เซตขาทเ่ี ป็ นอะนาล็อกใหเ้ ป็ นโหมดอนิ พตุ สามารถอา่ นคา่ โวลต์ทส่ี ง่ เขา้ มาไดเ้ ป็ นตวั เลขจานวนเต็มคา่ ตงั้ แต่ 0-1024 (0 เทยี บเท่ากบั 0 โวลต์ และ 1024 เทียบเทา่ กบั 5โวลต์)

พนื้ ฐานอเิ ลก็ ทรอนกิ สเ์ บอ้ื งตน้เพอ่ื ใหไ้ ดค้ วามสนุกในการทดลอง สาหรับผทู ้ ไี่ มม่ คี วามรูท้ างดา้ นอเิ ลก็ ทรอนกิ ส์มากอ่ นแนะนาใหอ้ า่ นขอ้ มลู อปุ กรณท์ ใ่ี ชท้ ดลอง นีเ่ ป็ นขอ้ มลู โดยรวมงา่ ยต่อความเขา้ ใจLED (Light Emitting Diode) - เป็ นหลอดไฟใชส้ าหรบั ใหแ้ สงสวา่ งอยา่ งงา่ ย ๆ มหี ลายสใี หเ้ ลอื ก - มี 2 ขา ขวั้ บวกกบั ขวั้ ลบ - ขวั้ บวกจะขายาวกวา่ - แนะนาใหต้ ่อตวั ตา้ นทานจากดั กระแสไมใ่ หม้ ากเกนิ ไป - ขอ้ มลู เพม่ิ เตมิ .......Diode (ไดโอด) - เป็ นอปุ กรณ์อเิ ล็กทรอนกิ สท์ ่ยี อมใหก้ ระแสไหลผา่ นไดท้ างเดียวใชป้ ้องกนั กระแสไฟฟ้าไหลยอ้ นกลบั - มี 2 ขาขวั้ บวกกบั ขวั้ ลบ - ท่ขี วั้ ลบจะมแี ถบขดี บอกขวั้ ไว ้ - ขอ้ มลู เพม่ิ เตมิ .......Resistors (ตวั ตา้ นทาน) - ใชจ้ ากดั กระแสไฟฟ้าใหว้ งจร - อา่ นค่าไดจ้ ากแถบสีทอี่ ยบู่ นตวั ตา้ นทาน - มี 2 ขาไมม่ ขี วั้ - ขอ้ มลู เพม่ิ เตมิ .......Transistor (ทรานซสิ เตอร)์ - ใชข้ ยายกระแสหรอื เป็ นสวติ ชใ์ หก้ บั วงจรขนาดใหญ่ - มหี ลายรปู แบบแตส่ ามารถอา่ นค่าเบอรท์ รานซสิ เตอร์ไดจ้ ากตัวทรานซสิ เตอร์ - มี 3 ขา(Base,Collector,Emitter) ดูขาจากค่มู อื ของทรานซสิ เตอรแ์ ตล่ ะเบอร์Servo (เซอรโ์ ว) - เป็ นมอเตอรท์ ีส่ ามารถสั่งใหห้ มนุ เป็ นองศาได ้ - มี 3 ขา ขาไฟบวก,ขากราวน์และขาสญั ญาณDC Motor (มอเตอรก์ ระแสตรง)

- มอเตอร์ เมอื่ ใหไ้ ฟแลว้ จะหมนุ - มี 2 ขา ไมม่ ขี วั้ แตจ่ ะหมนุ ทศิ ทางใดขน้ึ อย่กู บั ขวั้ ไฟท่จี า่ ยให ้ - ไฟสัญญาณจากอาดโู นอาจจะไมพ่ อจ่ายใหก้ บั มอเตอร์ สามารถใชท้ รานซสิ เตอร์ หรือรีเลยช์ ว่ ยจ่ายกระแสไฟได ้Piezo Element (เปี ยโซ) - เมอ่ื ใหก้ ระแสไฟฟ้าเป็ นสญั ญาณเสยี งจะมเี สียงรอ้ งได ้ - มี 2 ขาIntegrated Circuit หรอื IC (ไอซ)ี - เป็ นวงจรรวมท่ีมอี ปุ กรหลาย ๆ ตัวรวมกนั เป็ นแพค็ เกจเดียวกนั ทาใหใ้ ชง้ านงา่ ย - มหี ลายขาแลว้ แต่ประเภทของไอซี - วธิ ดี ูขาท่ี 1 จะมจี ดุ มารค์ ไวท้ ่ีตวั ไอซีPushbutton (สวติ ชก์ ดตดิ ปลอ่ ยดบั ) - เป็ นสวติ ชก์ ดตดิ ปล่อยดบั - มหี ลายรูปแบบ สว่ นมากจะมี 2 - 4 ขา ไมม่ ขี วั้Potentiometer (ตวั ตา้ นทานปรบั คา่ ได)้ - เป็ นตัวตา้ นทานทป่ี รับคา่ ได ม้ หี ลายค่าใหเ้ ลือกใชง้ าน - มหี ลายรปู แบบ สว่ นมากจะมี 3 ขาPhoto Resistor (ตวั ตา้ นทานปรบั คา่ ไดต้ ามแสง) - เป็ นตวั ตา้ นทานทป่ี รบั คา่ ไดต้ ามแสง เมอ่ื แสงมากจะมคี วามตา้ นทานนอ้ ยลง - ทดี่ า้ นบนของอปุ กรณ์จะเป็ นตัวรบั แสง - มี 2 ขาไมม่ ขี วั้Relay (รเี ลย)์ - เป็ นสวติ ชใ์ ชค้ วบคุมไฟฟ้าโวลตส์ งู สั่งงานดว้ ยไฟโวลตต์ ่า - มหี ลายรปู แบบ สว่ นมากจะมี 5 ขา โดย 2 ขาจะเป็ นคอยล์ เมอื่ ใหไ้ ฟที่ 2ขาน้ี คอล์ยจะกลายเป็ นแมเ่ หลก็ ชวั่ คราว ดูดหนา้ สัมผสั ของสวติ ชท์ ี่เป็ นเหลก็ ลงมาเมอื่ หยดุ ใหไ้ ฟหนา้ สมั ผัสของสวติ ชก์ ็จะเดง้ กลบั ไป - ไฟสัญญาณจากอาดูโนไมพ่ อจา่ ยใหก้ บั รเี ลย์ สามารถใชท้ รานซสิ เตอรห์ รอื ไอซี ชว่ ยขยายกระแสได ้

วงจรท่ี 01 : เรม่ิ ตน้ กบั Arduino ดว้ ยหลอดไฟ LED กระพรบิอยากทาไดแ้ บบนใ้ี ชม่ ยั้ 1. อยากเขยี นโปรแกรม แตไ่ ม่มพี นื้ ฐานไมร่ จู ้ ะเรม่ิ ยงั ไง 2. อยากตอ่ วงจรอิเล็กทรอนิกส์ แตไ่ ม่มพี น้ื ฐาน กลัวตอ่ แลว้ พงั ตอ่ แลว้ ไฟชอ็ ต มแี บบง่ายๆ ไม่ตอ้ ง กลวั พงั ไม่ตอ้ งกลัวไฟชอ็ ต มีหรือป่ าว 3. อยากสั่งใหเ้ คร่อื งใชไ้ ฟฟ้าเปิด/ปิด ไดต้ ามเวลาทต่ี อ้ งการเราจะทาไดอ้ ย่างไรเริม่ จากการตอ่ วงจรงา่ ยๆ การเขยี นโปรแกรมงา่ ย ๆ ดว้ ยการทดลอง LED นี้LEDs (light emitting diodes) ถกู ใชง้ านอยา่ งหลากหลาย เนอ่ื งจากมหี ลายสใี หเ้ ลอื กประหยัดไฟราคาถกู ใชง้ านและทาความเขา้ ใจไดง้ า่ ย ใสไ่ ฟสลบั ขัว้ ก็ไม่พัง จงึ เหมาะกับการเรม่ิ ตน้ กบั อาดโู นทจ่ี ดุ นี้ การทดลองนจี้ ะสงั่ ใหห้ ลอดไฟ LED เปิด/ปิดสลับกนั หรอื กระพรบิ น่ันเอง เพอ่ื เรยี นรกู ้ ารเขยี นโปรแกรม การอัพโหลดโปรแกรมลงบอรด์ อาดโู น การตอ่ สายไฟและลงอุปกรณใ์ นบอรด์ ทดลองอปุ กรณ์ทดลอง1. บอร์ดทดลองขนาดเล็ก 1 บอร์ด2. ตัวตา้ นทาน 560 โอห์ม 1 ตัว3. หลอดไฟ LED 1 ตัว4. สายไฟจัมเปอร์ ตามใจชอบวงจรทดลอง

ขนั้ ตอนที่ 1 ต่อวงจรขนั้ ตอนที่ 2 เขยี นโปรแกรม (ไมต่ อ้ งพมิ พอ์ ะไรแคค่ ลกิ )

คลกิ ที่ : File>Examples>Basics>Blinkตัวอยา่ งน้ีจากเว็บ Arduino.cc เขา้ ไปดทู เ่ี ว็บเพอื่ หาไอเดยี รเ์ พม่ิ เตมิโคดทไี่ ดด้ ังน้ี// ขา 13 ของอาดโู นตอ่ กบั LED// ประกาศตวั แปรแบบ int ชอ่ื วา่ ledint led = 13;// ฟังกช์ ัน setup น้ีจะรัน 1 ครั้งเมอ่ื เริม่ ตน้ โปรแกรมvoid setup() {// กาหนดดจิ ติ อลพนิ ของตวั แปร led เป็ นโหมด เอาตพ์ ตุ pinMode(led, OUTPUT);}// ในฟังกช์ นั loop จะทางานวนซ้าไปเรื่อย ๆ จนกวา่ จะถอดปล๊กั ออกvoid loop() { digitalWrite(led, HIGH); // เปิดไฟ LED (HIGH แทนไฟเปิด) delay(1000); //หน่วงเวลาไว ้ 1000 มิลลวิ ินาทหี รือ 1 วนิ าที digitalWrite(led, LOW); //ปิดไฟ LED (LOW แทนไฟปิด)

delay(1000); // หน่วงเวลาไว ้ 1000 มลิ ลวิ นิ าทหี รอื 1 วนิ าที}ขนั้ ที่ 3 อพั โหลดโปรแกรมเสยี บสาย USB ของอาดโู นเขา้ กับเคร่อื งคอมพวิ เตอร์ ถา้ ยังไม่เคยอัพโหลดโปรแกรมลงบอรด์ อาดโู นใหเ้ ชค็ 3 จดุ คอื 1. เช็ควา่ เลอื กบอร์ดถกู แลว้ ในกรณีนี้ใชบ้ อร์ด Arduino Uno 2. เช็ควา่ เลอื กพอรท์ ทเี่ ชอ่ื มตอ่ กบั อาดโู นถกู ตอ้ งแลว้ ปกตโิ ปรแกรมจะคน้ หาใหอ้ ัตโนมัติ แตเ่ ชค็ เพอ่ื ความแน่ใจอกี ครัง้ 3. เชค็ ว่าเลอื ก โปรแกรมเมอร์หรอื ตวั โปรแกรมถกู ตอ้ งแลว้ ในกรณนี ใี้ ชบ้ อรด์ อาดโู นเป็ นตัว โปรแกรมเมอร์ ใหเ้ ลอื กที่ Parallel Programmer

เมื่อเช็ค 3 จดุ ดว้ ยความรวดเร็วแลว้ กดอัพโหลดโปรแกรมลองบอร์ดไดเ้ ลย กดทร่ี ปู ลกู ศร หรอื ถา้ ไม่ ทันใจจะใชค้ ยี ล์ ัดก็ Ctrl+U ถ้ าอัพโหลดสาเร็จด้านล่างจะขนึ ้ Done uploading พร้ อมกับบอกขนาดไฟลโ์ ปรแกรมจาก ตัวย่างนี ไ้ ฟลข์ นาด 1,084 ไบต์ ( จากพนื ้ ที่ทงั ้ หมด 32,256 ไบต์ )ไมท่ างาน ? 1. โปรแกรมอัพโหลดไมส่ าเร็จ : อาจเกดิ ขนึ้ ไดใ้ นบางครัง้ เม่อื เลอื กพอรต์ ไมถ่ กู หรอื ยังไมไ่ ดเ้ สยี บ สาย usb ลองเชค็ ขนั้ ที่ 3 อัพโหลดโปรแกรม ขอ้ 1-3 ใหม่อกี ครั้ง 2. อัพโหลดสาเร็จแตไ่ ฟไมต่ ดิ : เช็คว่าหลอดไฟยังใชไ้ ดอ้ ยู่ อาจจะใสผ่ ดิ ขัว้ กไ็ ด ้ 3. ในกรณีมีใหเ้ ลอื กหลายพอร์ท จะดพู อรท์ ทเี่ ชอ่ื มตอ่ กบั อาดโู นไดอ้ ยา่ งไร วธิ ดี พู อร์ททตี่ อ่ กบั อาดู โน ใหไ้ ปทส่ี ตารท์ เมนู > พมิ พค์ าว่า device manager จากนัน้ ดทู ี่ Ports(COM & LPT) จากตวั อยา่ งน้จี ะพบวา่ บอรด์ อาดโู นเราเชอ่ื มตอ่ กบั พอร์ทท่ี COM52

อยากทาใหด้ มี ากกว่านี้1. ไมจ่ าเป็ นตอ้ งตอ่ LED กับขา 13 ของอาดโู นเสมอไป สามารถใชไ้ ดก้ ับทกุ ขาของอาดโู นทเี่ ป็ นขา อินพตุ /เอาตพ์ ตุ (0-13 เป็ นแบบดจิ ติ อลและ A0-A5 เป็ นแบบอะนาล็อก) ดรู ูปดา้ นลา่ ง ประกอบ สมมุตวิ า่ เลอื กตอ่ LED ทข่ี า 7 แทน กใ็ หไ้ ปแกโ้ คด จาก ind ledPin=13; -> int ledPin = 7 กด อัพโหลดโคด (Ctrl+U) แลว้ ดผู ลลพั ธ์2. เปลยี่ นเวลากระพริบ ถา้ รูส้ กึ ไม่พอใจกบั เวลาในการเปิดปิด ในโคดสามารถเปลยี่ นเวลาใหมไดต้ าม ตอ้ งการ ทคี่ าส่ัง delay(เวลาทจ่ี ะหนว่ ง 1000 = 1 วินาท)ี3. ปรับความสวา่ ง ถา้ รูว้ ่าสกึ แสงจาก LED แสบตาไมน่ ุ่มนวล สามารถปรับความสว่างลงได ้โดยใชว้ ธิ ี เปิดปิดไว ๆ สลบั กนั เรยี กวา่ PWM(pulse width modulation) แตไ่ มใ่ ชว่ ่าจะใชไ้ ดก้ ับทกุ ขา

รปู นมี้ องเห็นตัวหนอนกันหรือเปลา่ ทข่ี า 3 , 5 , 6 , 9 , 10 , 11 ขาเหลา่ นร้ี วมทงั้ A0 , A1 , A2 ,A3, A4 , A5 สามารถสัง่ ใหเ้ ปิดปิดสลบั กันไว ๆ (PWM) ได ้ ขาอนื่ หมดสทิ ธ์ิ และคา่ ทจ่ี ะสง่ ออกไปไดม้ ีคา่ อยรู่ ะหว่า 0 – 255 แสดงวา่ เราสามารถปรับความสว่างใหก้ ับ LED ไดท้ งั้ หมด 256 คา่ รวมกบั คา่0 ดว้ ยซง่ึ กค็ อื ปิดไฟนั่นเองเริ่มทดลองเลยโดยเลอื กขา 9 เป็ นขาทตี่ อ่ กับ LED ดังนัน้ เปลยี่ นโคดเป็ น int ledPin = 9; และanalogWrite(ledPin,200); อัพโหลดแลว้ ดผู ลลัพธ์ลองเปลย่ี นคา่ 200 เป็ นคา่ ระหวา่ ง 0-255 แลว้สังเกตผลลัพธ์

ไฟลต์ วั อย่าง Fading ลองเปิดแลว้ แกไ้ ขใหท้ างานไดแ้ ลว้ จะเหน็ แสง LED ทส่ี ว่างไสวสวยงามกอ่ นจบการทดลองนี้ ทบทวนกนั อกี ครงั้ นะ

pinMode(pin,mode); ใชค้ าสั่งนี้เพอ่ื เซต พนิ โหมด , พนิ คอื เลขของขาทคี่ ณุ ตอ้ งการ เชน่ ตาแหนง่ ขาท่ี 0 – 19 (อนาล็อก 0- 5 คอื ขาที่ 14-19) โหมด คอื จะสั่งใหข้ าน้ใี ชส้ าหรับรับขอ้ มลู เป็ นอินพตุ หรือใชส้ ง่ สญั ญาณออกเป็ น เอาตพ์ ทุ mode สามารถเซตได ้3 แบบคอื INPUT, OUTPUT, INPUT_PULLUP เชน่ :: pinMode(13, OUTPUT); // เซตขา 13 ใหเ้ ป็ นโหมดเอาตพ์ ตุ digitalWrite(pin,value); เซตคา่ ใหก้ ับขาทถี่ กู เซตเป็ นเอาตพ์ ตุ ว่าจะใหเ้ ป็ นคา่ HIGH หรอื เลข1 (5 โวลต)์ หรอื LOW หรอื เลข 0 (0 โวลต)์ เชน่ :: digitalWrite(13, HIGH); // เปิดไฟทขี่ า 13 (HIGH แทนไฟเปิด) โครงสรา้ ง อาดโู นแตล่ ะโปรแกรม (หรือทเ่ี รียกวา่ สเกทช)์ มีฟังกช์ นั ทจี่ าเป็ นอยู่ 2 ฟังกช์ นั (หรอื เรยี กว่ารูทนี ) ฟงั กช์ นั setup : void setup(){} โคดทงั้ หมดทอ่ี ยใู่ นปีกกานจี้ ะถกู เรียกใชเ้ ป็ นครั้งแรก 1 ครั้ง ใช ้ สาหรับกาหนดคา่ เริม่ ตน้ ตา่ ง ๆ ใหก้ ับโปรแกรม กอ่ นทโี่ ปรแกรมสว่ นอ่นื จะทางาน ฟงั กช์ นั loop : void loop(){} ฟังกช์ นั นี้จะทางานหลงั จากฟังกช์ นั setup ทางานเสร็จ เมื่อทางานใน ฟังกช์ ันนี้เสร็จ โคดจะวง่ิ กลบั ไปทาทบ่ี รรทดั แรกในฟังกช์ นั นีใ้ หม่อีกครั้ง แบบน้ไี ปเรอื่ ย ๆ จนกวา่ จะถอด ปล๊กัวงจรท ่ี 02 : เลน่ กบั LED ใหส้ นุกตอ้ งตอ่ 8 ตวั ตวั แปรแบบจานวนเต็ม int (integer) เลขจานวนเตม็ สามารถเก็บคา่ ไดร้ ะหว่าง –32,768 ถงึ 32,768 เชน่ :: int led = 13; //ประกาศตัวแปรแบบ int ชอื่ วา่ led เกบ็ เลข 13อยากทาแบบนไี้ ดใ้ ช่มย้ั 1. อยากเขยี นโปรแกรมทที่ างานซา้ ๆ ใหม้ โี คดสนั้ ลงเพอื่ ประหยดั เวลาประหยัดหน่วยความจา 2. อยากทาป้ายไฟว่งิ ทม่ี ีรปู แบบการวงิ่ ตามใจเราเอง

เราจะทาไดอ้ ยา่ งไรเราไดล้ องทาตอ่ วงจรและเขยี นโปรแกรมควบคมุ LED 1 ตัวใหก้ ระพริบไปแลว้ ตอนน้ีไดเ้ วลาเขยี นโปรแกรมใหค้ วบคมุ LED 8 ตัวกนั แลว้ วงจรนจี้ ะทาใหเ้ ขา้ ใจการใชง้ านของขาเอาตพ์ ตุ ของอาดโู นในการควบคมุ อุปกรณต์ า่ ง ๆ มากขน้ึ และเขยี นโปรแกรมส่งั งานไฟกระพริบ ใหเ้ ป็ นรูปแบบของเราเพยี งคนเดยี ว การเขยี นโปรแกรมควบคมุ LED จะเริม่ จากการส่งั ควบคมุ แบบงา่ ย ๆ แตโ่ คดหลายบรรทดั หนอ่ ยไปจนถงึ การยอ่ โคดใหส้ ัน้ และเลก็ ลง โดยใชค้ าสงั่ ทาซา้ for() การใชง้ านกลมุ่ ของตัวแปรหรือเรียกวา่array(อะเรย)์ และการรวมกลมุ่ ของคาสั่งไวด้ ว้ ยกนั โดยเขยี นเป็ นฟังกช์ นั ของเราขนึ้ มาเองอปุ กรณ์ทดลอง 1 บอรด์ 1. บอรด์ ทดลองขนาดเล็ก 8 ตวั 2. ตัวตา้ นทาน 560 โอหม์ 8 ตัว 3. หลอดไฟ LED ตามใจชอบ 4. สายไฟจัมเปอร์วงจรทดลองขนั้ ท่ี 1 ตอ่ วงจร

ขนั้ ตอนที่ 2 เขยี นโปรแกรม (ไมต่ อ้ งพมิ พอ์ ะไรแคค่ ลกิ ) ดาวน์โหลดโคดไดท้ นี่ ี่ circuit02.inoขน้ั ที่ 3 อพั โหลดโปรแกรมแลว้ ดผู ลลพั ธ์อยากทาใหด้ กี วา่ น้ีลองทาไฟวิง่ เป็ นสไตลข์ องตวั เอง ทไ่ี ม่เหมือนใครโดยใชค้ าสัง่ for มาชว่ ย และอาจจะปรับความสวา่ งของ LED แตล่ ะดวงดว้ ยเทคนิคเปิด/ปิดไว ๆ สลบั กัน (PWM) เหมอื นแลปที่ 1

ทบทวนกอ่ นจบการทดลอง รปู แบบการเขยี นโปรแกรม สญั ลกั ษณ์ // ใชส้ าหรับคอมเมนทโ์ คดโปรแกรม 1 บรรทัด โคดทอี่ ยู่หลงั // นจ้ี ะไม่ถูกนาไปรวมในโปรแกรม สญั ลกั ษณ์ /**/ ใชส้ าหรับคอมเมนทโ์ คดโปรแกรมหลาย บรรทัด โคดทอี่ ยู่ระหว่าง /* */ นจ้ี ะไมถ่ ูกนาไปรวมในโปรแกรม สญั ลกั ษณ์ {} บลอ็ กปีกกา ใชส้ าหรับกาหนดขอบเขตของโคด เชน่ ในสว่ นของฟังกช์ นั หรอื ส่วนของคาสง่ั ลูป สญั ลกั ษณ์ ; เซมโิ คลอน ใชส้ าหรับเมอ่ื จบคาสั่ง (ถา้ ไม่มเี ซมโิ คลอนตอนจบคาส่ัง จะคอมไพลไ์ มผ่ า่ นเพราะโปรแกรมไม่รู ้ วา่ จบคาสง่ั ทใี่ ด) คาส่งั for (กาหนดจะใหท้ ากรี่ อบ) for(int i=0;i<เงอ่ื นไขหรอื จานวนรอบ;i++){} ใชเ้ มอ่ื ตอ้ งการทางานซา้ ๆ ตามจานวนรอบทก่ี าหนด

วงจรที่ 03 : มอเตอรห์ มนุ ๆ ควบคมุ โดย ทรานซสิ เตอร์เรากาลงั จะทาอะไรขาของอาดโู นสามารถทจ่ี ะควบคมุ สัญญาณไฟฟ้าขนาดเลก็ ไดโ้ ดยตรง เชน่ หลอดไฟ LED แตถ่ า้ตอ้ งการจะไปควบคมุ สัญญาณไฟฟ้าขนาดใหญ่ เชน่ มอเตอร์ ของเลน่ หรือเครื่องซักผา้ จะพบว่าไม่สามารถทาได ้จาเป็ นตอ้ งอาศัยทรานซสิ เตอรม์ าชว่ ยขยายสัญญาณ ในการทดลองน้ีเลอื กใช ้ทรานซสิ เตอร์เบอร์ P2N2222A ซงึ่ สามารถทนแรงดนั ไฟฟ้าสงู สดุ ได ้40 โวลตแ์ ละทนกระแสสงู สดุ600 มิลลแิ อมป์ สามารถขับมอเตอร์(ของเรา) ไดอ้ ยา่ งสบาย และตอ้ งตอ่ ไอโอดเพมิ่ เพอ่ื ใชป้ ้องกันกระแสไหลยอ้ นกลับไมใ่ หม้ าทาลายทรานซสิ เตอรไ์ ดใ้ นกรณที ม่ี ไี ฟฟ้าไหลยอ้ นกลับจากมอเตอร์อุปกรณ์ทดลอง1. บอร์ดทดลองขนาดเลก็ 1 อัน2. ตัวตา้ นทานคา่ 2.2KΩ 1 ตวั3. มอเตอร์ของเลน่ 1 ตวั4. ไดโอดเบอร์ 14001 1 ตัว5. ทรานซสิ เตอรเ์ บอร์ P2N2222AG 1 ตัว6. สายไฟวิธีดูขาทรานซสิ เตอร์

ขน้ั ท่ี 1 ตอ่ วงจรทดลอง

ขนั้ ที่ 2 เขยี นโคดโปรแกรม(แคค่ ลกิ ) circuit03ขนั้ ท่ี 3 อพั โหลดไฟลล์ งบอรด์ อาดโู นแลว้ ดผู ลลพั ธ์อยากทาใหด้ มี ากกว่าน้ีเราจะปรับความเร็วมอเตอรเ์ หมือนปรับความเร็วพัดลมไดม้ ัย้ เราเคยเลน่ กับ LED ใหป้ รับความสวา่ งได ้แลว้ ซง่ึ คา่ ทปี่ รับไดอ้ ยรู่ ะหว่าง 0-255 ตอนนี้ลองใชโ้ คดเดมิ ปรับความเร็วใหม้ อเตอรห์ มนุ ชา้ เร็วตามใจเราบา้ ง โดยใชว้ ิธีการ PWM (Pulse Width Modulation) ปกตไิ ฟทอ่ี อกมาจากขาของอาดโู นจะมแี ค่เปิดกบั ปิดหรือ 5V กบั 0V จะไมส่ ามารถปรับโวลตใ์ หล้ ดลงได ้แตส่ ามารถใชก้ ารเปิดปิดไว ๆ เพอื่ ให ้เสมือนว่าสามารถปรับไฟลดลง เพราะสายตาของคนเราแยกความเร็วในการเปิด/ปิดไวขนาดนไ้ี ม่ออกสามารถอธิบายไดด้ ังรูปจากรปู กราฟท่ี 1 ใชค้ าส่ัง analogWrite(0) หรอื ก็คอื ปิด สญั ญาณไฟทอี่ อกจะเป็ น 0V สว่ นกราฟสดุ ทา้ ยใชค้ าสั่ง analogWrite(255) ไฟทอี่ อกจะเป็ น 5V สว่ นกราฟท่ี 2 ใชค้ าสงั่ analogWrite(64)สญั ญาณทไ่ี ดถ้ า้ เตม็ 1 ลกู คลนื่ จะไดว้ า่ เปิด 25% ปิด 75% เชน่ เดยี วกบั กราฟที่ 3 ทเี่ ปิด 50% ปิด50% กจ็ ะใชค้ าสั่ง analogWrite(127) เลข 127 กค็ อื ครง่ึ หน่ึงของ 255 น่ันเอง แลว้ กราฟที่ 4 ละ่ทางานอยา่ งไร ???

1. หลงั จากเขา้ ใจหลกั การทางานแบบครา่ ว ๆ กันแลว้ คราวน้ีลองเขยี นคาสั่งปรับความเร็วมอเตอร์ กนั หน่อย ดัดแปลงจากโคด digitalWrite(motorPin, HIGH); // สงั่ มอเตอร์ทางาน เปลยี่ นเป็ น analogWrite(motorPin,20) // สงั่ ใหเ้ ปิดปิดแบบไว ๆ ทคี่ วามเร็ว 20 จากความเร็วเตม็ 2552. ทาไมตอ้ งจากัดความเร็วทร่ี ปู แบบเดยี ว ลองทาใหค้ วามเร็วเพมิ่ ขน้ึ ลดลง ลดลงนิดหนอ่ ยเพมิ่ ขนึ้ ไว ๆ ในโคดเดยี วกัน ใหเ้ หมอื นกบั ความเร็วมอเตอรข์ องรถทอี่ ยใู่ นสนามแขง่analogWrite(pin,value);สาหรบั ขาของอาดโู นทร่ี องรบั โหมดการทางานแบบ PWM (pulse width modulationขา 3,5,6,9,10,11) ซงึ่ สามารถเปิดปิดสัญญาณออกทางขาไดไ้ วมาก ๆ จะทาใหด้ ูเหมอื นเป็ นขอ้ มลู เอาต์พตุ แบบอะนาล็อก ขอ้ มลู เอาต์พตุ value มคี า่ ตงั้ แต่ 0 – 255(0% duty cycle ประมาณ 0 โวลต์ และ 100% duty cycle ประมาณ 5 โวลต์)ทบทวนกอ่ นจบการทดลองวงจรที่ 04 : เซอรโ์ วเรากาลงั จะทาอะไรการทดลองทแ่ี ลว้ ไดล้ องหมนุ มอเตอรเ์ ล่นอย่างสนกุ สนานไปแลว้ แต่ถา้ อยากไดไ้ ปควบคุมงานหมนุ แบบมที ศิ ทางและองศาไดอ้ ย่างถกู ตอ้ งแลว้ ละ มอเตอร์ทาไมไ่ ดน้ ิ ถา้อยา่ งนนั้ ตอ้ งไปใชง้ านเซอร์โวกนั แลว้ เซอร์โวเป็ นมอเตอร์ท่สี ามารถสง่ั ใหห้ มนุ เป็ นองศาไดค้ ่อนขา้ งแมน่ ยา มี 3 ขา ขาไฟบวก,ขากราวน์และขาสญั ญาณ มที งั้ แบบควบคมุ ได 0้ -180 องศาและแบบ 0-360 องศา คุณสมบัตแิ ตกตา่ งกนั ไปตามผูผ้ ลติ สามารถส่งั งานรว่ มกบั อาดโู นไดอ้ ย่างงา่ ยดาย เพราะมกี ลมุ่ โคดคาสัง่ หรือ library ใหเ้ รียกใชง้ านอยู่แลว้อปุ กรณท์ ดลอง1. บอรด์ ทดลองขนาดเลก้ 1 บอรด์2. เซอรโ์ วขนาดเล็ก 1 อนั3. สายไฟจัมเปอร์

วงจรทดลอง

ขน้ั ที่ 2 เขยี นโคดโปรแกรม(แคค่ ลกิ ) ดาวนโ์ หลดโคดไดท้ ี circuit04ขนั้ ท่ี 3 อพั โหลดโปรแกรมทาใหด้ มี ากกวา่ นี้ 1. ลองสงั่ ใหห้ มนุ ไปกลบั เป็ นรปุ แบบของเราเองวงจรท่ี 5 : ควบคมุ หลอดไฟ LED หลายดวงดว้ ย IC 74HC595 ชฟิ รจี สิ เตอร ์ตอนนเ้ี ราจะมาเล่นกบั ชฟิ หรือ Intergrated circuits หรอื ทีเ่ ราเรยี กสัน้ ๆ วา่ IC ภายนอกอาจดูเหมอื นกนั แตภ่ ายในบรรจไุ ปดว้ ยวงจรอเิ ล็กทรอนกิ ซบั ซอ้ นแตกตา่ งกนั ตามเบอร์ของแตล่ ะ IC ซงึ่ ราคาก็จะแตกตา่ งกนั ไปดว้ ย บางตัวราคาไมก่ บ่ี าท บางตัวก็แพงมากในขณะที่ IC เบอร์ 74HC595 ท่ีเราใชท้ ดลองนัน้ มรี าคาไมแ่ พงคมุ ้ ค่ากบั การใชง้ านบอรด์ อาดูโนนนั้ มขี าเอาต์พตุ ใชง้ านทจี่ ากดั หากเราตอ้ งการจะนาไปควบคมุ เปิด/ปิดอปุ รณ์ซกั 32 ตวั คงไมส่ ามารถทาไดแ้ น่ แลว้ จะทาไดอ้ ย่างไร ??? งานน้ตี อ้ งพงึ่ พระเองของเรา IC เบอร์ 74HC595 เป็ นไอซชี ฟิ รจี สิ เตอร์ ท่ใี ชส้ ายเพยี ง 3 เสน้ ในการควบคุมแต่สามารถควบคุมสัญญาณไดถ้ งึ 8 ตวั และสามารถนามาตอ่ พว่ งกนั หลาย ๆ ตัวทาให ้ควบคมุ ไดเ้ ป็ นจานวนมาก โดยใชข้ าสญั ญาณจากอาดโู นเพยี ง 3 เสน้อปุ กรณท์ ดลอง1. บอร์ดทดลองขนาดเลก้ 1 บอรด์2. หลอดไฟ LED 8 ดวง3. ตัวตา้ นทาน 560 โอห์ม 8 ตวั4. IC เบอร์ 74HC595 1 ตวั5. สายไฟจัมเปอร์วงจรทดลอง

ขนั้ ท่ี 2 เขยี นโคดโปรแกรม(แค่คลกิ ) ดาวนโ์ หลดโคดไดท้ ี circuit05ขน้ั ท่ี 3 อพั โหลดโปรแกรม

ทาใหด้ มี ากกวา่ น้ี 1. เราลองทาไฟวง่ิ โดยใชต้ อ่ กบั ขาอาดโู นโดยตรงไปแลว้ ทาไมไมล่ องทาไฟ วงิ่ ทคี่ วบคมุ ดว้ ย IC 74HC595 นีด้ บู า้ งวงจรท่ี 6 : เสยี งเพลง ขบั รอ้ งโดย เปี ยโซเรากาลงั จะทาอะไรตอนน้ีเราสามารถควบคมุ หลอดไฟ LED , ควบคมุ มอเตอร์ และมีความรเู ้ รื่องอเิ ลก็ ทรอนิกสม์ ากขนึ้ แลว้เรือ่ งตอ่ ไปกค็ อื การใสเ่ สยี งใหก้ ับอุปกรณ์ของเรา , แตอ่ ยา่ งทร่ี ดู ้ วี า่ เสยี งเป็ นคลน่ื ซงึ่ ก็คอื สญั ญาณอะนาลอ็ ก แลว้ เราจะใหอ้ าดโู นทเ่ี ป็ นสญั ญาณดจิ ติ อลตดิ ตอ่ กบั สญั ญาณอะนาลอ็ กไดอ้ ยา่ งไร ? เป็ นอกีครั้งทเี่ ราจะสง่ สัญญาณเปิดปิดดว้ ยความเร็ว ซงึ่ จะทาใหเ้ หมือนกบั เป็ นสญั ญาณอะนาล็อก , โดยการตอ่เปียโซเขา้ กบั ขาดจิ ติ อลของอาดโู น เปียโซจะสรา้ งเสยี งคลกิ ตอ่ คลนื่ สญั ญาณหนึ่งลกู ทสี่ ง่ จากอาดโู นถา้ สง่ มาเรือ่ ย ๆ เร็ว ๆ เป็ นความถท่ี ถี่ กู ตอ้ ง เชน่ 440 ครัง้ ตอ่ วนิ าทจี ะไดย้ นิ เสยี งคลา้ ยตัวโน๊ต เรมิ่ทดลองไดเ้ ลย เราจะใหอ้ าดโู นรอ้ งเพลง Twinkle Twinkle Little Star (ดาวเลก็ ๆ สอ่ งแสงว๊ ิงว๊ งิ )อปุ กรณ์ทดลอง1. บอร์ดทดลอง 1 อัน2. ลาโพงเปียโซ 1 อัน3. สายไฟจัมเปอร์ขนั้ ที่ 1 ตอ่ วงจร

ขนั้ ท่ี 2 เขยี นโคดโปรแกรม(แคค่ ลกิ ) ดาวน์โหลดจาก circuit6…ขน้ั ที่ 3 อพั โหลดโปรแกรมทาใหด้ มี ากขนึ้ 1. เลน่ เพลงแบบเร็วขน้ึ เวลาของแตล่ ะตวั โน๊ตถกู คานวนจากตัวแปร ดังนั้นเราสามารถปรับเสยี ง หรอื เวลาทเี่ ลน่ ของโน๊ตแตล่ ะตัวได ้เพยี งแคบ่ รรทัดเดยี ว หาคาว่า int tempo = 300; เปลยี่ นเป็ น int tempo = xxx ตามคา่ ทตี่ อ้ งการ เพมิ่ คา่ มากขน้ึ เสยี งจะชา้ ลงหรือถา้ คา่ ลดลง เสยี งจะไวขนึ้ 2. ปรบั สญั ลกั ษณแ์ ทนเลขของตวั โนต เพอื่ ใหเ้ รียกใชง้ านไดเ้ ขา้ ใจงา่ ยขน้ึ อาจจะประกาศเป็ น array คกู่ ัน อันหนง่ึ แทนสญั ลักษณ์ อกี ทันแทนคา่ ของตัวเลข เชน่ char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; ลองสังเกตและทา ความเขา้ ใจทฟ่ี ังกช์ นั void playNote(char note, int duration) ในโคดทเี่ ราเขยี นไวแ้ ลว้ 3. แตง่ เพลงของเราขน้ึ มาเอง ตัวอยา่ งเชน่ เพลง happy birthday (ทอ่ นแรก) int length = 13; char notes[] = {\"ccdcfeccdcgf \"}; int beats[] = {1,1,1,1,1,2,1,1,1,1,1,2,4};

วงจรท่ี 7 : กดป่ ุมสวติ ช์เรากาลงั จะทาอะไรในการทดลองนเี้ ราจะมุง่ เป้าไปทกี่ ารใหอ้ าดโู น รับคาสง่ั และโตต้ อบกับเรา ดว้ ยการกดป่ มุ สั่งงาน แลว้เราจะใหอ้ าดโู นเชค็ ว่ากดป่ มุ อะไรเขา้ มาไดอ้ ยา่ งไร ? กอ่ นอนื่ ก็ตอ้ งเซตใหข้ านั้นเป็ นโหมดอนิ พตุ ซะกอ่ นจากนัน้ อาดโู นจะสามารถตรวจจับความเปลยี่ นแปลงของไฟทใ่ี หม้ าได แ้ ลว้ เรากเ็ ช็ควา่ ถา้ ขานั้นมีการเปลย่ี นแปลงจาก 0 เป็ น 5 โวลต์ หรอื จาก 5 เป็ น 0 โวลตจ์ ะใหท้ าอะไร ในบางกรณขี าอนิ พตุ ทป่ี ลอ่ ยไว ้ลอย ๆ อาจมสี ัญญาณรบกวนแทรกเขา้ มา ทาใหอ้ าดโู นคดิ วา่ มีการกดสวติ ช์ ทงั้ ทเี่ รายงั ไม่ไดก้ ด ดงั นัน้เพอ่ื ความแน่นอนของสัญญาณ เราจงึ ตอ่ ตัวตา้ นทานจา่ ยกระแสใหก้ ับขาอนิ พตุ อาดโู นจะรวู ้ า่ น่คี อืสัญญาณ 5 โวลโ์ ดยไมม่ ีการรบกวนได ้และเมอ่ื กดสวิตชไ์ ฟกจ็ ะถกู ตอ่ ลงกราวน์ อาดโู นกจ็ ะรับรู ้สัญญาณเป็ น 0 ไดอ้ ยา่ งถกู ตอ้ งอปุ กรณ์ทดลอง1. บอรด์ ทดลองขนาดกลาง 1 ตวั2. ตวั ตา้ นทาน 10K 2 ตวั3. สวิตชก์ ดตดิ ปลอ่ ยดบั4. ตวั ตา้ นทาน 560 โอหม์ 2 ตวั5. หลอดไฟ LED 1 ตวั6. สายไฟจมั เปอร์ 1 ดวงขนั้ ท่ี 1 ตอ่ วงจร



ขนั้ ท่ี 2 เขยี นโคดโปรแกรม(แคค่ ลกิ )ขนั้ ท่ี 3 อพั โหลดโคดทาใหด้ กี ว่านี้1. จากตวั อย่างเราไดล้ องเลน่ กับสวติ ช์ 1 ตวั ไปแลว้ เราสามารถใสส่ วติ ชไ์ ด ้ หลาย ๆ ตวั โดยกาหนดคา่ คลา้ ย ๆ กนั ลองเพม่ิ สวติ ชอ์ กี ตวั แลว้ เปลยี่ นโคด ดงั นี้int ledPin = 13; // เลอื กขาทจ่ี ะแสดงผล LEDint inputPin1 = 3; // ป่ มุ ท่ี 1int inputPin2 = 2; // ป่ มุ ท่ี 2void setup() { pinMode(ledPin, OUTPUT); // กาหนด LED เป็ นเอาตพ์ ตุpinMode(inputPin1, INPUT); // กาหนดป่ มุ 1 เป็ นอนิ พุตpinMode(inputPin2, INPUT); // กาหนดป่ มุ 2 เป็ นอนิ พตุ}void loop(){ if (digitalRead(inputPin1) == LOW) { digitalWrite(ledPin, LOW); // ปิด LED } else if (digitalRead(inputPin2) == LOW) { digitalWrite(ledPin, HIGH); // เปิด LED }}2. สว่างขน้ึ สว่างลง

ใชส้ วติ ชค์ วบคมุ สญั ญาณอะนาล็อกดบู า้ ง โดยเปลย่ี นขาทตี่ อ่ กับ LED จาก ขา 13 เป็ นขา 9 เปลย่ี นโคดไดด้ งั น้ี int ledPin = 13; ----> int ledPin = 9; ตอ่ ไปเลย่ี นโคดใน loop() เป็ น int value = 0; void loop(){ if (digitalRead(inputPin1) == LOW) { value--; } else if (digitalRead(inputPin2) == LOW) { value++; } value = constrain(value, 0, 255); analogWrite(ledPin, value); delay(10); }3. ปรบั ความเร็วในการสว่าง ถา้ ชอบให ้LED สว่างเร็วหรอื ชา้ แบบไหน ก็สามารถปรบั ไดท้ คี่ าสงั่ delay(10); เปลยี่ นเลข 10 เป็ นเลขอืน่ แลว้ ดผู ลลพั ธ์

วงจรที่ 8 : บดิ ๆ หมนุ ๆ ตวั ตา้ นทานปรบั คา่ ได้อาดโู นมขี าทเี่ ป็ นอะนาลอ็ กอยู่ 6 ขา นอกจากขาเหลา่ น้ีสามารถอา่ นคา่ ขอ้ มูลแบบอะนาลอ็ กมาไดโ้ ดยจะเป็ นคา่ แรงดนั ไฟฟ้าระหว่าง 0-5 โวลต์ หรอื แปลงเป็ นคา่ ดจิ ติ อลไดใ้ นชว่ งเลขจานวนเตม็ 0-1023(อาดโู นอา่ นคา่ ละเอยี ดได ้10 บติ = 2^10 = 1024 คา่ ) เราจะลองอ่านคา่ จากตวั ตา้ นทานปรับคา่ ได ้เพอื่ ศกึ ษาการอา่ นคา่ สัญญาณอะนาล็อกแปลงเขา้ มาเป็ นสญั ญาณดจิ ติ อลใหก้ ับอาดโู นอุปกรณ์ทดลอง1. บอรด์ ทดลองขนาดเลก้ 1 บอร์ด2. หลอดไฟ LED 1 หลอด3. ตวั ตา้ นทาน 560โอหม์ 1 ตวั4. ตวั้ ตา้ นทานปรับคา่ ได ้10กโิ ลโอหม์ 1 ตวั5. สายไฟการทดลองขนั้ ที่ 1 ตอ่ วงจร

ขนั้ ท่ี 2 เขยี นโคดโปรแกรม(แคค่ ลกิ )/* อะนาลอ็ กอินพตุ* ตวั อยา่ งการอ่านคา่ อะนาล็อกอนิ พตุ จากเซนเซอร์*/int sensorPin = A0; // กาหนดขาอินพตุ เป็ น 0 สาหรับตอ่ กับตวั ตา้ นทานปรับคา่ ได ้int ledPin = 13; // กาหนดขา 13 ไวต้ อ่ กบั LEDint sensorValue = 0; // คา่ ตัวเลขทอี่ ่านไดจ้ ากเซนเซอร์อะนะล็อกvoid setup() { pinMode(ledPin, OUTPUT); // กาหนด ledPin เป็ นขาเอาตพ์ ตุ}void loop() { sensorValue = analogRead(sensorPin);// อ่านคา่ อะนาล็อกจากขาเซนเซอร์ sensorPin

digitalWrite(ledPin, HIGH); // เปิดไฟ LED delay(sensorValue); // หนว่ งเวลาตามคา่ ทอี่ า่ นไดจ้ ากเซนเซอร์ digitalWrite(ledPin, LOW); delay(sensorValue); // ปิดไฟ LED} // หนว่ งเวลาตามคา่ ทอ่ี ่านไดจ้ ากเซนเซอร์ขน้ั ท่ี 3 อพั โหลดโคดทาใหด้ มี ากขนึ้ กว่าน้ี 1. บางครั้งเราอยากใหไ้ ฟตดิ เมอื่ อ่านคา่ ไดถ้ งึ ชว่ งทเี่ รากาหนดไว ้ สามารถทาไดโ้ ดยใช ้ if เชค็ คา่ ทอ่ี ่านไดม้ าเปรียบเทยี บกอ่ น ดังนี้ void loop() { int threshold = 512; if(analogRead(sensorPin) > threshold){ digitalWrite(ledPin, HIGH);} else{ digitalWrite(ledPin, LOW);} } โคดนี้ LED จะตดิ เม่ืออา่ นคา่ ไดม้ ากกวา่ 512 2. ปรับความสว่างให ้LED โดยใชเ้ ทคนิก PWM ซง่ึ ตอ้ งใชข้ าอาดโู นทร่ี องรับ(ขาทม่ี ีตวั หนอน) ใหล้ องเปลยี่ นขา 13 ทตี่ อ่ กับ LED ไปตอ่ ทข่ี า 9 แทน แลว้ เปลย่ี นโคด int ledPin=13; เปลยี่ นเป็ น int ledPin=9; จากนัน้ เปลย่ี นโคดเป็ น void loop(){ int value=analogRead(potPin)/4; analogWrite(ledPin,value); } ตัวอยา่ งนจ้ี ะเอาคา่ ทอี่ ่านไดม้ าหาร 4 เพราะว่า ถา้ จากนั ไดค้ าสง่ั analogWrite จะแสดงคา่ ออกไดใ้ นชว่ ง 0-255 แตค่ า่ ทอ่ี ่านมาไดเ้ ป็ น 0-1023 จงึ ตอ้ งแปลงใหอ้ ยใู่ นชว่ งทต่ี อ้ งการ กอ่ น 3. ควบคม Servo จากการทดลองวงจรท่ี 04 เราไดล้ องเลน่ กบั Servo ไปแลว้ ตอนนลี้ องใชต้ ัว ตา้ นทานปรับคา่ ไดส้ ง่ คา่ ไปควบคมุ servo ทาไดง้ า่ ย ๆ โดยการปรับแกโ้ คดในตวั อยา่ ง

วงจรที่ 9 : ตรวจจบั แสงดว้ ย LDRพวกเราจะกาลงั ทาอะไรในขณะทกี่ ารอ่านคา่ จากตวั ตา้ นทานปรับคา่ ได ้มนุษยเ์ ป็ นคนสง่ คา่ เขา้ ไปให ้แลว้ ถา้ อยากจะให ้ธรรมชาตเิ ป็ นอนิ พตุ ป้อนใหอ้ าดโู นของเราละ่ การทดลองน้จี ะคลา้ ย ๆ กับการใชต้ วั ตา้ นทานปรับคา่ ได ้แตค่ ราวนคี้ า่ ทป่ี ้อนใหม้ าจากธรรมชาตคิ อื แสงสวา่ งน่ันเอง LDR เป็ นตัวตา้ นทานปรับคา่ ไดต้ ามแสง เมื่อแสงมากจะมีความตา้ นทานนอ้ ยลง เม่ือแสงนอ้ ยจะมีควา่ มตา้ นทานมาก ทดี่ า้ นบนของอปุ กรณจ์ ะเป็ นตัวรับแสง มี 2 ขาไมม่ ขี วั้อปุ กรณ์ทดลอง 1 อนั 1 ตวั 1. บอรด์ ทดลองขนาดกลาง 1 ตวั 2. ตวั ตา้ นทาน 10K 1 ตวั 3. ตวั ตา้ นทานปรบั คา่ ไดต้ ามแสง(LDR) 4. ตวั ตา้ นทาน 560โอหม์ 5. สายไฟจมั เปอร์การทดลองขน้ั ท่ี 1 ตอ่ วงจร

ขนั้ ท่ี 2 เขยี นโคดโปรแกรม(แคค่ ลกิ )int lightPin = 0; //ขาอะนาล็อกที่ LDR ตอ่ อยู่int ledPin = 9; // ขาท่ี LED ตอ่ อยู่void setup(){ pinMode(ledPin, OUTPUT); // เซตขา LED เป็ นเอาตพ์ ตุ}void loop(){

int lightLevel = analogRead(lightPin); //อา่ นคา่ อะนะล็อกจากขาที่ lightPin lightLevel = map(lightLevel, 0, 900, 0, 255); // คาส่งั map ใชแ้ ปลงคา่ ชว่ งหน่ึงใหเ้ ป็ นคา่ อีกชว่ งหนึ่ง //ปรับคา่ ชว่ งระหวา่ ง 0 900 เป็ นชว่ ง 0 ถงึ 255 lightLevel = constrain(lightLevel, 0, 255); // เช็คใหม้ ่ันใจว่าคา่ ทไ่ี ดอ้ ยรู่ ะหวา่ ง 0-255 จริง ๆ //คาสั่ง constrain เป็ นการเปรยี บเทยี บและสง่ คา่ กลับ // สง่ คา่ lightLevel กลบั ถา้ lightLevel อยรู่ ะหวา่ ง 0 และ 255 // สง่ คา่ 0 กลับถา้ lightLevel <0 // สง่ คา่ 255 กลับ ถา้ lightLevel > 255 analogWrite(ledPin, lightLevel); // สง่ คา่ ทอ่ี า่ นไดอ้ อกไปท่ี LED เป็ นแบบอะนาลอ็ ก}ขนั้ ท่ี 3 อพั โหลดโคดทาใหด้ มี ากขน้ึ กวา่ น้ี 1. กลบั คา่ ทอ่ี ่านได ้ ทาไดง้ า่ ย ๆ เพยี งแคเ่ ปลย่ี น analogWrite(ledPin,lightLevel); เป็ น analogWrite(ledPin,255-lightLevel); 2. ไฟสว่างตอนกลางคนื เราสามารถสัง่ ใหไ้ ฟปิดเองตอนเชา้ และเปิดเองตอนกลางคนื ได ้โดยเช็ค คา่ ความเขม้ แสงหรือคา่ ความตา้ นทานของ LDR ถา้ อยใู่ จชว่ งทต่ี อ้ งการใหเ้ ปิดไฟและถา้ อยนู่ อก ชว่ งทต่ี อ้ งการก็สัง่ ใหป้ ิดไฟ เปลยี่ นโคดเป็ นดงั นี้ void loop(){ int threshold = 300; if(analogRead(lightPin)> threshold){ digitalWrite(ledPin,HIGH); }else{ digitalWrite(ledPin,LOW); } } 3. ใชแ้ สงควบคมุ servo จากคราวทแี่ ลว้ ไดล้ องใชต้ ัวตา้ นทานปรับคา่ ไดค้ วบคมุ servo แลว้ คราวน้ี ลองใชโ้ คดคาส่งั เดมิ แตเ่ ปลย่ี นเป็ นใชแ้ สงควบคมุ ดบู า้ ง

แตว่ ่า servo สามารถหมนุ ไดแ้ ค่ 0-180 องศา ดังนั้นจงึ ตอ้ งมีการแปลงคา่ ชว่ งกนั ซักหนอ่ ยคาส่ังทใี่ ชแ้ ปลงจากชว่ งหน่ึงไปเป็ นอกี ชว่ งหนึง่ ตามทเี่ ราตอ้ งการ คอื คาส่ัง map(คา่ อนิ พตุ ,แปลงจากชว่ งน้ี,ถงึ ชว่ งน้ี,แปลงเป็ นชว่ งนี้,ถงึ ชว่ งน้ี) เชน่ ตอ้ การแปลงคา่ ทอี่ ่านไดเ้ ดมิ มชี ว่ ง 0-1023 ใหเ้ ป็ นชว่ งท่ี 0 – 179 สามารถทาไดง้ า่ ย ๆ โดยใชค้ าสัง่ map(val,0,1023,0,179)วงจรท่ี 10 : ตรวจวดั อณุ หภูมสิ ภาพแวดลอ้ มรอบ ๆ ตวั ดว้ ยเซน็ เซอร์ DS18B20เรากาลงั จะทาอะไรหลงั จากทไ่ี ดเ้ ลน่ อินพตุ จากธรรมชาตใิ นดา้ นแสงแลว้ ตอ่ ไปเราจะมาเลน่ กบั ธรรมชาตอิ ีกอยา่ งคอือุณหภมู ิ เราจะทาใหอ้ าดโู นเป็ นเทอรโ์ มมิเตอรแ์ บบดจิ ติ อล ไมต่ อ้ งหว่ งสามารถทาไดง้ า่ ย ๆ โดยใช ้ ICเซนเซอรอ์ ณุ หภมู เิ บอร์ DS18B20 ลักษณะหนา้ ตาของ IC ตวั นี้จะคลา้ ย ๆ กับทรานซสิ เตอร์ทเี่ ราไดใ้ ช ้กนั ไปแลว้ แตข่ า้ งในแตกตา่ งกนั แนน่ อนอปุ กรณ์ทดลอง1. บอรด์ ทดลองขนาดกลาง 1 อนั2. ตวั ตา้ นทาน 10K 1 ตวั3. ตวั ตา้ นทานปรบั คา่ ไดต้ ามแสง(LDR) 1 ตวั4. ตวั ตา้ นทาน 560โอหม์ 1 ตวั5. สายไฟจมั เปอร์การทดลองขนั้ ที่ 1 ตอ่ วงจรขนั้ ที่ 2 เขยี นโคดโปรแกรม(แคค่ ลกิ )

การทดลองนเี้ ราจะลองเรยี กใชโ้ คดจากภายนอกทคี่ นอืน่ เขยี นไวห้ รือเรยี กว่า library ซง่ึ กค็ อื กลมุ่ คาสั่งทท่ี าสาเร็จรูปใชง้ านงา่ ย วธิ กี ารตดิ ตัง้ กง็ ่าย ๆ ทาได ้ เขา้ ไปท่ี Document > Arduino หาโฟลเดอร์libraries ใหเ้ จอ ถา้ ไมเ่ จอก็สรา้ งใหม่ขนึ้ มาเลย จากนั้นกอ็ ปทงั้ โพลเดอรข์ องโคด library ทต่ี อ้ งการมาวางในโพลเดอรน์ ้ี จากนัน้ ปิดแลว้ เปิดโปรแกรม Arduino IDE ใหมก่ เ็ ป็ นอันเรียบรอ้ ยไปทเี่ มนู เลอื กตัวอยา่ งโคด Simple ตามภาพขนั้ ที่ 3 อพั โหลดโคด ดผู ลลัพธท์ สี่ ง่ ขอ้ มูลไปท่ี Serial Port ไดท้ ไ่ี อคอนตามภาพนี้

ทาใหด้ มี ากขนึ้ กว่าน้ี 1. ลองแกะโคด library ตัวอยา่ งเพอ่ื หาดวู ่ามคี าสั่งไหน ทจ่ี ะชว่ ยแปลงจากองศาเซลเซยี สใหเ้ ป็ น องศาฟาเรนไฮน์ 2. มอี ปุ กรณ์บางตัวทสี่ ามารถสง่ ความเร็วไดม้ ากกวา่ 9600 ลองเปลย่ี นคา่ ความเร็วในการสง่ ขอ้ มลู ของ Serial Port ทโ่ี คด Serial.begin(9600); เปลยี่ นเป็ น Serial.begin(115200); เวลาดู ขอ้ มูลทแ่ี สดงผลออกทางหนา้ จอก็ตอ้ งปรับความเร็วใหเ้ ทา่ กนั ดว้ ย โดยปรับทเี่ มนดู า้ นลา่ ง ตอนน้ีความเร็วทสี่ ง่ จะเร็วขน้ึ 12 เทา่

วงจรท่ี 11 : ควบคุมเครอื่ งใชไ้ ฟฟ้ าขนาดใหญด่ ว้ ยรเี ลย์เรากาลงั จะทาอะไรการทดลองนี้ เราจะมาลองควบคมุ โหลดหรอื เคร่ืองใชไ้ ฟฟ้าขนาดใหญท่ ใ่ี ชไ้ ฟ 220 โวลตก์ นั โดยใช ้ทรานซสิ เตอร์ชว่ ยขยายกระแสทอี่ อกจากขาอาดโู น และเอาไปควบคมุ รเี ลย์ เพอ่ื ใหร้ ีเลยไ์ ปควบคมุเคร่ืองใชไ้ ฟฟ้าขนาดใหญต่ อ่ ไป Relay (รเี ลย)์ เป็ นสวติ ชใ์ ชค้ วบคมุ ไฟฟ้าโวลตส์ ูง ส่งั งานดว้ ยไฟโวลตต์ ่ามหี ลายรูปแบบ ส่วนมากจะมี 5 ขาหลัก โดย 2 ขาจะเป็ นคอยล์ เมอื่ ใหไ้ ฟท่ี 2 ขาน้ี คอลย์ จะกลายเป็ นแม่เหลก็ชวั่ คราว ดูดหนา้ สัมผัสของสวติ ชท์ เ่ี ป็ นเหล็กลงมา เมอ่ื หยุดใหไ้ ฟหนา้ สัมผสั ของสวติ ชก์ จ็ ะเดง้ กลับไปไฟสญั ญาณจากอาดโู นไมพ่ อจา่ ยใหก้ ับรเี ลย์ จงึ ตอ้ งใชท้ รานซสิ เตอรห์ รอื ไอซชี ว่ ยขยายกระแสกอ่ น ตอนนเ้ี รามาเรม่ิ ทดลองกนั เลย (วงจรทดลองมี ไอโอดช่วยกันไฟไหลจากรเี ลย์ยอ้ นกลบั เพื่อป้องกนั ทรานซสิ เตอรฟ์ ัง)อุปกรณท์ ดลอง 1 อัน 1 ตวั 1. บอรด์ ทดลองขนาดเลก็ 1 ตัว 2. ตัวตา้ นทานคา่ 2.2K 1 ตวั 3. รเี ลย์ 5 โวลต์ 1 ตัว 4. ไดโอดเบอร์ 14001 5. ทรานซสิ เตอรเ์ บอร์ P2N2222AG 2 ตัว 6. หลอดไฟ LED 7. สายไฟวธิ ดี ูขาทรานซสิ เตอร์การทดลองขนั้ ที่ 1 ตอ่ วงจร

ขน้ั ท่ี 2 เขยี นโคดโปรแกรม(แคค่ ลกิ )ขน้ั ที่ 3 อพั โหลดโคด

ทาใหด้ มี ากขน้ึ กว่าน้ี 1. จบั ตาดกู ระแสไหลยอ้ นกลบั สาเหตทุ ตี่ อ้ งใชไ้ อโอดกันกระแส : เปลย่ี น ไอโอดเป็ น LED แลว้ สังเกตจะมีบางครั้งที่ LED ตดิ เกดิ จากกระแสไหลยอ้ นกลับจากรเี ลยท์ ท่ี าตวั เหมือนเป็ นไดนาโม ตอนหนา้ สัมผสั เดง้ กลับ ไฟจากสว่ นน้ีอาจทาใหว้ งจรควบคมุ พงั ได ้จงึ ตอ้ งตอ่ ไอโอดเพอื่ ป้องกนั ไม่ใหก้ ระแสไฟฟ้าไหลยอ้ นกลบั ได ้ 2. ตอ่ วงจรให ้ เมือ่ รีเลยไ์ มท่ างานให ้ LED ตดิ เมอื่ รีเลยท์ างานให ้ LED ดบั 3. ตอ่ วงจรให ้ เมอ่ื รีเลยไ์ ม่ทางานให ้ LED ดับ เมอื่ รเี ลยท์ างานให ้ LED ตดิ 4. ควบคมุ มอเตอร์ จากการทดลองวงจรที่ 03 เราไดท้ ดลองเปิดปิดมอเตอร์ดว้ ยทรานซสิ เตอร์ เรา สามารถใชร้ ีเลยใ์ นการเปิดปิดมอเตอร์ไดเ้ ชน่ กัน 5. ควบคมุ เครอื่ งใชไ้ ฟฟ้า 220 โวลต์ เชน่ เดยี วกบั ควบคมุ มอเตอร์ เราสามารถใชร้ เี ลยไ์ ปควบคมุ เปิดปิดไฟ 220 โวลตไ์ ด ้อยา่ งไรก็ตามการทดลองกบั ไฟฟ้าแรงสงู อาจเป็ นอันตรายควรทดลอง ดว้ ยความระมัดระวัง


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook