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 STEM-BOOK

STEM-BOOK

Published by iceicesiriporn, 2021-01-25 10:04:35

Description: STEM BOOK

Keywords: FabLab

Search

Read the Text Version

คู่มือปฏบิ ตั ิกำรประจำ Fabrication Lab | 150 Arduino 6.2 กำรเขยี นโปรแกรมให้ ARDUINO 6.2.1 เรมิ่ ต้นสรำ้ งโปรแกรมแรก 1. หลงั จำกท่ีตติ ั้งโปรแกรมเรียบร้อยแล้ว เรำสำมำรถเริ่มต้นใชง้ ำนโปรแกรม Arduino IDE ได้ทันทีด้วยกำร double click ที่ไอคอน Arduino ท่ีเก็บไว้ใน โฟลเดอร์ทีเ่ รำได้ทำกำรตดิ ตง้ั ไว้ 2. เม่อื เร่ิมต้นเรำต้องจัดกำรเลือกบอร์ด Arduino ที่เรำจะเขียนโปรแกรมลงไป กอ่ น โดยกำรเลอื กท่ี Tools -> Board ->Arduino UNO โดยหนงั สือเลม่ นี้ จะใช้บอรด์ Arduino UNO ในกำรสำธิต ท้ังนี้ผู้ใชส้ ำมำรถเลอื กบอร์ดอื่นได้ เช่นเดยี วกัน 3. เปิดตัวอยำ่ งแรกของโปรแกรมด้วยกำรเลือกที่ Example -> 01. Basic -> Blink Section 0

คู่มือปฏิบตั กิ ำรประจำ Fabrication Lab | 151 Arduino 4. ตวั อยำ่ งของโปรแกรมจะแสดงออกมำดังภำพดำ้ นลำ่ ง 5. ต่อเชื่อม Arduino Uno ด้วยสำ ย USB เข้ำ กับคอมพิ วเตอร์ ซ่ึง คอมพิวเตอรจ์ ะเห็นพอรท์ ท่ีเขำ้ มำอัตโนมัติ 6. เลือกพอร์ทใ ห้ตร งกับที่ต่อเ ชื่อม Arduino เข้ำ มำ โดยเลือกท่ี Tools -> Serial Port -> COMx Section 0

คมู่ ือปฏบิ ตั กิ ำรประจำ Fabrication Lab | 152 Arduino หมายเหต.ุ เน่ืองจากในโปรแกรม IDE จะแสดงทุก COM port ท่ตี ่อเชื่อม อยู่กับเครือ่ งคอมพิวเตอร์ขึ้นมา ซ่ึงผู้ใช้ตอ้ งเลือก COM port ใหถ้ ูกต้อง โปรแกรมจึงจะแสดงผล สาหรับโปรแกรมใน Window ส่วนใหญ่แล้ว COM port จะเป็นตัวท่ีเลขมากท่ีสุด อย่า งไรก็ตามหา กเลือกผิด ก็ สามารถย้อนกลับมาเลอื กใหมไ่ ด้ หรอื ผ้ใู ช้สามารถตรวจสอบได้ดว้ ยการดึง สาย USB ออกจากคอมพิวเตอร์ จากนั้นสารวจว่า COM port เลขใด หายไป แล้วจึงตอ่ เช่ือม USB ใหม่ ซึง่ จะเห็น COM port ตวั ใหม่ปรากฏ ขึน้ มา 7. จำกน้ันทำกำร Upload โปรแกรม Blink ด้วยกำรกด UPLOAD ที่ เคร่อื งหมำยดังแสดงในภำพ หมำยเหตุ: ผู้ใช้สำมำรถตรวจสอบโปรแกรม ก่อนกำร upload ได้ที่ COMPILE 8. ระหว่ำงกำรอัพโหลดเรำสำมำรถสังเกตได้ดงั น้ี  โปรแกร ม IDE จะมี log ว่ิงแสดงผลกำรอัพโหลด ท่ีบริเวณ ดำ้ นลำ่ งของโปรแกรม จนกระทัง่ ข้ึนคำวำ่ DONE UPLOADING ซง่ึ หมำยถงึ อัพโหลดไดส้ ำเรจ็  บน Arduino UNO ไฟของ LED TX และ RX จะกระพรบิ 9. เม่ือ upload เสร็จ เรียบร้อยแล้ว ผู้ใช้จะเห็นไฟที่บริ เวณ PIN13 กระพรบิ ซงึ่ หมำยถงึ กำ้ วแรกของกำรเขยี นโปรแกรมให้กับ Arduino เสรจ็ เรยี บรอ้ ย Section 0

