การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล...

35
251 บทที8 การสร้างสรรค์ผลงานด้วยโปรแกรมภาษาซี ในบทนี้กล่าวถึงการใช้งานโปรแกรมจาลองและการประยุกต์ใช้งานโครงการ การเริ่มต้นการใช้ งานโปรแกรม Fritzing ( fritzing. org) ซึ่งเป็นซอฟต์แวร์แบบ Open Source ที่สามารถนามาใช้ในการ วางแผนต่อวงจรบนเบรดบอร์ด ซึ่งจะใช้เวอร์ชัน fritzing.0.9.3b.64. pc การฝึกต่อวงจรอิเล็กทรอนิกส์ บนเบรดบอร์ด ถือว่าเป็นทักษะที่สาคัญในการเรียนรู้ด้านอิเล็กทรอนิกส์และระบบสมองกลฝังตัว นอกจาก Fritzing จะนาไปใช้ในการฝึกต่อวงจรบนเบรดบอร์ดแบบเสมือนจริงแล้ว ยังสามารถใช้สาหรับวาดผังวงจร (Schematics) ได้ด้วย 1. การดาวน์โหลดและการติดตั้งโปรแกรม Fritzing ในการการฝึกต่อวงจรบนเบรดบอร์ดแบบเสมือนจริง เบื้องต้นมีขั้นตอนดังต่อไปนี1. ในการการฝึกต่อวงจรบนเบรดบอร์ดแบบเสมือนจริง จะต้องใช้โปรแกรมเพื่อฝึกต่อวงจรผ่าน ทางโปรแกรม Fritzing ซึ่งสามารถดาวน์โหลดได้จาก http://fritzing.org/home/ ภาพที่ 8.1 การดาวน์โหลดโปรแกรม ดาวน์โหลดโปรแกรม

Transcript of การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล...

Page 1: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

251

บทท 8

การสรางสรรคผลงานดวยโปรแกรมภาษาซ

ในบทนกลาวถงการใชงานโปรแกรมจ าลองและการประยกตใชงานโครงการ การเรมตนการใชงานโปรแกรม Fritzing (fritzing.org) ซงเปนซอฟตแวรแบบ Open Source ทสามารถน ามาใชในการวางแผนตอวงจรบนเบรดบอรด ซงจะใชเวอรชน fritzing.0.9.3b.64.pc การฝกตอวงจรอเลกทรอนกสบนเบรดบอรด ถอวาเปนทกษะทส าคญในการเรยนรดานอเลกทรอนกสและระบบสมองกลฝงตว นอกจาก Fritzing จะน าไปใชในการฝกตอวงจรบนเบรดบอรดแบบเสมอนจรงแลว ยงสามารถใชส าหรบวาดผงวงจร (Schematics) ไดดวย

1. การดาวนโหลดและการตดตงโปรแกรม Fritzing

ในการการฝกตอวงจรบนเบรดบอรดแบบเสมอนจรง เบองตนมขนตอนดงตอไปน

1. ในการการฝกตอวงจรบนเบรดบอรดแบบเสมอนจรง จะตองใชโปรแกรมเพอฝกตอวงจรผาน ทางโปรแกรม Fritzing ซงสามารถดาวนโหลดไดจาก http://fritzing.org/home/

ภาพท 8.1 การดาวนโหลดโปรแกรม

ดาวนโหลดโปรแกรม

Page 2: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

252

ภาพท 8.2 เลอกระบบปฏบตการในการลงโปรแกรม

ภาพท 8.3 ท าการดาวนโหลดโปรแกรม Fritzing

2. ขนตอนการตดตงใชงานโปรแกรม Fritzing โดยการท าการแยกไฟลจากโปรแกรมบบอดไฟล

ภาพท 8.4 ท าการแยกไฟลโปรแกรม

เลอกระบบปฏบตการ

ทจะลงโปรแกรม

เลอก Extract file

Page 3: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

253

ภาพท 8.5 ไฟลโปรแกรม Fritzing

3. ขนตอนการเรยกใชงานโปรแกรม Fritzing โดยการดบเบลคลก สญลกษโปรแกรม ดงภาพ

ภาพท 8.6 ไอคอนโปรแกรม Fritzing

ภาพท 8.7 ขนตอนการเปดโปรแกรม Fritzing

Page 4: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

254

ภาพท 8.8 เรมตนการใชงานโปรแกรม Fritzing

4. ขนตอนการใชงานโปรแกรม Fritzing 4.1 เลอกบอรดทดลอง ใหไปทเมน Breadboard

ภาพท 8.9 เลอกบอรดทดลอง

คลก >> Breadboard

Page 5: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

255

4.2 ท าการปรบขนาดบอรดทดลอง ตามทตองการ

ภาพท 8.10 เลอกขนาดบอรดทดลอง

4.3 ท าการเลอกบอรดไมโครคอนโทรเลอรทตองการ ใหท าการเลอกบอรด Arduino Uno แลวท าการคลกคางไว แลวลากมาวางในต าแหนงทตองการ แลวท าการหมนดานตามทตองการ

ภาพท 8.11 การเลอกใชงานบอรด Arduino Uno

คลก >> เลอก size

คลก >> 1. ไอคอน Arduino

คลก >>2. เลอก Arduino Uno

คลกคาง >> 3.ลากมาวางในต าแหนงทตองการ

คลก >> 4. ท าการหมนดานตามตองการ

Page 6: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

256

5. ท าการทดลองใชงาน ในกรณการใชงานกบ ไดโอดเปลงแสง LED

ภาพท 8.12 การเลอกใชหลอด LED

6. ท าการตอวงจร โดยลากสายไฟ และ ท าการตอวงจรตวตานทาน

ภาพท 8.13 การเชอมตอวงจรบอรดทดลองกบ Arduino

1. >> คลกท CORE

2. >> คลกท LED

3. >> คลกคาง วาง LED

1. >> คลกเลอกตวตานทาน

2. >> คลกใชสายไฟจากบอรด

3. >> ท าการเปลยนสสายไฟ

Page 7: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

257

7. ขนตอนการเรยกใชงาน Code จากโปรแกรม Arduino IDE

ภาพท 8.14 การเรยกใช Code โปรแกรม

