Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pop bot-xt v 2013-11-11

3,491 views

Published on

  • Be the first to comment

Pop bot-xt v 2013-11-11

  1. 1. • แนะนำให้รู้จักกับ Arduino • แกะกล่อง ตรวจสอบอุปกรณ์ในชุด • กำรติดตั้งซอฟต์แวร์ • สร้ำงหุ่นยนต์ POP-BOT XT • ขั้นตอนกำรเขียนโปรแกรมเพื่อควบคุมหุ่นยนต์ • พัฒนำหุ่นยนต์ให้ทำตำมภำรกิจต่ำงๆ • กำรเคลื่อนที่เบื้องต้น • กำรใช้เซนเซอร์สวิตช์ • หุ่นยนต์เคลื่อนที่ตำมเส้น ขั้นตอนกำรอบรม
  2. 2. อินพุต เอำต์พุตประมวลผล หลักกำรของระบบควบคุม
  3. 3. ต้นกำเนิด Arduino www.arduino.cc • คู่มืออ้ำงอิงกำรใช้งำน • ตัวอย่ำงฮำร์ดแวร์ • จุดกำเนิด IDEA • ที่ดำวน์โหลดโปรแกรม • ที่ซักถำมปัญหำ
  4. 4. ข้อมูลอ้ำงอิงสำหรับเขียนโปรแกรม • ชุดคำสั่ง • ไลบรำรี่ • ตัวแปร • คำสงวน
  5. 5. ต้นกำเนิด POP-XT โครงกำร Opensource จำก Arduino POP-XT ของ inex HARDWARE
  6. 6. POP-XT Edit + Compile + Download C/C++ คอมไพเลอร์ Opensource SOFTWARE
  7. 7. คุณสมบัติของ POP-XT • ใช้ไมโครคอนโทรลเลอร์ ATMEGA32U4 ของ ATMEL • ควำมละเอียดอ่ำนค่ำอะนำลอก 10 บิต (0-1023) 1024 ระดับ • หน่วยควำมจำโปรแกรม 32 กิโลไบต์ • ทำงำนที่ควำมเร็ว 16 ล้ำนคำสั่งต่อวินำที • เชื่อมต่อกับคอมพิวเตอร์ผ่ำนพอร์ต USB โดยตรงผ่ำนสำย Mini-B • มีจอ LCD กรำฟิ กสีควำมละเอียด 128x160 พิกเซล • ขับมอเตอร์ไฟตรงได้ 2 ตัว เซอร์โวมอเตอร์ได้ 3 ตัว • ต่อเซนเซอร์อะนำลอกได้ 8 ช่อง 220mF 100mF TB6612 ATMega32U4 100
  8. 8. ตำแหน่งกำรวำงอุปกรณ์ของ POP-XT
  9. 9. อุปกรณ์อินพุต Switch (Digital) Reflect (Analog) Distance (Analog) ปุ่ม OK (Digital) knob (Analog)
  10. 10. อุปกรณ์เอำต์พุต Servo Motor DC Motor ลำโพงเปียโซ จอ GLCD 128x160 ZX-LED
  11. 11. ติดตั้งซอฟต์แวร์ ประกอบด้วย • ซอฟต์แวร์ Arduino 1.0 • ตัวอย่ำง POP-BOT XT • ไดรเวอร์ USB • ไลบรำรี่ POP-BOT XT Arduino1.0 POP-BOT XT Setup.exe
  12. 12. 1 2 3 4
  13. 13. ติดตั้งซอฟต์แวร์POP-BOT ลงในเครื่องคอมพิวเตอร์พร้อมทั้งตัวติดตั้งไดรเวอร์USB 5 6 7 8
  14. 14. เปิ ดโปรแกรมจำก Start Menu
  15. 15. เริ่มต้นเชื่อมต่อกับคอมพิวเตอร์ 1. ใส่ถ่านชาร์จหรือถ่านอัลคาไลน์ AA 4 ก้อน 2.เสียบสาย Mini USB 3.เปิดสวิตช์จ่ายไฟให้ POP-XT ก่อน 4.เสียบสาย USB เข้ากับคอมพิวเตอร์
  16. 16. 027477001-4
  17. 17. กำรแก้ปัญหำในกรณีเกิดปัญหำกำรติดตั้ง windows 7 ให้เข้ำไปที่ Device Manager
  18. 18. กำรแก้ปัญหำในกรณีเกิดปัญหำกำรติดตั้ง windows 7 จะเจออุปกรณ์ที่มีเครื่องหมำย ! คลิกเมำส์ขวำเลือก Update Driver
  19. 19. กำรแก้ปัญหำในกรณีเกิดปัญหำกำรติดตั้ง windows 7 เลือกหัวข้อตำมรูป ชี้ไปตำแหน่งที่เก็บไดรเวอร์ เมื่อแจ้งเตือน เลือกตำมรูป กำรติดตั้งเสร็จสมบูรณ์
  20. 20. กำรติดตั้งไดรเวอร์กับ Windows XP
  21. 21. กำรติดตั้งไดรเวอร์กับ Windows XP คอมพิวเตอร์พบฮำร์ดแวร์ใหม่ เลือกตำแหน่งที่เก็บไดรเวอร์ C:Arduinodrivers กำรติดตั้งเสร็จสมบูรณ์
  22. 22. กำรติดตั้ง Arduino บนเครื่อง Mac OSX แตกไฟล์ ZIP จะได้ ICON ดังรูป ลำก ICON Arcuino รวมเข้ำไว้ที่ Aplication
  23. 23. เปิ ดโปรแกรม Arduino เลือกบอร์ดเป็น POP-XT เมื่อเชื่อมต่อสำย USB เครื่อง Mac จะเห็นพอร์ตสื่อสำรชื่อ tty.usbmodem...
  24. 24. หน้ำตำของโปรแกรม Arduino void setup() { } void loop() { } สำหรับกำหนดค่ำ เกิดขึ้นครั้งเดียว โปรแกรมหลักทำงำนต่อเนื่อง
  25. 25. เลือกชื่อบอร์ดเป็น POP-XT
  26. 26. เลือกตำแหน่งพอร์ตอนุกรม
  27. 27. เปิ ดโปรแกรมตัวอย่ำง
  28. 28. เป็นโปรแกรมแสดงข้อควำมที่หน้ำจอ GLCD
  29. 29. คอมไพล์ (แปลโปรแกรมที่เขียนว่ำถูกไวยกรณ์หรือไม่) กดปุ่มนี้ก็ได้
  30. 30. แถบสถำนะด้ำนล่ำงแสดงผลลัพธ์ ขนำดหน่วยควำมจำที่ใช้ ขนำดหน่วยควำมจำทั้งหมด แจ้งว่ำคอมไพล์ผ่ำน
  31. 31. ต่อสำย USB กับคอมพิวเตอร์
  32. 32. upload โปรแกรมไปยังหุ่นยนต์ หรือกดปุ่มนี้ก็ได้
  33. 33. ผลลัพธ์ คำสั่ง glcd แสดงข้อควำม
  34. 34. คุณสมบัติของจอภำพ
  35. 35. glcd แสดงข้อควำมที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1) รูปแบบ void glcd(unsigned char x, unsigned char y ,char *p,...) พำรำมิเตอร์ x คือตำแหน่งบรรทัดมีค่ำตั้งแต่ 0-15 y คือตำแหน่งตัวอักษรมีค่ำตั้งแต่ 0-24 *p คือข้อควำมที่ต้องกำรนำมำแสดง ค่ำพิเศษ %d แสดงตัวเลขจำนวนเต็มในช่วง -32,768 ถึง 32,767 %l แสดงตัวเลขจำนวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647 %f แสดงผลตัวเลขจำนวนจริง (แสดงทศนิยม 3 หลัก) คุณสมบัติของจอภำพ
  36. 36. ไลบรำรี่ของ glcd glcd setTextColor setTextBackgroundColor glcdClear glcdFillScreen glcdMode setTextSize getTextColor getTextBackgroundColor glcdTextSize glcdGetMode glcdPixel glcdRect glcdFillRect glcdLine glcdCircle glcdFillCircle glcdArc
  37. 37. unsigned int color[]= { GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, GLCD_BLACK, GLCD_WHITE, GLCD_SKY, GLCD_MAGENTA }; ตัวแปรที่ใช้สำหรับกำหนดสีพื้นฐำน
  38. 38. setTextColor(COLOR) unsigned color[]={ GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, GLCD_BLACK, GLCD_WHITE, GLCD_SKY, GLCD_MAGENTA }; ตัวอย่ำง #include <popxt.h> void setup(){ setTextColor(GLCD_WHITE); glcd(0,0,"Hello"); setTextColor(GLCD_GREEN); glcd(1,0,"World"); } void loop(){} ค่ำสีตัวอักษร
  39. 39. setTextBackgroundColor(COLOR) unsigned color[]={ GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, GLCD_BLACK, GLCD_WHITE, GLCD_SKY, GLCD_MAGENTA }; ตัวอย่ำง #include <popxt.h> void setup(){ setTextBackgroundColor(GLCD_RED); setTextColor(GLCD_YELLOW); glcd(0,0,"Hello World"); } void loop(){} ค่ำสีพื้นหลังตัวอักษร
  40. 40. glcdClear() ตัวอย่ำง #include <popxt.h> void setup(){} void loop(){ glcdClear(); sleep(500); glcdFillScreen(color[0]); sleep(500); glcdFillScreen(color[1]); sleep(500); glcdFillScreen(color[2]); sleep(500); } เคลียร์หน้ำจอ glcdFillScreen(COLOR) เทสีลงบนหน้ำจอทั้งหน้ำ
  41. 41. setTextSize ปรับขนำดตัวอักษร เป็นเท่ำตัว ถ้ำไม่กำหนดขนำดเป็น 1 เท่ำ ตัวอย่ำง #include <popxt.h> void setup(){} void loop(){ setTextSize(1); glcd(0,0,"1x"); setTextSize(2); glcd(0,2,"2x"); setTextSize(3); glcd(0,3,"3x"); setTextSize(4); glcd(1,0,"4x"); setTextSize(5); glcd(1,2,"5x"); }
  42. 42. หมุนจอ ขยำยขนำด
  43. 43. #include <popxt.h> // ผนวกไฟล์ไลบรารี่หลัก int i,j; void setup(){ glcdFillScreen(GLCD_WHITE); // กาหนดให้สีของพื้นหลังเป็นสีขาว setTextColor(GLCD_BLACK); // กาหนดสีตัวอักษรเป็นสีดา setTextBackgroundColor(GLCD_WHITE); // กาหนดสีพื้นหลังของตัวอักษรเป็นสี ขาว for (i=0;i<16;i++){ // วนลู ป 16 รอบเพื่ อแสดงข้ อความ glcd(i,i,"Row %d ",i); // แสดงข้ อความที่ จอแสดงผล } } void loop(){} ตัวอย่ำงกำรแสดงข้อควำมหลำยบรรทัด MultipleTextline.ino
  44. 44. โจทย์ สร้างวงกลมสีแดงอยู่กึ่งกลางจอภาพ รัศมีเต็มจอพอดี
  45. 45. โจทย์ ลากเส้น 4 เส้นโดยมีจุดตัดอยู่กลางจอภาพพอดี
  46. 46. โจทย์ สร้างสี่เหลี่ยมซ้อนกันดังรูป
  47. 47. glcd แสดงข้อควำมที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1) รูปแบบ void glcd(x,y,*p,...) พำรำมิเตอร์ x คือตำแหน่งบรรทัดมีค่ำตั้งแต่ 0-15 y คือตำแหน่งตัวอักษรมีค่ำตั้งแต่ 0-24 *p คือข้อควำมที่ต้องกำรนำมำแสดง ค่ำพิเศษ %d แสดงตัวเลขจำนวนเต็มในช่วง -32,768 ถึง 32,767 %l แสดงตัวเลขจำนวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647 %f แสดงผลตัวเลขจำนวนจริง (แสดงทศนิยม 3 หลัก) คำสั่ง GLCD
  48. 48. กำรแสดงผลตัวเลข glcd(0,0,"%d",100);
  49. 49. ตัวแปรใน Arduino byte 0-65535 (unsigned int)word 0-255 (unsigned char) 0-1boolean True False -32768 ถึง 32767int -128 ถึง 127char -3.4 x 1038 ถึง 3.4 x 1038float หาข้อมูลเพิ่มเติมจาก reference
  50. 50. เอาต์พุตดิจิตอลอย่างง่าย
  51. 51. เป็นฟังก์ชันส่งข้อมูลออกเอำต์พุต ตำแหน่งขำ num ด้วยสถำนะลอจิก dat "0" หรือ "1" ตัวอย่ำง ...... out(6,1) // ให้ LED ที่ต่อขำ 6 ติดสว่ำง out(4,0) // ให้ LED ที่ต่อขา 6 ดับ ...... out(int num,int dat)
  52. 52. สร้ำงเสียงออกลำโพง ลำโพงเปียโซ beep() sound(freq,time)
  53. 53. คำสั่งสร้ำงเสียง ฟังก์ชั่นกำเนิดเสียงอย่ำงง่ำย beep : ทำหน้ำที่กำเนิดเสียงควำมถี่ 500 Hz นำน 100 มิลลิวินำที void beep(void); ฟังก์ชั่นกำเนิดเสียงควำมถี่ใดๆ sound : ทำหน้ำที่กำเนิดเสียง ควำมถี่ ตำมช่วงเวลำที่กำหนด void sound(int freq,int time); พารามิเตอร์ freq ใช้กำหนดค่ำควำมถี่ค่ำสัญญำณเสียง time ใช้กำหนดช่วงเวลำในกำรกำเนิดสัญญำณเสียงใน หน่วยมิลลิวินำที
  54. 54. #include <popxt.h> void setup(){ } void loop(){ beep(); sleep(1000); }
  55. 55. #include <popxt.h> void setup(){ } void loop(){ sound(1200,500); sleep(1000); }
  56. 56. knob เป็นฟังก์ชั่นอ่ำนค่ำ knob บน POP-XT เหมือนคำสั่ง analog(8) ค่ำอยู่ในช่วง 80-1023 รูปแบบ unsigned int knob() กำรคืนค่ำ ค่ำที่อ่ำนได้จำก knob มีค่ำระหว่ำง 80-1023 ตัวอย่ำง int val=0; // กำหนดค่ำตัวแปรสำหรับเก็บค่ำอะนำลอก val=knob(); // อ่ำนค่ำจำก knob เก็บค่ำในตัวแปร val glcd("%d",val); // นำค่ำแสดงที่ GLCD knob()
  57. 57. sw_ok() เป็นฟังก์ชั่นตรวจสอบสวิตช์ OK บน POP-XT ให้สถำนะจริงเมื่อกดสวิตช์ และเป็นเท็จเมื่อไม่กดสวิตช์ รูปแบบ unsigned char sw_ok() กำรคืนค่ำ 1 (เป็นจริง) เมื่อกดสวิตช์ 0 (เป็นเท็จ) เมื่อไม่กดสวิตช์ หมำยเหตุ กำรกดสวิตช์ทำให้ค่ำที่อ่ำนได้จำก Knob มีค่ำเป็น 0 ตัวอย่ำง if(sw_ok()) { beep(); } sw_ok()
  58. 58. เป็นฟังก์ชั่นวนตรวจสอบกำรกดสวิตช์ OK บนบอร์ด POP-XT ต้องรอ จนกระทั่ง SW1 ถูกปล่อยหลังจำกมีกำรกดสวิตช์ จึงจะผ่ำนฟังก์ชั่นนี้ไปทำงำน คำสั่งอื่นๆ ตัวอย่ำง ...... sw_ok_press(); // รอจนกระทั่งกดสวิตช์ OK ...... sw_ok_press()
  59. 59. กำรขับเคลื่อน POP-BOT XT
  60. 60. ชุดเฟืองขับมอเตอร์อัตรำทด 48:1
  61. 61. ภำยในชุดเฟืองขับมอเตอร์
  62. 62. BATTERY +- M BATTERY -+ M กำรกำหนดทิศทำงของมอเตอร์
  63. 63. ฟังก์ชั่น motor สำหรับขับมอเตอร์ไฟตรง รูปแบบ void motor(char ch,int pow) พำรำมิเตอร์ ch ใช้กำหนดช่องขับตั้งแต่ 1 ถึง 2 pow ใช้กำหนดขนำดกำลังขับ -100 ถึง 100 •กรณีขับด้วยกำลัง 1 ถึง 100 ไฟสถำนะประจำช่องติดเป็นสีเขียว •กรณีขับด้วยกำลัง -1 ถึง -100 ไฟสถำนะประจำช่องติดเป็นสีแดง(ทิศกำรหมุน ตรงข้ำมกับขับด้วยกำลังเป็นบวก) motor(1,100); มอเตอร์ 1 เดินหน้าความเร็ว 100 เปอร์เซ็นต์ motor(2,-50); มอเตอร์ 2 ถอยหลัง ความเร็ว 50 เปอร์เซ็นต์
  64. 64. ฟังก์ชั่น motor_stop สำหรับหยุดขับมอเตอร์ไฟตรงตำม ช่องที่กำหนด รูปแบบ void motor_stop(char ch) พำรำมิเตอร์ ch ใช้กำหนดช่องขับตั้งแต่ 1 ถึง 2 ในกรณีที่ต้อง กำรหยุดขับทุกช่องพร้อมกันสำมำรถกำหนดเป็น ALL กรณีหยุดมอเตอร์ 2 ตัวพร้อมกัน สำมำรถใช้คำสั่ง ao() แทนได้ motor_stop(1); มอเตอร์ 1 หยุด motor_stop(2); มอเตอร์ 2 หยุด ao(); มอเตอร์ 2 ตัวหยุดพร้อมกัน
  65. 65. void fd(int8_t speed) { motor(ALL,speed); } void bk(int8_t speed) { motor(ALL,-speed);} void sl(int8_t speed){ motor(1,-speed); motor(2,speed); } void sr(int8_t speed){ motor(1,speed); motor(2,-speed); } มอเตอร์ 2 ตัวพร้อมกัน
  66. 66. fd(Speed); เดินหน้า bk(Speed); ถอยหลัง sl(Speed); เลี้ยวซ้าย sr(Speed); เลี้ยวขวา Speed คือความเร็วหุ่นยนต์ 0-100 ao() ;หยุด
  67. 67. #include <popxt.h> void setup(){ fd(100); } void loop() { } กำรปรับแต่งเพื่อให้หุ่นยนต์เคลื่อนที่ตรง ทำกำรปรับขั้วมอเตอร์ช่อง 1 และ 2 ที่ทำให้ล้อทั้งสองด้ำนหมุนไปข้ำงหน้ำตำมรูป ให้ได้
  68. 68. ทดสอบขับเคลื่อนหุ่นยนต์เดินหน้ำและถอยหลังพื้นฐำน #include <popxt.h> void setup(){} void loop(){ fd(80); sleep(1000); bk(80); sleep(1000); } ForwardBackward.ino
  69. 69. หุ่นยนต์เดินวนเป็นรูปสี่เหลี่ยม #include <popxt.h> void setup(){ sw_ok_press(); } void loop(){ fd(80); sleep(900); tr(80); sleep(400); } Rectangle_running.ino
  70. 70. fd2(Speed1,speed2); เดินหน้า bk2(Speed1,speed2); ถอยหลัง Speed1 คือมอเตอร์ด้ำนซ้ำย Speed2 คือมอเตอร์ด้ำนขวำ
  71. 71. หุ่นยนต์เคลื่อนที่เป็นวงกลม CircleMove.ino
  72. 72. #include <popxt.h> void setup() { fd2(30,90); // Robot moves circle shape sw_ok_press(); // Wait for OK switch pressing ao(); // Robot stop } void loop(){} ตัวอย่ำงโค้ด หุ่นยนต์เคลื่อนที่เป็นวงกลม CircleMove.ino
  73. 73. กำรเคลื่อนที่หลำยทิศทำง MultipleDirectionMove.ino
  74. 74. แผงวงจรสวิตช์: ZX-SWITCH (Digital) คุณสมบัติทำงเทคนิค •ถ้ำสวิตช์ถูกกดจะอ่ำนค่ำข้อมูลได้เป็นลอจิก “0” พร้อมกับไฟแสดงสถำนะติดสว่ำง •ถ้ำสวิตช์ไม่ถูกกดจะอ่ำนค่ำข้อมูลได้เป็นลอจิก “1”
  75. 75. ฟังก์ชั่น in สำหรับอ่ำนค่ำสัญญำณแบบดิจิตอลจำกขำพอร์ตใดๆของ บอร์ดควบคุมหลัก รูปแบบ char in(char _bit); พำรำมิเตอร์ _bit ใช้กำหนดตำแหน่งหมำยเลขพอร์ตที่ ต้องกำรติดต่อ กำรคืนค่ำ ฟังก์ชั่นจะทำกำรคืนค่ำสัญญำณดิจิตอลของ ตำแหน่งขำพอร์ตที่อ่ำนซึ่งอำจมีค่ำเป็น 0 หรือ 1 เท่ำนั้น
  76. 76. ต่อ ZX-SWITCH เข้ำกับพอร์ต 22 และ 23 กดสวิตช์มีเสียงออกลำโพง
  77. 77. #include <popxt.h> void setup(){} void loop(){ if(in(22)==0){ sound(1000,300); glcdFillScreen(GLCD_RED); } if(in(23)==0){ sound(2000,300); glcdFillScreen(GLCD_YELLOW); } } ตัวอย่ำงโค้ด กดสวิตช์มีเสียงออกลำโพง TouchSwitchTest.ino
  78. 78. หุ่นยนต์รถบังคับ
  79. 79. #include <popxt.h> void setup(){ setTextSize(2); glcd(1,1,"Press OK"); glcd(2,1,"to Start"); sw_ok_press(); glcdClear(); glcd(1,1,"Let's go!"); } void loop(){ if(in(22)==0&&in(23)==0){ fd(60); } else if(in(22)==0){ sl(60); } else if(in(23)==0){ sr(60); } else {ao();} } RemoteSwitch.ino
  80. 80. เมื่อมีกำรติดตั้งเซนเซอร์ตรวจจับกำรชน
  81. 81. ต่อ ZX-SWITCH เข้ำกับพอร์ต 22 และ 23
  82. 82. #include <popxt.h> void setup(){ setTextSize(2); glcd(1,1,"Press OK"); glcd(2,1,"to Start"); sw_ok_press(); glcdClear(); glcd(1,1,"Let's go!"); } void loop(){ fd(70); if(in(22)==0){ bk(80); sleep(300); sr(80); sleep(200); } if(in(23)==0) { bk(80); sleep(400); sl(80); sleep(400); } } ObjectAvoider.ino
  83. 83. โมดูลวัดระยะทำงแบบอินฟรำเรด: GP2D120 คุณสมบัติหลัก •ทำงำนที่ไฟเลี้ยง 5 โวลต์ •วัดระยะทำงใช่วงตั้งแต่ 4 ถึง 32 เซนติเมตร
  84. 84. หลักกำรทำงำนของ GP2D120
  85. 85. ไลบรำรีและชุดคำสั่งที่แนะนำ ไลบรำรี gp2d120_lib.h เป็นไลบรำรีที่บรรจุชุดคำสั่งเรียกอ่ำนค่ำระยะทำงจำก โมดูล GP2D120 ก่อนเรียกใช้งำนฟังก์ชั่นที่บรรจุอยู่ภำยใน ผู้พัฒนำจะต้องทำกำรผนวกไฟล์ไลบรำรีไว้ที่ตอนต้นของ โปรแกรมภำษำ C ด้วยคำสั่ง #include <gp2d120_lib.h>
  86. 86. ฟังก์ชั่น getdist : อ่ำนค่ำระยะทำงในหน่วยเซนติเมตรจำกโมดูล GP2D120 ซึ่งค่ำที่มีควำมเชื่อถือได้จะมีค่ำตั้งแต่ 4 ถึง 32 เซนติเมตร รูปแบบ unsigned int getdist(char adc_ch) พำรำมิเตอร์ adc_ch ใช้กำหนดขำพอร์ตที่ต้องกำรในช่วง 1 ถึง 7 จำกพอร์ต A1 ถึง A7 ตำมลำดับ กำรคืนค่ำ ฟังก์ชั่นจะทำกำรคืนค่ำข้อมูลระยะทำงในหน่วย เซนติเมตร
  87. 87. ต่อ GP2D120 เข้ำกับพอร์ต 20/A2
  88. 88. #include <popxt.h> int raw,dist; void setup(){ setTextSize(2); glcdMode(1); glcd(1,1,"Press OK"); sw_ok_press(); glcdClear(); } void loop(){ raw=analog(2); dist=getdist(2); glcd(2,1,"RAW = %d ",raw); glcd(3,1,"Dist = %d cm",dist); sleep(100); } GP2D120_Reading.ino
  89. 89. แผงวงจรตรวจจับแสงสะท้อน: ZX-03
  90. 90. #include <popxt.h> void setup(){ setTextSize(3); glcdMode(3); glcd(1,1,"Press OK"); sw_ok_press(); } void loop(){ glcd(1,1,"L=%d ",analog(0)); glcd(3,1,"R=%d ",analog(1)); sleep(100); } SurfaceRead.ino โปรแกรมอ่ำนค่ำจำก ZX-03 แสดงที่ GLCD
  91. 91. อ่ำนค่ำพื้นผิวสีดำ อ่ำนค่ำพื้นผิวสีขำว อ่ำนค่ำผลลัพธ์จำกกำรสะท้อนแสง
  92. 92. ยกหุ่นยนต์ขึ้นจำกพื้นแล้วมีเสียงเตือน #include <popxt.h> void setup(){} void loop(){ if(analog(0)<20){ sound(2500,500); glcdFillScreen(GLCD_RED); } else{ glcdClear(); } } AlarmBOT.ino
  93. 93. หุ่นยนต์เดินมำหยุดที่เส้นสีดำ (แบบที่ 1) BlackLineDetect.ino #include <popxt.h> void setup(){ setTextSize(2); glcd(1,1,"Press OK"); sw_ok_press(); glcdClear(); glcd(1,1,"Moving..."); fd(60); while(analog(0)>500); ao(); } void loop(){}
  94. 94. หุ่นยนต์เดินมำหยุดที่เส้นสีดำด้วยกำรเบรก BlackLineDetect02.ino #include <popxt.h> void setup(){ setTextSize(2); glcd(1,1,"Press OK"); sw_ok_press(); glcdClear(); glcd(1,1,"Moving..."); fd(60); while(analog(0)>500); bk(100); sleep(100); ao(); } void loop(){}
  95. 95. สั่งให้หุ่นยนต์เดินหน้ำตรงต่อไป 1 if(L>500&&R>500){ fd(60); }
  96. 96. สั่งให้หุ่นยนต์เลี้ยวซ้ำยเพื่อกลับไปคร่อมเส้น2 if(L<500&&R>500){ sl(60);sleep(20); }
  97. 97. สั่งให้หุ่นยนต์เลี้ยวขวำเพื่อกลับไปคร่อมเส้น 3 if(L>500&&R<500){ sr(60);sleep(20); }
  98. 98. กำหนดกำรทำงำนตำมอิสระ 4 if(L<500&&R<500){ fd(60);sleep(200); }
  99. 99. เขียนโปรแกรมทดสอบกับสนำมขั้นพื้นฐำน
  100. 100. โปรแกรมเดินตำมเส้นสนำมแบบพื้นฐำน ....ino #include <popxt.h> int L,R void setup(){ setTextSize(2); glcd(1,1,"Press OK"); sw_ok_press();glcd(1,1,"Moving..."); } void loop(){ L=analog(0); R=analog(1); if(L>500&&R>500){ fd(60); } else if(L<500&&R>500){sl(60);sleep(20); } else if(L>500&&R<500){sr(60);sleep(20); } }
  101. 101. เมื่อเจอเส้นตัดส่งเสียงบี๊ป
  102. 102. โปรแกรมเดินตำมเส้นเมื่อเจอเส้นตัดส่งเสียงบี๊ป SimpleLineTracking.ino #include <popxt.h> int L,R void setup(){ setTextSize(2); glcd(1,1,"Press OK"); sw_ok_press();glcd(1,1,"Moving..."); } void loop(){ L=analog(0); R=analog(1); if(L<500&&R<500){fd(60);sound(2000,200);} else if(L>500&&R>500){ fd(60); } else if(L<500&&R>500){sl(60);sleep(20); } else if(L>500&&R<500){sr(60);sleep(20); } }
  103. 103. เมื่อเจอเส้นตัดเลี้ยวขวำ
  104. 104. โปรแกรมเดินตำมเส้นเมื่อเจอเส้นตัดเลี้ยวขวำ xxxxxx.ino #include <popxt.h> int L,R void setup(){ setTextSize(2); glcd(1,1,"Press OK"); sw_ok_press();glcd(1,1,"Moving..."); } void loop(){ L=analog(0); R=analog(1); if(L<500&&R<500){ fd(60);sound(2000,200); sr(60);sleep(400); } else if(L>500&&R>500){ fd(60); } else if(L<500&&R>500){sl(60);sleep(20); } else if(L>500&&R<500){sr(60);sleep(20); } }
  105. 105. กำรเลี้ยว 90 องศำพอดีเมื่อเจอเส้นตัด
  106. 106. โปรแกรมเดินตำมเส้นเมื่อเจอเส้นตัดเลี้ยวขวำ/ซ้ำย xxxxxx.ino void R90(){ fd(60); sound(1500,100); while(analog(1)>500){sr(60);} while(analog(1)<500){sr(60);} } void L90(){ fd(60); sound(1500,100); while(analog(0)>500){sl(60);} while(analog(0)<500){sl(60);} }
  107. 107. เมื่อเจอเส้นตัดเลี้ยวขวำ (แบบใหม่)
  108. 108. SimpleMaze.ino #include <popxt.h> int L,R; void R90(){ fd(60); sound(1500,100); while(analog(1)>500) { sr(60); } while(analog(1)<500) { sr(60); } } void setup(){ setTextSize(2); glcd(1,1,"Press OK"); sw_ok_press(); glcd(1,1,"Moving..."); } void loop(){ L=analog(0); R=analog(1); if (L<500&&R<500){R90();} else if(L>500&&R>500){fd(60);} else if(L<500&&R>500){sl(60); sleep(20);} else if(L>500&&R<500){sr(60); sleep(20);} }
  109. 109. เดินตำมเส้นทำงแยกที่ซับซ้อน
  110. 110. MultipleCrossingLineTrack.ino #include <popxt.h> int L,R,x=0; void setup(){ setTextSize(2);glcd(1,1,"Press OK"); sw_ok_press(); glcd(1,1,"Moving..."); } void loop(){ L=analog(0);R=analog(1); if (L<500&&R<500){ if(x==6){x=0;} x++; else if (x==3){R90();} else{L90();} } else if(L>500&&R>500){fd(60);} else if(L<500&&R>500){sl(60);sleep(20);} else if(L>500&&R<500){sr(60);sleep(20);} }
  111. 111. กำรใช้งำนเซอร์โวมอเตอร์
  112. 112. ฟังก์ชั่น servo : กำหนดตำแหน่งเซอร์โวมอเตอร์ โดยเมื่อใช้งำนกับรุ่น มำตรฐำนจะทำให้หมุนไปยังตำแหน่ง 0 ถึง 180 องศำได้และถ้ำใช้งำน กับรุ่นปรับแต่งจะทำให้หมุนในทิศทำงใดทิศทำงหนึ่งและมีผลต่อ อัตรำเร็วในกำรหมุน หรืออำจหยุดนิ่ง รูปแบบ void servo(unsigned char _ch ,unsigned int _pos); พำรำมิเตอร์ _ch ใช้กำหนดช่องขับที่ต่อใช้งำนมีค่ำตั้งแต่ 7 ถึง 8 _pos ใช้กำหนดตำแหน่งกำรขับของเซอร์โวมอเตอร์ มีค่ำ 0 ถึง 180 ถ้ำเป็นค่ำ -1 จะเป็นกำรยกเลิกกำรใช้งำน (ฟรี)
  113. 113. ปรับค่ำตัวต้ำนทำนเพื่อปรับตำแหน่งของเซอร์โวมอเตอร์
  114. 114. วิทยำกร ยำสิงห์ทอง โรงเรียนฝำงวิทยำยน อ.บ้ำนฝำง จ.ขอนแก่น สำนักงำนเขตพื้นที่กำรศึกษำ มัถยมศึกษำ เขต 25 Email : yasingthong1@gmail.com FB : wittayakorn yasingthong www.fangwit.ac.th
  115. 115. กฤษดำ ใจเย็น KRITSADA JAIYEN บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด 108 ซอยสุขุมวิท 101/2 ถ.สุขุมวิท แขวงบำงนำ เขตบำงนำ กรุงเทพฯ 10260 โทรศัพท์ 02-7477001-4 โทรสาร 02-7477005 Email : kritsada@inex.co.th kritsadaj@msn.com www.inex.co.th

×