คู่มือปฏิบัตกิ ำรประจำ Fabrication Lab | 153 6.2.1 เรยี นรเู้ กย่ี วกบั CODE กำรเขียนโปรแกรม Arduino ทุกครั้งจะต้องมี 2 ฟงั ก์ชันหลักเสมอ คือ ฟังก์ชัน setup() และ ฟังก์ชัน loop() ซ่ึงภำยในทั้งสองฟังก์ชันจะมี code อยู่ภำยในสั่งให้ทำงำน นอกจำกน้ีในโปรแกรมเรำจำเป็นจะต้อง สรำ้ งตวั แปร (variable) ซึ่งตวั แปรต่ำงๆ จะสำมำรถปรบั เปล่ยี นค่ำไดเ้ ม่ือ โปรแกรมเริ่มทำงำน ทั้งนเ้ี รำควรตงั้ ชือ่ ตวั แปรให้เหมำะสมต่อควำมเขำ้ ใจ ในกำรเขยี นโปรแกรม เช่น ตัวแปรช่ือ “SwitchState” แทนกำรต้ังช่อื ตัว แปรวำ่ “x” ซึ่งอำจจะไม่สอื่ ควำมหมำย ฟังก์ชนั หลกั ของโปรแกรม กำรกำหนดตัวแปรจะต้องกำหนดชนิดของตัวแปรทุกครั้ง เชน่ int เป็น กำรเขยี น code ในฟงั กช์ ัน จะ เขียนภำยใต้เครอ่ื งหมำยปีกกำ ตวั เลข, string เป็นขอ้ ควำม เป็นตน้ พรอ้ มทง้ั กำหนดค่ำเร่มิ ต้นให้กับตัว แปรดว้ ย กำรกำหนดตัวแปร กำหนดชนดิ และค่ำเร่มิ ต้น ของตวั แปร ฟังก์ชัน Setup จะทำเพยี งครง้ั แรกคร้ังเดียวเม่ือ Arduino ถูกเปิดข้ึนมำ ดังนน้ั ในฟังกช์ ันนี้จะใส่ code ที่เป็นกำรตั้งค่ำต่ำง ๆ หรือกำรใช้คำส่ัง pinMode เป็นกำรเปิดจอง pin เหล่ำน้นั และตำมด้วยคำสง่ั OUTPUT หมำยถงึ เปน็ pin ท่ีส่ังงำน และ pin Input หมำยถึง pin ท่ีรบั เข้ำข้อมูล กำรต้งั ค่ำใน Setup Arduino กำรต้ังค่ำ pinMode ซึง่ ตัว ใหญเ่ ล็กมผี ลต่อกำรเขียน โปรแกรม Section 0

คู่มอื ปฏบิ ตั กิ ำรประจำ Fabrication Lab | 154 Arduino กำรทำงำนในฟังก์ชัน loop จะเปน็ กำรทำงำนต่อหลังจำกท่ี Arduino ทำงำนใน Setup เสร็จ และจะวนกลบั มำทำงำนเรอื่ ย ๆ ตลอดกำรเปดิ ตัว Arduino ไว้ ซ่งึ จำกตัวอย่ำงเป็นกำรอ่ำนคำ่ จำก Pin2 ซึ่งค่ำทอ่ี ำ่ นอำจจะ มกี ำรเปล่ียนแปลงตำมขอ้ มูลทเี่ ข้ำมำยงั Pin2 ได้ กำรเขยี นโปรแกรมใน loop กำรเขียน code ในฟงั กช์ ัน จะเขยี นภำยใต้เครือ่ งหมำย ปีกกำ Section 0