8. ขนตอนการอพโหลดโปรแกรมลงบนบอรด Arduino เปนอนเสรจสมบรณ

ภาพท 8.15 การเรยกอพโหลดโปรแกรมลงบนบอรด Arduino

1. >> คลกเลอกCode

2. >> คลก Open

3. >> คลก Code แลว Open

คลก >> Upload

Page 8: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

258

2. ตวอยางโครงงานเครองนบเหรยญ โครงงานเครองนบเหรยญมรายละเอยดดงน อปกรณ มดงน 1. บอรตไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. โมดลนบเหรยญ 4 ตว 3. โมดลปมกด 1 อน 4. โมดลแอลซดตอรวมกบ 12c 1 ชด 5. สายตอวงจร 6. สายยเอสบ เงอนไขการท างาน โครงงานจะมชองจ านวน 4 ชองส าหรบการหยอดเหรยญจ านวน 4 ขนาดโดย

มรายละเอยดดงน ชองท 1 ตรวจจบเหรยญ 1 บาท ชองท 2 ตรวจจบเหรยญ 2 บาท ชองท 3 ตรวจจบเหรยญ 5 บาท ชองท 4 ตรวจจบเหรยญ 10 บาท โดยลกษณะการตดตงดงแสดงในภาพท 8.1

ภาพท 8.16 แสดงการออกแบบชองส าหรบหยอดเหรยญชนดตาง ๆ

เหรยญ 1 บาท เหรยญ 2 บาท เหรยญ 5 บาท เหรยญ 10 บาท

Page 9: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

259

วงจรการตอใชงาน ดงแสดงในภาพท 8.17

ภาพท 8.17 แสดงวงจรการตอใชงานเครองนบจ านวนเหรยญชนด 4 ชอง

ทมา : ประภาส พมพวง. (2560). การเขยนและการประยกตใชงานโปรแกรม Arduino. : 135

โคดโปรแกรม มดงน #include <Wier.h> //เรยกใชไลบราร #include <LiquidCrystal_l2C.h> //เรยกใชไลบราร LiquidCrystal_l2C lcd(0x3F, 20, 40); //ตงคาจอแอลซดขนาด 20 ตวอกษร 4 แถว #include < TM1637Display.h > //เรยกใชไลบราร const int buttonPin 2; //ประกาศชอตวแปร bottonPin เทากบ 2(ขา 2) const int ledPin13; //ประกาศชอตวแปร ledPin เทากบ 13(ขา 13) int buttonState 0; //ประกาศชอตวแปร bottonState เทากบ 0(ขา A0) #define D0Sensor 4 //ก าหนดวาขา D0 ของเซนเซอรตวท 1 ตออยกบขา 4 #define D0Sensor1 5 //ก าหนดวาขา D0 ของเซนเซอรตวท 1 ตออยกบขา 5 #define D0Sensor2 6 //ก าหนดวาขา D0 ของเซนเซอรตวท 1 ตออยกบขา 6 #define D0Sensor3 7 //ก าหนดวาขา D0 ของเซนเซอรตวท 1 ตออยกบขา 7 int i = 0; //ประกาศตวแปร i เทากบ 0

Page 10: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

260

int i1 = 0; //ประกาศตวแปร i1 เทากบ 0 int i2 = 0; //ประกาศตวแปร i2 เทากบ 0 int i3 = 0; //ประกาศตวแปร i3 เทากบ 0 const int digitalPin 2; void setup() { lcd.begin(); pinMode(ledPin, OUTPUT); pinMode( buttonPin, INPUT); pinMode(D0Sensor, INPUT); //ก าหนดใหขาทตอกบ 4 ของเซนเซอรเปนขาอนพต pinMode(D0Sensor1, INPUT); //ก าหนดใหขาทตอกบ 5 ของเซนเซอรเปนขาอนพต pinMode(D0Sensor2, INPUT); //ก าหนดใหขาทตอกบ 6 ของเซนเซอรเปนขาอนพต pinMode(D0Sensor3, INPUT); //ก าหนดใหขาทตอกบ 7 ของเซนเซอรเปนขาอนพต lcd.setCursor(0, 0); //ตงคาต าแหนงของจอแอลซด lcd.print(“WELCOME”); //พมพขอความ “WELCOME” delay(1000); //หนวงเวลา 1 วนาท } void loop() { lcd.setCursor(0, 0); //ตงคาต าแหนงของจอแอลซด lcd.print(“COIN 1 BATH =”); //พมพขอความ “COIN 1 BATH=” lcd.setCursor(0, 1); //ตงคาต าแหนงของจอแอลซด lcd.print(“COIN 2 BATH =”); //พมพขอความ “COIN 2 BATH=” lcd.setCursor(0, 2); //ตงคาต าแหนงของจอแอลซด lcd.print(“COIN 5 BATH =”); //พมพขอความ “COIN 5 BATH=” lcd.setCursor(0, 3); //ตงคาต าแหนงของจอแอลซด lcd.print(“COIN 10 BATH =”); //พมพขอความ “COIN 10 BATH=” buttonState= digitalRead(digitalPin); //รบคาจากตวแปร digitalPin if (buttonState==LOW) //ถามการกดปมหเชคคา i เปน 0 { i= 0; i1 = 0;

Page 11: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

261

i2 =0; i3 = 0; lcd.setCursor(16, 0); lcd.print(“ ”); lcd.setCursor(16, 1); lcd.print(“ ”); lcd.setCursor(16, 2); lcd.print(“ ”); lcd.setCursor(16, 3); lcd.print(“ ”); } ///////////////////Senser1///////////////// if(digitalRead(D0Sensor)==HIGH) //ถาขาทตอกบ D0 มสถานะเปน HIGH { while(digitalRead(D0Sesor)==HIGH); //ใหรอจนกวาขาทตอกบ D0 เปน LOW i++; //เพมคาในตวแปร i ขน 1 จ านวน } lcd.setCursor(16, 0); lcd.print(i); ///////////////////Senser 2 ////////////////// if(digitalRead(D0Densor1)==HIGH) { while(digitalRead(D0Densor1)==HIGH); i1++; } lcd.setCursor(16, 1); lcd.print(i1); ///////////////////////////Senser 3///////////////////// if(digitalRead(D0Sensor2)==HIGH) { while(digitalRead(D0Densor2)==HIGH); i2++;