ค่มู ือปฏบิ ัตกิ ำรประจำ Fabrication Lab | 155 6.3 กำรตอ่ วงจรอเิลก็ ทรอนกิ ส์ 6.3.1 รู้จกั กบั โพรโตบอรด์ Arduino Section 0

คู่มอื ปฏิบัติกำรประจำ Fabrication Lab | 156 Arduino 6.3.2 สัญลกั ษณอ์ ุ ปกรณใ์ น Schematic Section 0

6.3.3 กำรตอ่ วงจรจำก คู่มอื ปฏิบัติกำรประจำ Fabrication Lab | 157 Schematic โดยทั่วไปวงจรท่เี ขียนมำในหนังสือจะแสดงใน รู ป แ บ บ Schematic ซ่ึ ง ผู้ ใ ช้ ต้ อ ง แ ป ล ควำมหมำยในกำรนำมำต่อโพรโตบอร์ด ดัง แสดงในภำพคอื 1) กำรต่อไฟเล้ียง 5V และ GND มำยังโพรโต บอรด์ เปน็ + และ – 2) กำรตอ่ ตวั ตำ้ นทำนจำกข้ัวบวกมำยงั จุด A 3) กำรต่อ LED จำกจุด A ไปยงั B 4) กำรตอ่ ขำลบจำก LED จดุ B มำยงั GND Arduino Section 0

คู่มือปฏิบัติกำรประจำ Fabrication Lab | 158 6.3.4 กำรอำ่ นคำ่ ควำมตำ้ นทำน Arduino Section 0

คมู่ อื ปฏิบตั ิกำรประจำ Fabrication Lab | 159 Arduino 6.4. กำรเขยี นโปรแกรมเชื่อมตอ่ อุ ปกรณเ์ ซนเซอร์ และอุ ปกรณแ์ สดงผล Section 0

คมู่ ือปฏบิ ัติกำรประจำ Fabrication Lab | 160 6.4.1 รำยละเอียดเซนเซอร์ และอุ ปกรณ์ แสดงผล Sensor อุณหภูมิและควำม ชื้น เป็น โมดูลท่ีมี Sensor ทำงำนด้วยแสง ประกอบไปด้วย Sensor วดั ควำมเข้มแสง (PHOTOR-RESISTOR) , Sensor ควำมสำมำรถในกำรวัดอุณหภูมิ และควำมชื้นใน วัดอัตร ำ กำ ร เต้น ของหัวใจ (HEARTBEAT) , อำกำศ ประกอบไปด้วยโมดูล DHT11, โมดูลวัด Sensor วดั รอบกำรหมนุ ของมอเตอร์ อุณหภมู แิ บบดิจติ อล 18B20 และ แบบอนำล็อก Sensor ตรวจจับควำมดังของเสียง เป็นโมดูลท่ี Arduino สำมำรถตรวจจับควำมดังของเสียงแสดงค่ำออกมำ เป็นตัวเลขได้ หรือสำมำรถปรับระดับกำรตรวจจับ ตำมระดับควำมดังท่ีผู้ใช้ต้องกำรได้ โดยโมดูลจะ ให้ผลลัพธเ์ ป็นตรวจพบหรือไม่พบ ตำมระดับที่ได้ กำหนดเอำไว้ สวิตซ์นิดต่ำง ๆ ประกอบไปด้วย สวิตซ์ชนิด ทำงำ นเมื่อมีกำ รส่ัน สะเทือน (TAP Module) , สวิต ซ์ท ำ ง ำ น เม่ื อมี แร งก ร ะ แท ก (SHOCK Module) , ส วิ ต ซ์ ท ำ ง ำ น เ มื่ อ มี ก ำ ร เ อี ย ง (HYDRARGYRUM) และ TILT-SWITCH, สวิตซ์ ทำงำนดว้ ยแม่เหล็ก REED SWITCH , และสวิตซ์ แบบกด Section 0