Page 12: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

262

} lcd.setCursor(16, 2); lcd.print(i2); ///////////////////////////Senser 4/////////////////// If(digitalRead(D0Sensor3)==HIGH) { while(digitalRead(D0Densor3)==HIGH); i3++; } lcd.setCursor(16, 3); lcd.print(i3); }

2. ตวอยางโครงงานเครองเตอนไขสง โครงงานเครองเตอนไขสงมรายละเอยดดงน

อปกรณ มดงน 1. บอรดไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. โมดลวดอณหภมแบบแทง 1 ตว 3. โมดลแอลซดตอรวมกบ I2C 1 ชด 4. โมดลเครองเสยง 1 ตว 5. โมดลรเลย 1 ชอง 1 ตว 6. สวตชแบบปมกด 1 ตว 7. ล าโพงขนาด 0. 5 วตต 8 โอหม 1 ตว 8. สายตอวงจร 9. สายยเอสบ

เงอนไขการท างาน ในการท างานจะมเซนเซอรวดอณหภมเปนตวทสมผสกบรางกายผปวยเชนหลงเปนตนโดยเซนเซอรจะรบอณหภมของรางกายเมออณหภมสงเกน 37. 5 องศาเซลเซยสโปรแกรมจะสงเสยงเพอแจงเตอนเพอใหผดแลผปวยมาเชดตวเพอปองกนผปวยหมดสตโดยเซนเซอรทใชดงแสดงในภาพท 8.18

Page 13: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

263

ภาพท 8.18 แสดงรปเซนเซอรทใชในการท างาน

ทมา: https://www.arduitronics.com/product/478/waterproof-temperature-sensor-ds18b20-3-meter

วงจรการตอใชงานดงแสดงในภาพท 8.19

ภาพท 8.19 แสดงวงจรการตอใชงาน ทมา : ประภาส พมพวง. (2560). การเขยนและการประยกตใชงานโปรแกรม Arduino. : 138

Page 14: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

264

โคดโปรแกรมมดงน # include <OneWire. h> //เรยกใชไลบราร OneWire # include <Wire. h>// เรยกใชไลบราร Wire # include <LiquidCrystal _ 12C. h>// เรยกใชไลบรารแอลซด LiquidCrystal _12C lcd (Ox27, 16, 2); // ตงคาจอแอลซดเปน 16 ตวอกษร 2 แถว # include <DallasTemperature. h> // เรยกใชไลบรารของเซนเซอรวดอณหภม # define ONE _ WIRE _ BUS 2 เเตงคาเสนทางการสอสารขอมลโดยใชขาท 2 OneWire oneWire (ONE _ WIRE _ BUS); // ตงการสอสารในระบบเสนทางขอมลโดยใชตวแปร oneWire DallasTemperature sensors (& oneWire); // อานคาอณหภมมายงตวแปร oneWire int led = 13; // ประกาศตวแปร led ใหเทากบ 13 (ขา 13) void setup () { lcd. begin (); // เรมตนการใชงานจอแอลซด lcd. backlight (); // เรมตนการใชงานระบบการแสดงผล pinMode (led, OUTPUT); // ตงคาใหตวแปร led เปนเอาตพต Serial. begin (9600); // ตงคาการสอสารเปน 9, 600 บตตอวนาท Serial. println ("Dallas Temperature IC Control Library Demo"); sensors. begin (); เรมตนการใชเซนเซอร } void loop () { Serial. print ("Requesting temperatures..."); sensors. requestTemperatures: // สงคาของอณหภม Serial. println ("DONE"); // พมพขอความ“ DONE "ออกทางมอนเตอร Serial. print (" Temperature for the device 1 (index 0) is: "); Serial. println (sensors. getTempCByIndex (0)); // พมพคาอณหภมออกทางมอนเตอร lcd. setCursor (0, 0); // ตงคาต าแหนงจอแอลซด lcd. print (" Temperature "); // พมพขอความออกจอแอลซด lcd.setCursor (5, 1); // ตงคาต าแหนงจอแอลซด lcd. print (sensors. getTempCByIndex (O)); // พมพขอความออกจอแอลซด if (sornsors. getTempCByIndex (0)> 37. 5) // ตรวจสอบเงอนไขวาอณหภมมากกวา 37. 5 หรอไม {

Page 15: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

265

digitalWrite (led, LOW); // สงใหตวแปร led มคาเปน Low } else { digitalWrite (led, HIGH); // สงใหตวแปร led มคาเปน HIGH } }

3. ตวอยางโครงงานตหยอดเหรยญจายไฟ

โครงงานตหยอดเหรยญจายไฟโครงงานตหยอดเหรยญจายไฟ มดงน อปกรณ มดงน

1. บอรดไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. โมดลแอลซดรวมกบ I2C 1 ชด 3. โมดลรเลย 4 ชอง 1 ตว 4. โมดลสวตซแบบปมกด 3 ตว 5. โมดลเครองรบเหรยญ 1 ตว 6. โมดลยเอสบ 1 ตว 7. ตวความตานทานขนาด 4, 700 โอหม 1 ตว 8. แหลงจายแรงดนไฟฟากระแสตรง 12 โวลต 1 ตว 9. สายตอวงจร 10. สายยเอสบ

เงอนไขการท างานในการท างาน จะตองใชอปกรณในการรบเหรยญประกอบการตอวงจรเพอรบคาของสญญาณทไดจากเหรยญในแตละขนาดทแตกตางกนโดยเมอเหรยญแตละชนดหยอดลงไปในเครองรบเหรยญคาของเหรยญจะไปบวกเพมอตโนมตและจะหยดการบวกจ านวนเงนเมอผใชกดปมสวตชเพอจายไฟโดยลกษณะเครองรบเหรยญ และการตอวงจรเครองรบเหรยญดงแสดงในภาพท 8.20

Page 16: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

266

ภาพท 8.20 แสดงเครองรบเหรยญ ทมา : https://www.myarduino.net/product/175/coin-validatorเครองรบเหรยญ-เครองหยอดเหรยญ-รน-sg-1

วงจรการตอใชงาน ดงแสดงในภาพท 8.21

ภาพท 8.21 แสดงรปวงจรการตอใชงาน ทมา : ประภาส พมพวง. (2560). การเขยนและการประยกตใชงานโปรแกรม Arduino. : 142

Page 17: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

267

โคดโปรแกรม มดงน ///////////////////////////////อตราคาบรการ/////////////////////////////// // 2 บาท 15 นาท // // 5 บาท 30 นาท // // 10 บาท 60 นาท // ////////////////////////////////////////////////////////////////////////// # include <Wire. h> # include <LiquidCrystal _ 12c. h> LiquidCrystal _ t2C Icd (0 x 3F, 16, 2); Int pin = 7 // อานคาเครองหยอดเหรยญซองท 1 unsigned long duration; int count = 0; ประกาศตวแปรส าหรบเกบคา int d = 0; //ประกาศตวแปรส าหรบเกบคาเงน 2 บาท int b = 0; // ประกาศตวแปรส าหรบเกบคาเงน 5 บาท int c = 0; // ประกาศตวแปรส าหรบเกบคาเงน 10 บาท int d = 0; // ประกาศตวแปรส าหรบเกบคารวมเงนทงหมด int i = 0; //ประกาศตวแปรส าหรบเกบคาเวลาทงหมด int d1 = 0; //ประกาศตวแปรส าหรบเกบคาเงนรวมเงน 2 บาท int d2 = 0; //ประกาศตวแปรส าหรบเกบคาเงนรวมเงน 5 บาท int d3 = 0; // ประกาศตวแปรส าหรบเกบคาเงนรวมเงน 10 บาท int f1 = 0; // ประกาศตวแปรส าหรบเกบคาเวลา int + 2 = 0; //ประกาศตวแปรส าหรบเกบคาเวลา int f3 = 0; // ประกาศตวแปรส าหรบเกบคาเวลา int t = 0; // เวลาเงน 2 บาท int t2 = 0; // เวลาเงน 5 บาท int t3 = 0; // เวลาเงน 10 บาท int ti1 = 0; // นบเวลารเลยชองท 1 int ti2 = 0; // นบเวลารเลยของท 2 int ti3 = 0; // นบเวลารเลยซองท 3 const int buttonPin1 = 4; // สวตชชองท 1 const int buttonPin2 = 5; //สวตชชองท 2 const int buttonPin3 = 5; //สวตชชองท 3

Page 18: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

268

const int ledPin1 = 11; //รเลยชองท 1 const int ledPin2 = 12; //รเลยชองท 2 const int ledPin3 = 13; //รเลยชองท 3 int buttonState1 = 0; //อานคาสวตชตวท 1 int buttonState2 = 0; //อานคาสวตชตวท 2 int buttonState3 = 0; //อานคาสวตชตวท 3 void setup() { lcd, begin (); Serial. begin (9600); // ตงคาการสอสารท 9, 500 บตตอวนาท pinMode (pin, INPUT); // ตงคาใหตวแปร pin เปนอนพต pinMode (ledPin1, OUTPUT); // ตงคาตวแปร ledPin1 เปนเอาตพต pinMode (ledPin2, OUTPUT); // ตงคาตวแปร ledPin2 เปนเอาตพต pinMode (ledPin3, OUTPUT); // ตงคาตวแปร ldPin3 เปนเอาตพต pinMode (buttonPint, INPUTD; //ตงคาตวแปร buttonPin1 เปนอนพต pinMode (buttonPn2, INPUTD; //ตงคาตวแปร buttonPin2 เปนอนพต pinMode (buttonPin3, INPUT); // ตงคาตวแปร buttonPin3 เปนอนพต lcd. clear (); //สงเคลยรหนาจอแอลซด lcd. setCursor (6, 0); // ตงคาต าแหนงจอแอลซด lcd. print ("WELCOME"); // พมพขอความ“ WELCOME”ออกจอแอลซด lcd. setCursor (0, 2); //ตงคาต าแหนงจอแอซด lcd. print ("VENDING SUPPLY"); // พมพขอความ“ VENDING SUPPLY” // ออกจอแอลซด delay (2000); // หนวงเวลา 2 วนาท } void loop () { loop: duration = pulseln (pin, HIGH, 1000000); // ก าหนดสญญาณพลสในการท างาน float time = duration / 1000. 00 // ประกาศตวแปร time และค านวณ Serial. print (" DelT = "); // พมพขอความออกมอนเตอร Serial. print (time); // พมพขอมลตวแปร time ออกมอนเตอร

Page 19: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

269

Serial. println (" ms "); buttonState] = digitalRead (buttonPin1); // สวตชตวท 1 ขาท 4 buttonState] = digitalRead (buttonPin1); // สวตชตวท 2 ขาท 5 buttonState] = digitalRead (buttonPin1); // สวตชตวท 3 ขาท 6 if (time >2 ) //ตวสอบตวแปร time มากกวา 2 หรอไม { d=0; f=0; count=count + 1; //ท าการเพมคาใหตวแปร count Serial.print(count); //พมพคาตวแปร count ออกมอนเตอร } if(time==0) //ตรวจสอบตวแปร time เทากบ 0 หรอไม { if(count > 0 &&count<3) //ตรวจสอบตวแปร count มากกวา 0 //และนอยกวา 3 หรอไม { Serial.println(“2 Bath”); //พมพขอความ “2 Bath” ออกมอนเตอร a = a +2 ; //เพมจ านวนครง 2 บาท t1 = t1+15; //เพมจ านวนเวลาครงละ 15 นาท } if (count> 3 & & count <7) // ตรวจสอบตวแปร Count มากกวา 3 // และนอยกวา 7 หรอไม { Serial. println ("5 Bath"); // พมพขอความ“ 5 Bath” ออกมอนเตอร b = b + 5; //เพมจ านวนเงนครง 5 บาท t2 = + 2 + 30; //เพมจ านวนเวลาครงละ 30 นาท } if (count> 7 & & count <12) // ตรวจสอบตวแปร count มากกวา 7 //และนอยกวา 12 หรอไม { Serial. println ("10 Bath"); // พมพขอความ“ 5 Bath” ออกมอนเตอร C = C + 10; // เพมจ านวนเงนครง 10 บาท t3 = t3 + 60; // เพมจ านวนเวลาครงละ 60 นาท