คู่มือปฏบิ ตั กิ ำรประจำ Fabrication Lab | 161 Sensor ตรวจจับสนำมม่เหลก็ เป็นโมดูลทส่ี ำมำรถ RELAY เป็นโมดูลสวิตซ์ทีส่ ่งั งำนดว้ ยไฟฟำ้ เมื่อป้อน ตรวจจับกำรเปล่ียนแปลงของสนำมแม่เหล็ก และ ไปเข้ำไปสวิตซจ์ ะเปดิ (close loop) ให้วงจรทำงำน สำมำรถอำ่ นคำ่ ควำมแรงของสนำมแม่เหลก็ ได้ โมดูล สำมำรถนำไปใช้งำนกบั กำรสั่งงำนไฟฟ้ำต่ำงๆ สำมำรถปรบั ระดับกำรตรวจจบั ตำมระดบั ควำมแรง ของสนำมแม่เหล็กตำมท่ีผู้ใช้ต้องกำร โดยโมดูลจะ ให้ผลลัพธเ์ ป็นตรวจพบหรือไม่พบ ตำมระดับท่ีได้ กำหนดเอำไว้ ลำโพง เป็นโมดลู ลำโพงที่ให้เสียงดังออกมำ ถำ้ เป็น แบบ Active เป็นเสียงควำมถี่เดยี วเม่อื ป้อนไฟใหจ้ ะ ดังออกมำ สว่ น Passive สำมำรถเลือกควำมถี่เสียงที่ ตอ้ งกำรให้ออกได้ ไฟ LED เป็นโมดูลสำหรับกำ รส่องไฟ LED ซึ่งมี หลำยรูปแบบต้งั แตก่ ำรส่องสว่ำงแบบสีเดยี ว หรอื ไป ถึง ห ล ำ ย สี ท ำ ง ำ น ต ำ ม ค ำ ส่ัง ที่ ไ ด้ รั บ จ ำ ก ไมโครคอนโทรลเลอร์ในกำรเปล่ียน และเปล่ียน จงั หวะกำรกระพริบได้ Arduino Section 0

คู่มอื ปฏิบตั กิ ำรประจำ Fabrication Lab | 162 6.4.2 ระบบตรวจจบั อุ ณหภูมแิ ละควำมช้ืน 6.4.2.1 กำรตอ่ วงจรเซนเซอร์ DHT11: VCC - Arduino 5v GND - Arduino GND Data - Arduino pin 2 CODE: #include \"DHT.h\" ผลลัพธ์: #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println(\"DHTxx test!\"); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { Serial.println(\"Failed to read from DHT\"); } else { Serial.print(\"Humidity: \"); Serial.print(h); Serial.print(\" %\\t\"); Serial.print(\"Temperature: \"); Serial.print(t); Serial.println(\" *C\"); } } Arduino Section 0

คมู่ ือปฏิบตั กิ ำรประจำ Fabrication Lab | 163 6.4.2.2 กำรต่อวงจรเซนเซอร์ DS18B20: VCC - Arduino 5v GND - Arduino GND DQ - Arduino pin 2 CODE: #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); Serial.println(\"Dallas Temperature Demo\"); sensors.begin(); } void loop(void) { Serial.print(\" Requesting temperatures...\"); sensors.requestTemperatures();Serial.println(\"DONE\"); Serial.print(\"Temperature is: \"); Serial.print(sensors.getTempCByIndex(0)); delay(1000); } ผลลัพธ์: ในหัวขอ้ น้จี ะกลำ่ วถึง 2 เซนเซอรท์ ่ีเป็นเซนเซอร์ดจิ ิตอลและสำมำรถตรวจวัด อณุ หภูมไิ ดเ้ ช่นเดยี วกัน แต่ DHT11 จะสำมำรถตรวจวดั คำ่ ควำมชื้นไปไดด้ ้วย พร้อมกัน สว่ นเซนเซอร์ DS18B20 จะเป็นเซนเซอร์ตัวเล็กที่สำมำรถตรวจวัด Arduino อณุ หภมู ไิ ด้อย่ำงเดยี ว สำหรับผลลพั ธจ์ ะออกมำในลักษณะเดียวกนั คือแสดงคำ่ อุณหภมู ิ โดยสำมำรถวัด ได้ตำมกำรเปลี่ยนแปลงในเวลำจริง Section 0