Page 20: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

270

} d = a + b + c; // ตงสตรค านวณการรวมคาจ านวนเงน f = t1 + t2 + t3; // ตงสตรค านวณรวมคาเวลา d1 = d; f1 = f; lcd. clear (); lcd. setCursor (0, 0); // ก าหนดต าแหนงเรมตนของ cursor ทต าแหนง (0, 1) lcd. print ("PLZ INSERT COIN"); // แสดงขอความปรากฏหนาจอแอลซด lcd. setCursor (5, 2); //ก าหนดต าแหนงจอแอลซด lcd. print ("BATH"); // พมพขอความออกจอแอลซด lcd. setCursor (14, 2); //ก าหนดต าแหนงจอแอลซด lcd. print ("MIN"); // พมพขอความออกจอแอลซด lcd. setCursor (2, 2); // ก าหนดต าแหนงจอแอลซด lcd. print (d); // พมพขอมลตวแปร d ออกจอแอลซด lcd. setCursor (11, 2); //ตงคาต าแหนงจอแอลซด lcd. print (f); / / พมพขอมลของตวแปร f ออกจอแอลซด count = 0; ///////////////////////////////////////ปมท 1 //////////////////////////////////////////////// if (buttonState1 = = HIGH) // ตรวจสอบการกดสวตชเมอกชองจายไฟท 1 { lcd. clear (); lcd. setCursor (1, 0); lcd. print ("POWER SUPPLY 1"); lcd. setCursor (2, 2); lcd. print (d1); lcd. print ("BATH"); lcd. setCursor (11, 2); lcd. print (f1); lcd. print ("MIN"); for (ti1 = 1; ti1> 0: ti1--) // ลดคาเวลาจากตวแปร 1 ครงละ 1 { digitalWrite (ledPin1, HIGH); //สงใหตวแปร ledPin เปน HIGH

Page 21: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

271

//(รเลยท างาน) Serial. println (ti1); lcd. setCursor (11, 2); lcd. print (ti1); lcd. print (" "); delay (60000); } digitalWrite (ledPin1, LOW); //สงใหตวแปร ledPin เปน Low count = 0; // (รเลยหยดท างาน) d = 0; f = 0; a = 0; b = 0; C = 0; t1 = 0; t2 = 0; t3 = 0; lcd. setCursor (11, 2); lcd. print (ti1); //////////////////////////////ปมท 2 //////////////////////////////// if (buttonState2 = = HIGH) //ตรวจสอบการกดสวตชเลอกซองจายไฟท 2 { lcd. clear (); lcd. setCursor (1, 0); lcd. print ("POWER SUPPLY 2"); lcd. setCursor (2, 2); lcd. print (d1); lcd. print ("BATH"); lcd. setCursor (11, 2); lcd. print (f1); lcd. print ("MIN");

Page 22: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

272

for (ti2 = f1; ti2> 0; ti2--) //ลดคาเวลาจากตวแปร t2 ครงละ 1 { digitalWrite (ledPin2, HIGH); //สงใหตวแปร ledPin2 เปน HIGH //(รเลยท างาน) Serial. println (ti2); lcd. setCursor (11, 2); lcd. print (ti2); lcd. print (" "); delay (60000); } digitalWrite (ledPin2, LOW); // สงใหตวแปร ledPin2 เปน Low //(รเลยหยดท างาน) count = 0; d = 0; f = 0; a = 0; b = 0; c = 0; t1 = 0; t2 = 0; t3 = 0; lcd. setCursor (11, 2); lcd. print (ti2); } ///////////////////////////////ปมท 3 ////////////////////////// if (buttonState3 = = HIGH) // ตรวจสอบการกดสวตชเลอกชองจายไฟท 3 { lcd. clear (); lcd. setCursor (1, 0); lcd. print ("POWER SUPPLY 3"); lcd. setCursor (2, 2);

Page 23: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

273

lcd. print (d1); lcd. print ("BATH"); lcd. setCursor (11, 2); lcd. print (f1); lcd. print ("MIN"); for (ti3 = f1; ti3> 0; ti3--) //ลดคาเวลาจากตวแปร t3 ครงละ 1 { digitalWrite (ledPin3, HIGH); // สงใหตวแปร ledPin3 เปน HIGH //(รเลยท างาน) Serial. println (ti3); lcd. setCursor (11, 2); lcd. print (13): lcd. print (" "); delay (60000); digitalWrite (ledPin3, LOW); // สงใหตวแปร ledPin3 เปน Low //(รเลยหยดท างาน) count = 0; d = 0; f = 0; a = 0; b = 0; c= 0; t1 = 0; t2 = 0; t3 = 0; lcd.setCursor (11, 2); lcd. print (ti3); } } }

Page 24: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

274

4. ตวอยางโครงงานตแจงเตอนจดหมาย

โครงงานตแจงเตอนจดหมายมรายละเอยดดงน อปกรณ มดงน

1. บอรดไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. โมดลเซนเซอรอลตราโซนก 1 ตว 3. โมดล gsm800 1 ตว 4. หลอดแอลอด 1 ตว 5. ตวความตานทานขนาด 220 โอหม 1 ตว 6. สายตอวงจร 7. สายยเอสบ

เงอนไขการท างานการท างาน ของโครงงานนจะเปนตจดหมายทคอยรบจดหมายทกไปรษณยโดยเมอมจดหมายเขามาในตจดหมายภายในตจดหมายจะมเซนเซอรตรวจจบเมอพบจดหมายจะสงขอความไปยงเจาของบานเพอแจงเตอนวามจดหมายเขามาแลวโดยอปกรณทส าคญในการใชงาน ไดแก โมดล gsm800 ดงแสดงในภาพท 8.22

ภาพท 8.22 แสตงโมดล gsm800 ทมา : https://elementztechblog.wordpress.com/2016/06/28/interfacing-sim800-gsm-modem-with-arduino/

Page 25: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

275

วงจรการตอใชงาน ดงแสดงในภาพท 8.23

ภาพท 8.23 แสดงวงจรการตอใชงาน

ทมา : ประภาส พมพวง. (2560). การเขยนและการประยกตใชงานโปรแกรม Arduino. : 148