คู่มือปฏบิ ัติกำรประจำ Fabrication Lab | 164 6.4.3 ระบบตรวจจบั ควำมเขม้ แสง กำรต่อวงจร: VCC - Arduino 5v GND - Arduino GND D0 - Arduino pin A0 อปุ กรณ์เซนเซอร์ตรวจจับแสงท่ีใช้ (Photo Resistor Module: LDR) มีหลักกำรทำ งำนคือ ตัวมัน คืควำ ม ตำ้ นทำนชนิดที่ไวต่อแสง ตัวควำมต้ำนทำนนสี้ ำมำรถ เปล่ียนสภำพทำงควำมนำ ไฟฟ้ำ ได้เมื่อมีแสงมำตก กร ะทบ บำ งคร้ังเรียกว่ำ โฟโตรีซีสเตอร์ ( Photo Resistor) หรือ โฟโตคอนดัคเตอร์ (Photo Conductor) เป็นตวั ตำ้ นทำนท่ที ำมำจำกสำรกง่ึ ตัวนำ โดยวงจ รได้ต่อขำ A0 ของ Arduino เข้ำ กับขำให้ output ของเซนเซอร์ และอ่ำนค่ำมำแสดงทห่ี นำ้ จอ CODE: int sensorPin = A0; // select the input pin for LDR int sensorValue = 0; // variable to store the value coming from Arduino the sensor void setup() { Serial.begin(9600); //sets serial port for communication } void loop() { sensorValue = analogRead(sensorPin); // read the value from the sensor Serial.println(sensorValue); //prints the values coming from the sensor on the screen delay(100); } Section 0

คู่มือปฏบิ ัตกิ ำรประจำ Fabrication Lab | 165 ผลลพั ธ์: 6.4.4 กำรใช้งำนลำโพงแบบ Passive กำรตอ่ วงจร: VCC - Arduino 5v GND - Arduino GND I/O - Arduino pin D11 Arduino Section 0