โคดโปรแกรมมดงน # define echoPin 9 // ก าหนดใหขา 9 เปนขารบสญญาณ # define trigPin 10 // ก าหนดใหขา 10 เปนขาสงสญญาณ # define LEDPin 13 // ก าหนดใหขา 13 เปนขาควบคมหลอดแอลอด # include <SoftwareSerial. h> // เรยกใชไลบราร long duration, inches, Cm; // ประกาศตวแปรเปนชนด long int maximumRange = 100 // ประกาศตวแปรในการก าหนดระยะสงสด int minimumRange1 = 15 // ประกาศตวแปรในการก าหนดระยะต าสด # define SIM800 _ TX _ PIN 8 // ก าหนดขาของโมดล gsm800 # define SIM800 _ RX _ PIN 7 / / ก าหนดขาของโมดล gsm800 SoftwareSerial serialSIM800 (SIM800 _ TX _ PIN, SIM800 _ RX _ PIN); // ประกาศการเรยกใชโมดล gsm void setup () { Serial. begin (9600); //ตงคาการสอสารท 9600 บตตอวนาท while (! Serial); serialSIM800. begin (9600); // ก าหนดการสอสารของโมดล gsm800 ท 9600 บตตอนาท delay (1000); // หนวงเวลา 1 วนาท } void loop ()

Page 26: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

276