คูม่ ือปฏบิ ตั กิ ำรประจำ Fabrication Lab | 166 CODE: int buzzer = 11 ; void setup () { pinMode (buzzer, OUTPUT) ; } void loop () { unsigned char i, j ; while (1) { for (i = 0; i <80; i++) // When a frequency sound { digitalWrite (buzzer, HIGH) ; //send tone delay (1) ; digitalWrite (buzzer, LOW) ; //no tone delay (1) ; } for (i = 0; i <100; i++) { digitalWrite (buzzer, HIGH) ; delay (2) ; digitalWrite (buzzer, LOW) ; delay (2) ; } } } ผลลพั ธ์: ลำโพงแบบ Passive มหี ลักกำรทำงำนด้วยกำรรับสัญญำณ High low ไปแปลงเป็นสัญญำณควำมถเ่ี สยี ง จำกกำรเขียนโปรแกรม ลำโพงจะใหเ้ สียงดงั ออกมำ 2 โทนคือที่ควำมถ่ี 500 Hz เป็นเวลำ 80 มิลลิวินำที และ 250 Hz เป็นเวลำนำน 100 มิลลวิ นิ ำที สลบั กนั ไป Arduino Section 0

ค่มู ือปฏิบตั กิ ำรประจำ Fabrication Lab | 167 6.4.5 กำรใช้งำนลำโพงแบบ Active กำรตอ่ วงจร: VCC - Arduino 5v GND - Arduino GND I/O - Arduino pin D12 CODE: int buzzer = 12 ; void setup () { pinMode (buzzer, OUTPUT) ; } void loop () { while (1) { digitalWrite (buzzer, HIGH) ; //send tone delay (1000) ; digitalWrite (buzzer, LOW) ; //no tone delay (1000) ; } } ผลลัพธ์: ลำโพงแบบ Active จะให้เสียงออกมำเป็นควำมถ่ีเดียวโดยกำร Arduino ป้อนสัญญำณ HIGH เพื่อเปดิ หรือ LOW เข้ำไปที่โมดูล ผลทไ่ี ด้คือ ลำโพงจะดังสลับเงียบอย่ำงละ 1 วนิ ำที Section 0

คมู่ อื ปฏิบัตกิ ำรประจำ Fabrication Lab | 168 6.4.6 กำรใช้งำน LED กำรตอ่ วงจร: VCC - Arduino 5v GND - Arduino GND R - Arduino pin D11 G - Arduino pin D10 B - Arduino pin D9 CODE: int redPin = 11 ; int greenPin = 10 ; int bluePin = 9 ; Arduino void setup () { pinMode (redPin, OUTPUT) ; pinMode (greenPin, OUTPUT) ; pinMode (bluePin, OUTPUT) ; } void loop () { analogWrite (redPin, 255) ; //Red Color analogWrite (greenPin, 0) ; analogWrite (bluePin, 0) ; delay (1000) ; analogWrite (redPin, 0) ; //Green Color analogWrite (greenPin, 255) ; analogWrite (bluePin, 0) ; delay (1000) ; analogWrite (redPin, 255) ; //White Color analogWrite (greenPin, 255) ; analogWrite (bluePin, 255) ; delay (1000) ; } Section 0

ผลลพั ธ์: คมู่ ือปฏิบัตกิ ำรประจำ Fabrication Lab | 169 ผลท่ีได้คือหลอด LED จะแสดงเป็นสีแดง (R:255, G:0, B:0) 1 วินำที และจะแสดงเป็นสีเขียว (R:0, G: 255, B:0) 1 วนิ ำที และสุดท้ำยจะ แสดงเป็นสีขำว (R:255, G: 255, B:255) อีก 1 วินำทแี ละจะวนไปเรมิ่ ท่ี แดงใหมเ่ ชน่ นไี้ ปเร่อื ยๆ ผ้ใู ชส้ ำมำรถผสมสี LED ไดต้ ำมควำมตอ้ งกำร 6.4.7 ระบบตรวจวดั กำรเตน้ ของหวั ใจ ในหวั ขอ้ นไี้ ดน้ ำเซนเซอร์ตรวจวัดควำมเข้มแสงมำประยุกต์เป็นระบบ ตรวจวัดกำรเต้นของหัวใจ โดยให้แสง LED สีแดงสอ่ งผำ่ นน้ิว และมี เซนเซอร์ตรวจวัดควำมเข้มแสงอยู่อีกฝ่ังหน่ึง เม่ือเส้นเลือดขยำ ด ขยำยตัวตอนจังหวะหัวใจเต้น จะทำให้คำ่ กำรดดู ซับแสงเปลย่ี นไป ซึ่ง เซนเซอรจ์ ะตรวจจับได้ จึงสำมำรถนำมำวเิ ครำะหเ์ ปน็ อตั รำกำรเตน้ ของ หัวใจได้ กำรตอ่ วงจร: VCC - Arduino 5v GND - Arduino GND Signal - Arduino pin A0 CODE: int sensorPin = 0; double alpha = 0.75; int period = 100; double change = 0.0; double minval = 0.0; void setup () { Serial.begin (9600); } void loop () { static double oldValue = 0; static double oldChange = 0; int rawValue = analogRead (sensorPin); Arduino double value = alpha * oldValue + (1 - alpha) * rawValue; Serial.print (rawValue); Serial.print (\",\"); Serial.println (value); oldValue = value; delay (period); Section 0 }

คู่มือปฏบิ ัติกำรประจำ Fabrication Lab | 170 ผลลัพธ์: 6.4.8 ระบบตรวจจบั ควำมดังเสยี ง กำรตอ่ วงจร: VCC - Arduino 5v GND - Arduino GND A0 - Arduino pin A0 D0 - Arduino pin 13 สำหรับกำรใชง้ ำน Sesnsor ควำมดังเสียง ซงึ่ เป็น Sensor แบบ Analog จะ Arduino สำมำรถใช้งำนได้ 2 แบบ คอื กำรเขยี น Code แบบ Digital output หรือ กำรเขยี นแบเรยี ก Analog output Digital Output หมำยถึงกำรแสดงผลลัพธ์ว่ำเจอเสียงหรือไม่เจอเสียง เทำ่ นั้น ตำมระดับควำมดงั ท่ตี งั้ เอำไว้ ซ่ึงใน code น้ี จะแสดงควำมสว่ำงของ หลอด LED บนบอร์ดเมื่อเจอเสียงตำมระดับ และหลอด LED จะดับเมื่อ เสยี งไมเ่ กินระดบั Analog Output หมำยถึงกำรแสดงค่ำออกมำเป็นตวั เลขทีต่ รวจวดั ได้ ซ่ึงจะ สำมำรถอำ่ นค่ำไดห้ ลำยระดับ Section 0

คู่มือปฏิบัตกิ ำรประจำ Fabrication Lab | 171 Code: Digital Output int Led = 13 ; // define LED Interface int buttonpin = 3; // define D0 Sensor Interface int val = 0; // define numeric variables val void setup () { pinMode (Led, OUTPUT) ;// define LED as output interface pinMode (buttonpin, INPUT) ;// output interface D0 is sensor } void loop () { val = digitalRead(buttonpin);// read value from pin 3 if (val == HIGH) // When the sound detection, LED flashes { digitalWrite (Led, HIGH); } else { digitalWrite (Led, LOW); } } Code: Analog Output int sensorPin = A0; // select the input pin for the potentiometer int ledPin = 13; // select the pin for the LED int sensorValue = 0; // variable to store the value coming from the sensor void setup () { pinMode (ledPin, OUTPUT); Serial.begin (9600); } void loop () { sensorValue = analogRead (sensorPin); digitalWrite (ledPin, HIGH); delay (sensorValue); digitalWrite (ledPin, LOW); delay (sensorValue); Serial.println (sensorValue, DEC); } Arduino Section 0

คู่มือปฏิบัติกำรประจำ Fabrication Lab | 172 6.4.9 ระบบตรวจวัดระยะ เซนเซอร์ Ultrasonic (HC-SR04) เป็นเซนเซอร์ท่ีใช้ตรวจวัดระยะด้วยกำร สะท้อนของคลื่นเสียง Ultrasonic มีควำมละเอียดในกำรวัดค่อนข้ำงสูง เซนเซอร์สำมำรถนำไปพฒั นำได้ในหลำย ๆ โครงงำน เช่น กำรตรวจวดั ระดับ นำ้ ระบบช่วยจอดรถ เป็นตน้ คุณลักษณะของเซนเซอร์ Ultrasonic:  รองรับแรงดนั ไฟฟ้ำกระแสตรงขนำด 5V  รองรับกระแสไฟฟ้ำ 15mA  ทำงำนท่ีควำมถี่ 40Hz  ระยะทำงทวี่ ดั ได้ไกลที่สดุ : 4m  ระยะทำงใกล้ทีส่ ุดทีว่ ดั ได้: 2cm  องศำกำรวดั : 15 degree  ขนำด: 46 x 20.4mm  นำ้ หนัก: 9g กำรตอ่ วงจรเบอื้ งตน้ : VCC - Arduino 5v GND - Arduino GND Echo - Arduino pin 7 Trig - Arduino pin 8 Arduino Section 0

คู่มือปฏบิ ตั กิ ำรประจำ Fabrication Lab | 173 Arduino กำหนดตัวแปรพิน echo พิน trig และพนิ ไฟ LED ซึง่ เป็นหลอด LED ท่อี ยู่ บนบอร์ด Arduino รวมถงึ กำหนดตวั แปรค่ำต่ำสุดและสูงสุดท่ีตอ้ งกำรจะ วัดระยะทำงในหน่วยเซนตเิ มตร ซ่ึงในโปรแกรมตัวอย่ำงนี้กำหนดให้อยู่ ในช่วง 0 – 200 เซนตเิ มตร #define echoPin 7 // Echo Pin #define trigPin 8 // Trigger Pin #define LEDPin 13 // Onboard LED int maximumRange = 200; // Maximum range needed int minimumRange = 0; // Minimum range needed long duration, distance; // Duration used to calculate distance เมื่อ Setpu มีกำรกำหนดพอร์ท echo และ Trig ให้เป็น input และ output รวมถึงกำหนดให้พนิ 13 ซง่ึ เป็น LED เป็น output void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LEDPin, OUTPUT); // Use LED indicator (if required) } ในฟังก์ชัน Loop ซึ่งเป็นฟังก์ชันหลัก เริ่มต้นด้วยกำรวัดระยะด้วยกำร สง่ั พนิ trig ดว้ ยค่ำ LOW และ High สลบั กันแล้วจึงไดค้ ่ำระยะเวลำออกมำ ซ่ึงจะนำไปคำนวณเปน็ ค่ำระยะทำงอกี คร้งั และเกบ็ ไวท้ ีต่ ัวแปร distance void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration/58.2; Section 0

คู่มือปฏบิ ัตกิ ำรประจำ Fabrication Lab | 174 Arduino นำตวั แปร distance มำตรวจดูวำ่ อยู่หำกเกนิ ช่วงของระยะท่ีกำหนดไว้ 0 -200 cm ให้ไฟ LED บนบอร์ดติดข้ึน และแสดงผลว่ำระยะมีค่ำเปน็ -1 (หมำยถงึ อำ่ นคำ่ ไมไ่ ด้) หรือในกรณอี ่ำนค่ำได้อยู่ในชว่ ง 0 – 200 cm กจ็ ะ ดับไฟ LED และแสดงค่ำระยะตำมปกติ if (distance >= maximumRange || distance <= minimumRange){ /* Send a negative number to computer and Turn LED ON to indicate \"out of range\" */ Serial.println(\"-1\"); digitalWrite(LEDPin, HIGH); } else { /* Send the distance to the computer using Serial protocol, and turn LED OFF to indicate successful reading. */ Serial.println(distance); digitalWrite(LEDPin, LOW); } //Delay 50ms before next reading. delay(50); } ผลลพั ธ์: ผลลัพธ์จะแสดงผ่ำนคำส่ัง Print จำกในโปรแกร ม ตัวอย่ำ ง เรำ สำ มำ ร ถเช่ือมต่อ Serial Port ของ Arduino มำยังคอมพิวเตอรไ์ ด้ ซึ่งจะแสดงผลลัพธ์ดัง แสดงในภำพ ซง่ึ เป็นค่ำที่เซนเซอร์ Ultrasonic วดั ค่ำ ได้ Section 0

ผู้เขยี น : นำยพลกฤษณ์ สขุ เฉลมิ โทรศพั ท์ : 081-7362168 Email : [email protected] ประสบกำรณ์: 1. หัวหน้ำโครง กำ รสร้ำงดำวเทียม SpaceBox ภำยใต้บริษั ท ไทยคม จำกัด โดยเปนผู้ออกแบบดำวเทียมท่ีจะถูกส่งข้ึนสู่วง โคจรในปี 2562 2. ผูเ้ ชย่ี วชำญกำรส่งกำรทดลองข้นึ ส่อู วกำศมำกกว่ำ 20 ครั้ง ด้วยจรวดขนส่ง อวกำศและระบบ High Altitude Platform (HAP) 3. ผูอ้ อกแบบและกำกับดูแลห้องเรยี น MakerSpace “STEM Lab” 7 แห่งท่ัวประเทศ 4. ผู้ อ อ ก แ บ บ ร ะ บ บ Internet of Things (IoT) ข อ ง บ ริ ษั ท ไปรษณีย์ไทย จำกดั สมองกลฝังตวั

สมองกลฝังตวั


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