{ digitalWrite (trigPin, LOW); // สงใหตวแปร trigPin มสถานะเปน Low delayMicroseconds (2); // หนวงเวลา 2 มลลวนาท digitalWrite (trigPin, HIGH); // สงใหตวแปร trigPin มสถานะเปน HIGH delayMicroseconds (10); // หนวงเวลา 10 มลลวนาท digitalWrite (trigPin, LOW); // สงใหตวแปร trigPin มสถานะเปน Low duration = pulseln (echoPin, HIGH); // สงใหมการสงสญญาณออกไป cm = microsecondsToCentimeters (duration); // การค านวณระยะหางเปนเซนตเมตร Serial. print (cm);// พมพขอมลของตวแปร cm ออกทางมอนเตอร Serial. print ("cm"); // พมพขอความ“ cm” ออกทางมอนเตอร Serial. println (); // พมพเวนบรรทด /////////////////////////////////// sensor //////////////////////////////// if (cm <= minimumRange1) // ก าหนดเงอนไขถาตวแปร cm นอยกวาคาระยะต าสด { digitalWrite (LEDPin, HIGH); // สงใหตวแปร LEDPin มสถานะเปน HIGH serialSIM800. begin (9600); // ตงคาการสอสารของพอรตโมดล gsm800 delay (1000); // หนวงเวลา 1 วนาท Serial. println ("Setup Complete!"); // พมพขอความ“ Setup Complete!” ออกมอนเตอร Serial. println ("Sending SMS..."); // พมพขอความ“ Sanding SMS” ออกมอนเตอร serialSIM800. write ("AT + CMGF = 1 \ r \ n");//ตงคารปแบบของขอความในรปแบบของรหสแอสก delay (1000); // หนวงเวลา 1 วนาท SerialSIM800. write ("AT + CMGS = \" 466923456850 \ "\ r \ n"); // ตงคาเบอรโทรศพทเพอสงขอความ delay (1000); // หนวงเวลา 1 วนาท serialSIM800. write ("MAIL"); // ท าการสงขอความ“ MAIL " delay (1000); // หนวงเวลา 1 วนาท SerialSIM800. write (char) 26): // สงขอความเปนลกษณะตวอกษร delay (1000); // หนวงเวลา 1 วนาท Serial. println (" SMS Sent! "); // พมพขอความ“ SMS Sent!” ออกมอนเตอร } else

Page 27: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

277

{ digitalWrite (LEDPin, LOW); // สงใหตวแปร LEDPin มสถานะเปน Low } } long microsecondsToinches (long microseconds) // โปรแกรมยอยในการสงคาตวแปรการ // แปลงคาเปนนว { return rmicroseconds / 74 72; // สงคาตวแปร microseconds } long microsecondsToCentimeters (long microseconds) // โปรแกรมยอยในการสงค าตวแปรการ // แปลงคาเปนเซนตเมตร { return microseconds / 29/2; // สงคาตวแปร microseconds }

5. ตวอยางโครงงานเปด-ปดหลอดแอลอดผานสมารทโฟน โครงงานเปดปดหลอดแอลอดผานสมารตโฟนมรายละเอยดดงน

อปกรณมดงน 1. บอรดไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. หลอดแอลอด 3 หลอด 3. ตวความตานทานขนาด 220 โอหม 3 ตว 4. สายตอวงจร 5. สายยเอสบ

เงอนไขการท างาน โครงงานนเปนการควบคมการเปด-ปดหลอดแอลอดผานสมารตโฟน โดยเชอมตอผานสญญาณบลทธ โดยจะตองมการใชแอปพลเคชนในระบบแอนดรอยดทใชควบคมลกษณะเปน โดยการเขยนแอปพเคชนจะพดถงในบทท 7 ตอไปและแอปพลเคชนสามารถดาวนโหลดจากควอารโคดได

Page 28: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

278

วงจรการตอใชงานดงแสดงในภาพท 8.24

ภาพท 8.24 แสดงการตอวงจร

ทมา : ประภาส พมพวง. (2560). การเขยนและการประยกตใชงานโปรแกรม Arduino. : 151

โคดโปรแกรมมดงน char val; ประกาศตวแปรชอ val int ledpin 1=11; // ประกาศตวแปรชอ ledpin เทากบขา 11 int ledpin 1=12; // ประกาศตวแปรชอ ledpin เท ากบขา 12 int ledpin 1=13; // ประกาศตวแปรชอ lodgin เทากบขา 13 void setup () { pinMode (lotpln1, OUTPUT); // ทงค าใหตวแปร ledpin1 เปน OUTPUT pinMode (ledpin2, OUTPUT); // ตงค าใหตวแปร lednin2 เปน OUTPUT pinMode (ledpin3, OUTPUT); //ตงคาใหตวแปร lodpin3 เปน OUTPUT Serial. begin (9600); //เรมตนการสอสารท 9, 600 ปตตอวนาท } void loop () { if (Serial available ()) // ถามขอมลเขามาใหท าการอานขอมล { val Serial. read (); //น าขอมลทอานไดไปเกบในตวแปร val } if (Val == "a") // ตรวจสอบคาในตวแปร val เทากบตวอกษร "a" หรอไม { digitalWrite (ledpln1, HIGH); // สงใหตวแปร lodin1 เปน HIGH (หลอดไฟตด) }

Page 29: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

279

if (Val == "b") // ตรวจสอบคาในตวแปร val เทากบตวอกษร "b" หรอไม { digitalWrite (ledpln1, LOW); // สงใหตวแปร lodin1 เปน LOW (หลอดไฟดบ) } if (Val == "c") // ตรวจสอบคาในตวแปร val เทากบตวอกษร "c" หรอไม { digitalWrite (ledpln2, HIGH); // สงใหตวแปร lodin2 เปน HIGH (หลอดไฟตด) } if (Val == "d") // ตรวจสอบคาในตวแปร val เทากบตวอกษร "d" หรอไม { digitalWrite (ledpln2, LOW); // สงใหตวแปร lodin2 เปน LOW (หลอดไฟดบ) } if (Val == "e") // ตรวจสอบคาในตวแปร val เทากบตวอกษร "e" หรอไม { digitalWrite (ledpln3, HIGH); // สงใหตวแปร lodin3 เปน HIGH (หลอดไฟตด) } if (Val == "f") // ตรวจสอบคาในตวแปร val เทากบตวอกษร "f" หรอไม { digitalWrite (ledpln3, LOW); // สงใหตวแปร lodin3 เปน LOW (หลอดไฟดบ) } delay(100); //หนวงเวลา 100 มลลวนาท }

6. ตวอยางโครงงานแสดงอณหภมผานสมารทโฟน โครงงานแสดงอณหภมผานสมารตโฟน มดงน

อปกรณมดงน 1. บอรดไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. โมดลบลทธ 1 ตว 3. โมดลเซนเซอรวดอณหภม 1 ตว 4. สายตอวงจร 5. สายยเอสบ

Page 30: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

280

เงอนไขการท างาน ในการท างานโครงงานแสดงอณหภมผานสมารตโฟนจะมตวเซนเซอรเปนตวรบคาอณหภมและสงคาผานสญญาณบลทธเพอมาแสดงในสมารตโฟนในระบบแอนดรอยดโดยเซนเซอรทใชจะเปนเซนเซอรแบบแทงแสดงลกษณะ และการเขยนแอปพลเคชนจะมขนตอนในการเขยน และสามารถดาวนโหลดแอปพลเคชนไดตามควอารโคด และแสดงหนาตางของแอปพลเคชนในภาพท 8.25

ภาพท 8.25 แสดงรปเซนเซอรแบบแทง

ทมา: https://www.arduitronics.com/product/478/waterproof-temperature-sensor-ds18b20-3-meter

วงจรการตอใชงานดงแสดงในภาพท 8.26

ภาพท 8.26 แสดงวงจรการตอใชงาน

ทมา : ประภาส พมพวง. (2560). การเขยนและการประยกตใชงานโปรแกรม Arduino. : 154

Page 31: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

281

โคดโปรแกรม ดงน # include <OneWire. h> // การเรยกใชไลบราร OneWire # include <Wire. h> // การเรยกใชไลบราร Wire # include <SoftwareSerial. h> // การเรยกใชไลบราร SoftwareSerial # include <DallasTemperature. h> // การเรยกใชไลบรารเซนเซอรวดอณหภม # include "SPI. h" //การเรยกใชไลบราร SPI # include "Adafruit _ GFX. h" // การเรยกใชไลบราร Adafruit _ GFX # include "Adafruit _ SH1106. h" // การเรยกใชไลบราร Adafruit _ SH1106 # define ONE _ WIRE _ BUS 2 // ประกาศตวแปรทใชในการอานคาอณหภมทขา 2 OneWire oneWire (ONE _ WIRE _ BUS); // การสงขอมลอณหภมไปยงอปกรณทเชอมตอ DallasTemperature sensors (& oneWire); // สงคาอณหภมไปทางเสนทางการสอสาร void setup (void) { mySerial. begin (9600); // ตงคาการสอสารผานบลทธท 9, 600 บต Serial. begin (9600); ตอวนาท // ตงคาการสอสารผานพอรตท 9, 600 บตตอวนาท Serial. println ("Dallas Temperature IC Control Library Demo"); // พมพขอความออกมอนเตอร sensors. begin (); // ตงคาเรมตนการใชเซนเซอร } void loop (void) { Sensors. requestTemperatures (): // สงคาอณหภม Serial. println (sensors. getTempCByIndex (0); // พมพคาอณหภมในมอนเตอร mySerial. println (sensors. getTempCByIndex (0); // สงคาอณหภมไปยงอปกรณทเชอมตอผานบลทธ }

Page 32: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

282

7. ตวอยางโครงงานหนยนตวงตาม โครงงานหนยนตวงตาม มดงน

อปกรณ มดงน 1. บอรดไมโครคอนโทรลเลอร Arduino รน UNO 1 ตว 2. โมดลวดระยะอลตราโซนก 1 ตว 3. โมดลขบมอเตอร L298N 1 ตว 4. มอเตอรไฟฟากระแสตรง 12 โวลต 2 ตว 5. สายตอวงจร 6. สายยเอสบ

เงอนไขการท างาน การท างานของโครงการหนยนตเดนตามจะท างานโดยเมอระยะหางจากผใชอยในชวงไมเกน 30 เซนตเมตรเมอผใชขยบหางไปหนยนตกจะวงตามโดยใชโมดณวดระยะเปนตววดระยะในการวงตามและสงสญญาณไปยงบอรดการตนโนเพอขบมอเตอรใหหมนท าใหหนยนตวงตามโดยบอรดขบมอเตอรจะใชโมดณรน L298N ยงแสดงในภาพท 8.27

ภาพท 8.27 แสตงโมดลขบมอเตอรรน L298N

ทมา : https://www.mosfex.com/product/199/l298n-โมดลขบมอเตอร-dc-2a-dual-channel-h-bridge-motor-driver-controller-l298n-module

Page 33: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

283

วงจรการตอใชงาน ดงแสดงในภาพท 8.28

ภาพท 8.28 แสดงการตอวงจร

โคดโปรแกรม มดงน # define echoPin 5 // ประกาศใหขา 5 เปน Echo # define trigPin 6 // ประกาศใหขา 6 เปน Trigger # define LED1 Pin 13 // ประกาศตวแปร LED1Pin เทากบขา 13 # define LED2Pin 12 // ประกาศตวแปร LED1Pin เทากบขา 12 # define LED3Pin 11 // ประกาศตวแปร LED1Pin เทากบขา 11 # define LED4Pin 10 // ประกาศตวแปร LED1Pin เทากบขา 10 เปนขาสญญาณพลส # define LED5Pin 9 // ประกาศตวแปร LED1 Pin เทากบขา 9 เปนชาสญญาณพลส # define LED6Pin 8// ประกาศตวแปร LED1Pin เทากบขา 8 long duration, inches, cm; // ประกาศตวแปรชนด long int maximumRange = 100; //ก าหนดคาใหตวแปรเปนระยะสงสด int minimumRange = 30; // ก าหนดคาใหตวแปรเปนระยะต าสด int i1 = 80, i2 = 80; // ก าหนดคาของตวแปรเพอใชในการก าหนดความเรวมอเตอร void setup () { Serial. begin (9600); // ตงคาการสอสารทความเรว 9, 600 บตตอวนาท pinMode (trigPin, OUTPUT); // ตงคาตวแปร trigPin ใหเปนเอาตพต pinMode (echoPin, INPUT); // ตงคาตวแปร echoPin ใหเปนอนพต

Page 34: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

284

pinMode (LED1Pin, OUTPUT); // ตงคาตวแปร LED1Pin ใหเปนเอาตพต pinMode (LED2Pin, OUTPUT); // ตงคาตวแปร LED2Pin ใหเปนเอาตพต pinMode (LED3Pin, OUTPUT); // ตงคาตวแปร LED3Pin ใหเปนเอาตพต pinMode (LED4Pin, OUTPUT); // ตงคาตวแปร LED4Pin ใหเปนเอาตพต pinMode (LED5Pin, OUTPUT); // ตงคาตวแปร LED5Pin ใหเปนเอาตพต pinMode (LED6Pin, OUTPUT); 1. ตงคาตวแปร LED6Pin ใหเปนเอาตพต } void loop () { digitalWrite (trigPin, LOW); //ตงคาใหตวแปร trigPin ใหมสถานะเปน Low delayMicroseconds (2); // หนวงเวลา 2 ไมโครวนาท digitalWrite (trigPin, HIGH); // ตงคาใหตวแปร trigPin ใหมสถานะเปน HIGH delayMicroseconds (10); // หนวงเวลา 10 ไมโครวนาท digitalWrite (trigPin, LOW); // ตงคาใหตวแปร trigPin ใหมสถานะเปน LOW duration = pulseln (echoPin, HIGH); // ประกาศตวแปรเพอรบคาสญญาณ inches = microsecondsTolnches (duration); // การเปลยนคาสญญาณเปนนว cm = microsecondsToCentimeters (duration); // การเปลยนคาสญญาณเปนเซนตเมตร Serial. print (inches); // พมพคาของตวแปร inches ออกมอนเตอร Serial. print (" in "); / / พมพคาขอความออกมอนเตอร Serial. print (cm); // พมพคาขอมลตวแปร cm ออกมอนเตอร Serial. print (" cm "); // พมพขอความออกมอนเตอร Serial. println (); if (cm> = minimumRange) // ก าหนดเงอนไขวาตวแปร cm มากกวาหรอเทากบระยะทตงหรอไม { digitalWrite (LED1Pin, HIGH); // สงใหตวแปร LED1Pin มสถานะเปน HIGH digitalWrite (LED2Pin, HIGH); // สงใหตวแปร LED2Pin มสถานะเปน HIGH digitalWrite (LED3Pin, LOW); // สงใหตวแปร LED3Pin มสถานะเปน Low analogWrite (LED4Pin, i1); // สงใหตวแปร LED4Pin สงสญญาณออกเปนพลสตามทก าหนด analogwrite (LED5Pin, i2); // สงใหตวแปร LED5Pin สงสญญาณออกเปนพลสตามทก าหนด digitalWrite (LED6Pin, LOW); // สงใหตวแปร LED6Pin มสถานะเปน LOW } else // ถาท างานนอกเหนอจากเงอนไข digitalWrite (LED1Plin, Low); // สงใหตวแปร LED1 Pin มสถานะเปน LOW

Page 35: การสร้างสรรค์ผลงานด้วย ...252 ภาพท 8.2 เล อกระบบปฏ บ ต การในการลงโปรแกรม

285

digitalWrite (LED2Pin, LOW); // สงใหตวแปร LED2Pin มสถานะเปน Low digitalWrite (LED3Pin, LOW); // สงใหตวแปร LED3Pin มสถานะเปน LOW digitalWrite (LED4Pin, LOW); // สงใหตวแปร LED4Pin มสถานะเปน Low digitalWrite (LED5Pin, LOW); // สงใหตวแปร LED5Pin มสถานะเปน Low digitalWrite (LED6Pin, LOW); // สงใหตวแปร LED6Pin มสถานะเปน Low } delay (1000); // หนวงเวลา 1 วนาท } long microsecondsTolnches (long microseconds) // โปรแกรมยอยการสงคาเปนระยะนว { return microseconds / 74/2; // สงคา } long microsecondsToCentimeters (long microseconds) // โปรแกรมยอยการสงค าเปนระยะเซนตเมตร return microseconds / 29/2; // สงคา }

จากตวอยางการประยกตใชงานขางตนเปนการน าไปใชกบอปกรณตอพวงชนดตาง ๆ บางสวนเทานนซงอปกรณตอพวงยงมอกมากมายทน ามาใชกบงานทตองการไดซงลกษณะการตอใชงานและการเขยนโปรแกรมควบคมจะขนอยกบคณสมบตของอปกรณตอพวงนนนอกจากนโครงงานทยกตวอยางมากเปนสวนหนงทน าไปประยกตใชยงสามารถพฒนาไปเปนโครงงานแบบอน ๆ อกมากมาย