Battle Ball Z Robot Present

Page 1

battle ballZ Robot


ตารางการอบรม ช่วงเช้าวันที่ 1 ถึง ก่อนเทีย่ งวันที่ 2

อบรมการใช้งานหุน่ ยนต์ ช่วงบ่ายของวันที่ 2 ถึง ช่วงเช้าวันที่ 3

แจ้งกติกาซ้อมสนามจริง ช่วงบ่ายวันที่ 3

แข่งขัน


รู้จกั บอร์ด ATX2 ภาษา C/C++ กับ ARDUINO

ขับเคลื่อนหุ่นยนต์ ระบบเก็บลูกบอล

Remote Control

ยิงลูกด้วยเซอร์โว

เซอร์โวมอเตอร์

การยิงลูกด้วยล้อ

q

การสร้างฟังก์ชนั ่

โจทย์แข่งขัน ฝึ กซ้อม

แข่งขัน


หลักการของระบบควบคุม

อินพุต

ประมวลผล

เอาต์พตุ


ชุดควบคุมของเรา

battle ballZ Robot

อินพุต ประมวลผล

เอาต์พตุ


IPST-SE POP-XT

POP-X2

ATX2


ประมวลภาพ ปี 2559


ประมวลภาพ ปี 2559


ประมวลภาพ ปี 2559





เปรียบเทียบ IPST-SE vs ATX2

Motor x 2 Servo x 4 I/O x 20

IPST-SE Motor x 6 Servo x 8 I/O x 18

ATX2


อะนาลอก

USB (Download)

แบตเตอรี่

อแดปเตอร์ เปิด/ปิด

ดิจิตอล /อะนาลอก

เซอร์โว I2C

มอเตอร์


สื่อสารอนุกรม 1

ลาโพงเปี ยโซ

ไฟเตือนแบต

จอสี 128x160 จุด

knob

ไฟเลีย้ ง CPU

RESET OK

ไฟเลีย้ ง SERVO


คอมไพเลอร์ OPEN SOURCE Edit+Compile+Download

Arduino

ATX2


ติดตัง้ โปรแกรม ARDUINO 1.7.11

1. เปิดโปรแกรมในแผ่น CDROM 2. ดับเบิ้ลคลิกไฟล์ Arduino 1.7.11_Setup161201.exe 3. ทาตามขัน้ ตอนติดตัง้ โปรแกรม


ขัน้ ตอนติดตัง้ โปรแกรม

เมื่อจบขัน้ ตอนนี้ จะมี หน้ าต่าง ติดตัง้ ไดรเวอร์ ห้ามกด Cancel

18


ขัน้ ตอนติดตัง้ ไดรเวอร์

เพื่อให้คอมพิวเตอร์ร้จู กั กับบอร์ด ATX2


เลือกบอร์ด ATX2


รูปแบบของโปรแกรม Arduino void setup(){ สาหรับกาหนดค่า เกิดขึน้ ครังเดี ้ ยว

} void loop(){ โปรแกรมหลักทางานต่อเนื่ อง

}

XIO() เพื่อเปิด I/O ทัง้ บอร์ด


รูปแบบของโปรแกรม Arduino START

ทางานใน Setup ทางานใน Loop


ตรวจสอบว่าเลือกบอร์ด ATX2 แล้ว


แบตเตอรี่และขัว้ ต่อ

สายเชื่อมต่อแบตเตอรี่

แดง บวก ดา ลบ

2 เซล 7.4V กระแส 1100mA จ่ายกระแส 30 เท่า ชาร์จ 5 เท่า แบตเตอรี่ Li-Po


รายละเอียดแบตเตอรี่ ลิเธียม-โพลิเมอร์ 2 เซล 7.4V กระแส 1100mAh จ่ายกระแส 30 เท่า ชาร์จ 5 เท่า 1 เซล 3.7V อนุกรมกัน 2 เซล = 7.4V เมื่อชาร์จเต็ม 8.4V จ่ายไฟ 1100 mA ต่อเนื่ องได้ประมาณ 1 ชัวโมง ่ จ่ายกระแสชัวขณะได้ ่ 1100 x 30 = 33000mA O_o! ชาร์จได้ 5 เท่า 1100x5 = 5500mA ใช้เวลาประมาณ 20 นาที


ข้อดีของแบตเตอรี่ Li-Po

ข้อดีของแบตเตอรี่แบบ Li-Po เมื่อนามาใช้กบั หุ่นยนต์ 1. มีน้าหนักเบาในเมื่อเทียบกับความจุ (mAh) 2. จ่ายกระแสได้มากกว่าความจุ ทาให้ห่นุ ยนต์มีความเร็วเพิ่มขึน้ ชัดเจน 3. แรงดันคงที่ หุ่นยนต์ทางานนิ่งตลอด จนหมดความจุ 4. มีหลายรูปแบบขนาด ทาให้ยึดติดตัง้ ได้ง่าย 5. คายประจุด้วยตัวเอง(Self Discharge) น้ อย 6. ชาร์จเต็มเร็วมาก


ข้อเสียของแบตเตอรี่ Li-Po

ข้อเสียของแบตเตอรี่แบบ Li-Po เมื่อนามาใช้กบั หุ่นยนต์ 1. มีราคาแพงเมื่อเทียบกับแบตเตอรี่ชนิดอื่นๆ 2. ต้องใช้เครื่องชาร์จที่มีความเฉพาะ ซึ่งบางแบบก็มีราคาแพง 3. ต้องดูแลเป็ นพิเศษ ถ้าเกิดการลัดวงจรจะเกิดความเสียหายใหญ่หลวง 4. ต้องคอยดูแลเรื่องความจุ ถ้าใกล้หมด จะเกิดการสูญเสียแรงดันและแบตเตอรี่เกิด ความเสียหาย ต้องมีการตรวจวัดความจุของแบตเตอรี่อยู่เสมอเมื่อใช้งาน 5. เมื่อไม่ใช้งานนานๆ ต้องไม่ให้แบต มีความจุดเต็มค้างไว้ ไม่งนั ้ แบตจะบวม


วัด Volt เพื่อป้ องกันแบตเสื่อม แสดงไฟและเตือน

วัด Volt อย่างเดียว วัดโวลต์และเตือน


เครื่องชาร์ตแบตกระแสสูง

ชาร์จถ่าน Ni-MH

ชาร์จแบต Li-Po ชาร์จแบตรถยนต์


ติดตัง้ แบตเตอรี่กบั หุ่นยนต์


สถานะแบตเตอรี่

ถ้า LED ติด ต้อง เปลี่ยนแบตทันที


ขัน้ ตอนการเชื่อมต่อ

2.ต่อสาย USB กับคอมพิวเตอร์ 3.ไฟ USB ติดสว่าง 1. ต่อแบตเตอรี่


เลือกพอร์ตอนุกรม


ทดสอบโปรแกรมแรก #include <ATX2.h> void setup(){ XIO(); glcd(0,0,"Hello World"); } void loop(){ }


ตรวจสอบไวยกรณ์ /อัพโหลด 1. คอมไพล์

2. แจ้งว่าคอมไพล์ผา่ น

3. อัพโหลดไปยัง ATX2


ผลลัพธ์ที่บอร์ด ATX2


คุณสมบัติของขอ GLCD


คาสังของ ่ GLCD glcd แสดงข้อความที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1) รูปแบบ void glcd(x,y,*p,...) พารามิเตอร์ x คือตาแหน่ งบรรทัดมีค่าตัง้ แต่ 0-15 y คือตาแหน่ งตัวอักษรมีค่าตัง้ แต่ 0-24 *p คือข้อความที่ต้องการนามาแสดง ค่าพิเศษ %d แสดงตัวเลขจานวนเต็มในช่วง -32,768 ถึง 32,767 %h แสดงตัวเลขฐานสิบหก %b แสดงตัวเลขฐานสอง %l แสดงตัวเลขจานวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647 %f แสดงผลตัวเลขจานวนจริง (แสดงทศนิยม 3 หลัก)


คาสังของ ่ glcdMode (หมุนหน้ าจอ)

ปกติเป็ น Mode 0 ตัวอย่าง : glcdMode(1);


ปรับขนาดตัวอักษร setTextSize() ขนาดตัวอักษรเป็ น 4 เท่าขนาดปกติ

ตัวอย่าง : setTextSize(4);


ค่าสีตวั อักษร ตัวอย่าง #include <ATX2.h> void setup(){ setTextColor(GLCD_WHITE); glcd(0,0,"Hello"); setTextColor(GLCD_GREEN); glcd(1,0,"World"); } void loop(){}

setTextColor(COLOR) KRIT

GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, GLCD_BLACK, GLCD_WHITE, GLCD_CYAN, GLCD_MAGENTA GLCD_ORANGE GLCD_LIME GLCD_VIOLET GLCD_PINK GLCD_DOLLAR GLCD_SKY GLCD_BROWN GLCD_DARKGREEN GLCD_NAVY GLCD_GRAY GLCD_DARKGRAY


ค่าสีพนื้ หลังตัวอักษร ตัวอย่าง #include <ATX2.h> void setup(){ setTextBackgroundColor(GLCD_RED); setTextColor(GLCD_YELLOW); glcd(0,0,"Hello World"); } void loop(){}

setTextBackgroundColor(COLOR)


แสดงรูปทรงเรขาคณิต glcdRect(x,y,width,height,color) glcdFillRect(x,y,width,height,color) glcdCircle(x,y,radius,color) glcdFillCircle(x,y,radius,color)

glcdLine(x1,y1,x2,y2,color) x y

ตำแหน่ งแนวนอน ตำแหน่ งแนวตัง้

ควำมกว้ำง height ควำมสูง redius รัศมี color สี width


บททดสอบ 1 สร้ำงวงกลมสีแดงอยู่กึ่งกลำงจอภำพ รัศมีเต็มจอพอดี


บททดสอบ 2

ลำกเส้น

4

เส้นโดยมีจดุ ตัดอยู่กลำงจอภำพพอดี


บททดสอบ 3

สร้ำงสี่เหลี่ยมซ้อนกันดังรูป


คาสังของ ่ GLCD glcd แสดงข้อความที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1) รูปแบบ void glcd(x,y,*p,...) พารามิเตอร์ x คือตาแหน่ งบรรทัดมีค่าตัง้ แต่ 0-15 y คือตาแหน่ งตัวอักษรมีค่าตัง้ แต่ 0-24 *p คือข้อความที่ต้องการนามาแสดง ค่าพิเศษ %d แสดงตัวเลขจานวนเต็มในช่วง -32,768 ถึง 32,767 %h แสดงตัวเลขฐานสิบหก %b แสดงตัวเลขฐานสอง %l แสดงตัวเลขจานวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647 %f แสดงผลตัวเลขจานวนจริง (แสดงทศนิยม 3 หลัก)


การแสดงผลค่าตัวเลข glcd(0,0,"%d",100);


ค่าตัวแปรที่ใช้งานบ่อยๆ byte word boolean int char float

0-255 (unsigned char) 0-65535 (unsigned int) 0-1 True False -32768 ถึง 32767 -128 ถึง 127 -3.4 x 1038 ถึง 3.4 x 1038

หาข้อมูลเพิ่มเติมจาก reference


ATX2 กับ ลาโพงเปี ยโซ • ใช้ลาโพงเปี ยโซ มีอิมพีแดนซ์ 32W • มีค่าความถี่ย่าน 300Hz ถึง 3000 Hz beep(); กำเนิดเสียงควำมถี่ 500 Hz นำน 0.1 วินำที

sound(freq,time); freq ความถี่เสียง time เวลาทีเ่ สียงดัง


ตัวอย่าง : สร้างเสียงติ๊ดทุกๆ 1 วินาที #include <ATX2.h> void setup(){ } void loop(){ beep(); delay(1000); }


ตัวอย่าง : สร้างเสียงความถี่ 1200 Hz นาน 0.5 วินาที #include <ATX2.h> void setup(){} void loop(){ sound(1200,500); sleep(1000); }


knob() : ตัวต้านทานปรับค่าได้

หมุนเพื่อปรับค่า 0-1000


การใช้งานคาสัง่ knob() knob() ใช้อ่านค่าตัวต้านทานปรับค่าได้บน ATX2 ค่าอยู่ในช่วง 0-1000 รูปแบบ knob(); การคืนค่า

ค่าที่อ่านได้จาก knob มีค่าระหว่าง 0-1000 ตัวอย่าง

glcd(1,1,"%d",knob());


การใช้งานคาสัง่ knob(x) ปรับค่าการหมุนจาก 0 ถึงช่วงที่ต้องการ รูปแบบ

knob(x);

x คือค่า Scale หรือช่วงที่ต้องการ ตัวอย่าง

glcd(1,1,"%d",knob(180));

หน้ าจอจะแสดงค่า 0-180 เพราะตัง้ ค่าสเกลเป็ น 180


การใช้งานคาสัง่ knob(x,y) ปรับค่าการหมุนจาก เริ่มต้น X ถึงท้าย Y รูปแบบ

knob(x,y);

x คือค่า Scale ช่วงเริ่มต้น y คือค่า Scale ช่วงท้าย ตัวอย่าง

glcd(1,1,"%d",knob(10,90));

หน้ าจอจะแสดงค่า 10-90 ตามการหมุน knob()


การแสดงผลค่า knob() ที่จอ GLCD glcd(0,0,"%d",knob());


คาสัง่ sw_OK()

กดเป็ นจริง ไม่กดเป็ นเท็จ ตัวอย่าง #include <ATX2.h> void setup(){} void loop(){ if(sw_OK()){ sound(1200,100); } }

สวิตช์ OK


คาสัง่ sw_OK_press() รอจนกระทั ่งกดสวิตช์ OK แล้วปล่อยสวิตช์ จึงจะทางาน

ตัวอย่าง #include <ATX2.h> void setup(){} void loop(){ sw_OK_press(); beep(); }

สวิตช์ OK


คาสัง่ OK () 1. แสดงข้อความที่หน้ าจอ ิ ตช์ OK 2. รอจนกระทังกดสว ่ 3. ทางานคาสังถั ่ ดไป

ตัวอย่าง #include <ATX2.h> void setup(){ OK(); } void loop(){ }


คาสังขั ่ บมอเตอร์

motor (CH,POW)

คือมอเตอร์ 1 ถึง 6 12 สำหรับมอเตอร์ 1 และ 2 34 สำหรับมอเตอร์ 3 และ 4 56 สำหรับมอเตอร์ 5 และ 6 100,ALL,ALL4 สำหรับมอเตอร์ 1 ถึง 4 106 หรือ ALL6 สำหรับมอเตอร์ทงั ้ 6 ตัว

CH

1-6

POW

ควำมเร็ว -100 ถึง ค่ำบวก เดินหน้ ำ ค่ำลบ ถอยหลัง

100


ตัวอย่าง : motor()

motor (CH,POW)

motor(1,60); ให้มอเตอร์ 1 ไปหน้ ำควำมเร็ว 60% motor(12,-80); ให้มอเตอร์ 1 และ 2 ถอยหลังควำมเร็ว 80% motor(ALL,100); ให้มอเตอร์ 1-4 ไปด้ำนหน้ ำด้วยควำมเร็ว 100%


คาสังหยุ ่ ดมอเตอร์ CH

motor_stop(CH)

คือมอเตอร์ 1 ถึง 6 12 สำหรับมอเตอร์ 1 และ 2 34 สำหรับมอเตอร์ 3 และ 4 56 สำหรับมอเตอร์ 5 และ 6 100,ALL,ALL4 สำหรับมอเตอร์ 1 ถึง 4 106 หรือ ALL6 สำหรับมอเตอร์ทงั ้ 6 ตัว 1-6

คาสัง่ ao() เท่ากับ motor_stop(12); มอเตอร์ 1 และ 2 หยุด คาสัง่ AO() เท่ากับ motor_stop(ALL); มอเตอร์ 1-4 หยุด


ฟังก์ชนขั ั ่ บเคลื่อนหุ่นยนต์ กรณี ขบั เคลื่อน 2 ล้อ เดินหน้ า motor1

motor2

เลี้ยวซ้าย motor1

motor2

เลี้ยวขวา motor1

motor2

fd(speed);

ถอยหลัง motor1

motor2

bk(speed);

sl(speed);

sr(speed);

เลี้ยวด้านเดียว

หยุดหุ่นยนต์

tl(speed); tr(speed);

ao(); speed = 0-100


ฟังก์ช ั่นขับเคลื่อนหุ่นยนต์ กรณี ขบั เคลื่อน 4 ล้อ เดินหน้ า เลี้ยวขวา เลี้ยวซ้าย motor1

motor3

motor1

motor2

motor3

motor1

motor3

motor4 motor2

motor4

motor2

motor4

FD(speed);

ถอยหลัง motor1 motor2

SL(speed);

SR(speed);

motor3 motor4

หยุดหุ่นยนต์ AO();

BK(speed);

speed = 0-100


ตาแหน่ งเสียบสายมอเตอร์

motor1

motor3

motor2

motor4


ตาแหน่ งเสียบสายมอเตอร์

motor1 motor2

motor3

หมุนมอเตอร์เดินหน้ าไฟติดสีเขียว

motor4

หมุนมอเตอร์ถอยหลังไฟติดแดง


ทดสอบขับเคลื่อน เดินหน้ า 1 วินาที ถอยหลัง 1 วินาที #include <ATX2.h> void setup(){OK();} void loop(){ FD(50); delay(1000); BK(50); delay(1000); }


ทดสอบขับเคลื่อน

ทดสอบเคลื่อนที่ ผ่านปุ่ มกด

#include <ATX2.h> void setup(){ } void loop(){ OK(); FD(50); delay(500);AO(); OK(); BK(50); delay(500);AO(); OK(); SL(50); delay(500);AO(); OK(); SR(50); delay(500);AO(); }


ทดสอบขับเคลื่อน เดินวนเป็ นรูปสี่เหลี่ยม #include <ATX2.h> void setup(){ OK(); } void loop(){ FD(50); delay(1000); SR(50); delay(700); }


ปรับหุ่นยนต์ให้เคลื่อนที่ตรง FD2(Speed1,speed2); เดินหน้ า BK2(Speed1,speed2); ถอยหลัง Speed1 คือมอเตอร์ 1 และ 2 Speed2 คือมอเตอร์ 3 และ 4 motor2

motor4

motor1

motor3


มอเตอร์สาหรับเลี้ยงบอลและยิงบอล เก็บลูก motor(56,70);

ส่งลูก motor(56,-70);

ต่อสายมอเตอร์


โปรแกรมทดสอบ เก็บลูก / ส่งลูก #include <ATX2.h> void setup(){ XIO(); setTextSize(2); glcdMode(1); } void loop(){ sw_OK_press(); motor(56,70); glcd(1,0,"Keep"); sw_OK_press(); motor(56,0); glcd(1,0,"stop"); sw_OK_press(); motor(56,-70); glcd(1,0,"Push"); sw_OK_press(); motor(56,0); glcd(1,0,"stop"); }


เซอร์โวมอเตอร์มาตรฐาน

แกนหมุน 180 องศำ

GND (-) ไฟเลีย้ ง (+) สัญญำณ (S)


เซอร์โวรุ่น RDS3115 แรงบิด 15 kg.cm


เซอร์โวรุ่น RDS3115 คุณสมบัติ • ใช้ชุดเฟื องทัง้ หมดเป็ นเฟื องโลหะ • ขณะทำงำน ควบคุมได้ 270 องศำ • ขณะไม่ทำงำน หมุน 360 องศำ

• ควำมเร็ว 0.16 วินำที/60 องศำ ทีแ่ รงดัน 6 V • แรงบิด 15 กิโลกรัมเซนติเมตร ทีแ่ รงดัน 6 V • ทำงำนทีแ่ รงดัน 4.8V ถึง 8.4V


ฟังก์ชนขั ั ่ บเซอร์โวมอเตอร์ servo(CH,POS); CH ช่องที่ใช้ขบั = 1 ถึง 8 POS ตาแหน่ งองศาเซอร์โว = 0-180 ,-1

ค่า -1 หมายถึงหยุดจ่ายสัญญาณให้เซอร์โว เซอร์โวจะไม่ลอ็ กแกน


เซอร์โวอยู่ที่ตาแหน่ ง 0 องศา


เซอร์โวอยู่ที่ตาแหน่ ง 160 องศา


เซอร์โวอยู่ที่ตาแหน่ ง 180 องศา


เซอร์โวเคลื่อนที่กลับที่ 0 องศา

สปริงเลื่อนเข้าออกทาให้เกิดเสียงดัง


โปรแกรมทดสอบ SERVO1 #include <ATX2.h> int x; void setup(){ XIO();; } void loop(){ x=knob(180); servo(1,x); glcd(1,1,"%d ",x); }

ค่า 0 ยืดออกสุด

หมุน knob ทดสอบ


โปรแกรมทดสอบ SERVO1 #include <ATX2.h> int x; void setup(){ OK(); } void loop(){ x=knob(180); servo(1,x); glcd(1,1,"%d ",x); }

ค่า 155 เตรียมยิง

หมุน knob ทดสอบ


โปรแกรมทดสอบ SERVO1 #include <ATX2.h> int x; void setup(){ OK(); } void loop(){ x=knob(180); servo(1,x); glcd(1,1,"%d ",x); }

ค่า 180 ยิงออก

หมุน knob ทดสอบ


สร้างฟังก์ชนั ่ Reload()

เพื่อพร้อมยิง

ให้ SERVO มาที่ 0 องศา หน่ วงเวลา ดึง SERVO ไว้ที่ 155 องศา


รูปแบบการสร้างฟั งก์ชนั ่ ชื่อฟั งก์ชนั ่

ส่งค่าไปยังฟั งก์ชนั ่

void Reload(int x){ ชุดคาสัง่ y=x+2; ชุดคาสังในฟั ่ งก์ชนั ่ . }

การใช้งานฟั งก์ชนั ่

Reload(200); 86


สร้างฟังก์ชนั ่ Reload()

เพื่อพร้อมยิง

void Reload(){ servo(1,0);delay(1000); servo(1,160);delay(500); }


กดปุ่ ม OK โหลด กด OK อีกครัง้ ยิง #include <ATX2.h> void setup(){ XIO(); } void loop(){ sw_OK_press(); Reload(); glcd(1,0,"Reload"); sw_OK_press(); servo(1,180); glcd(1,0,"Shoot "); } void Reload(){ servo(1,0);delay(2000); servo(1,155);delay(500); }


รีโมตคอนโทรล Wireless-X

โมดูลตัวส่ง

โมดูลตัวรับ

WirelessX ออกแบบมาเพื่อส่งสัญญาณจากปุ่ มกดจานวน 9 ปุ่ มด้วยความถี่ย่าน 2.4GHz ไปยัง ภาครับ โดยภาครับจะแปลงค่าให้เป็ นการสื่อสารอนุกรม 9600 bps เพื่อให้สามารถอ่านค่าได้อย่าง ง่ายๆ ผ่านไมโครคอนโทรลเลอร์ท ั ่วๆ ไป


คุณสมบัติของ WirelessX

• ทางานรับส่งข้อมูลที่ความถี่ 2.4 GHz • ระยะรับส่งข้อมูล 10-30 เมตร ขึน้ อยู่กบั สภาวะแวดล้อม • ทางานได้มากกว่า 100 ตัวพร้อมกัน โดยไม่เกิดสัญญาณรบกวน


คุณสมบัติของ ตัวส่ง

• • • • • • •

ใช้แบตเตอรี่แบบลิเธี่ยมไอออนขนาด1 เซล 3.7V พร้อมชุดชาร์จในตัว มีขวั ้ ต่อMini USB สาหรับชาร์จแบตเตอรี่ มี LED แสดงสถานะการชาร์จแบตเตอรี่ เมื่อเต็มไฟจะดับลง มี LED แสดงสถานะแบตเตอรี่อ่อน จะติดกะพริบเมื่อแบตอ่อน มีสวิตช์เปิด/ปิดพร้อม LED แสดงสถานะการทางาน มีสวิตช์กด 9 ตัว กดได้พร้อมกันโดยอิสระ 8 ตัว สร้างรูปแบบการควบคุมได้หลากหลาย ขนาด 13.5 x 7.5 เซนติเมตร


คุณสมบัติของ ตัวรับ

• • • • •

ขนาดเล็กเพียง 2.4x4.8 เซนติเมตร ใช้ไฟเลี้ยง 5V จากบอร์ดควบคุมได้โดยตรง มีขวั ้ ต่อ JST เชื่อมต่อกับบอร์ดควบคุมของ inex ได้ มี LED แสดงสถานะเมื่อเชื่อมต่อกับตัวส่ง ให้เอาต์พตุ เป็ นสัญญาณอนุกรม RS-232 ที่บอดเรต 9600


บิตข้อมูลเมือ่ อ่านค่าออกมา


ติดตัง้ และต่อสาย

ต่อสายเข้าที่ขา RxD1

ยึดให้ไกลสัญญาณรบกวน


ไลบรารี่ uart1


ทดสอบอ่านค่า #include <ATX2.h> int x; void setup(){ glcdMode(3); setTextSize(2); pinMode(2,INPUT_PULLUP); } void loop(){ while(uart1_ready()>0){ // read last x x=uart1_read(); } glcd(1,0,"DEC=%d ",x); glcd(2,0,"HEX=%h ",x); glcd(3,0,"BIN=%b ",x); }


ทดสอบขับเคลื่อนหุ่นยนต์ด้วย 4 ปุ่ มขวา #include <ATX2.h> byte x; void setup(){ pinMode(2,INPUT_PULLUP); } void loop(){ while(uart1_ready()>0){ x=uart1_read(); } if(x==0x01) { BK(60);} else if(x==0x02){ SR(60);} else if(x==0x04){ SL(60);} else if(x==0x08){ FD(60);} else{ AO(); } }


switch case switch (var) { case 1: // ทางานเมื่อค่าของตัวแปรเท่ากับ 1 break; case 2: //ทางานเมื่อค่าของตัวแปรเท่ากับ 2 break; default: // ถ้าหากค่าของตัวแปรไม่ใช่ case ที่กล่าวมา ทาส่วนนี้ }

var ตัวแปรที่ต้องการทดสอบว่าตรงกั บเงื่อนไขใด default ถ้าไม่ตรงกับเงื่อนไขใดๆ เลยให้ทาคาสังต่ ่ อท้ายนี้ break เขียนต่อท้าย case ต่างๆ เพื่อไม่ต้องทาเงื่อนไขอื่น ๆ ต่อ


ทดสอบขับเคลื่อนหุ่นยนต์ด้วย SWITCH CASE #include <ATX2.h> byte x; void setup(){ pinMode(2,INPUT_PULLUP); } void loop(){ while(uart1_ready()>0){ x=uart1_read(); } switch (x){ case 0x01: BK(60);break; case 0x02: SR(60);break; case 0x04: SL(60);break; case 0x08: FD(60);break; default: AO(); } }


เพิ่มปุ่ ม Turbo

#include <ATX2.h> byte x; void setup(){ pinMode(2,INPUT_PULLUP); } void loop(){ while(uart1_ready()>0){ x=uart1_read(); } switch (x){ case 0x01: BK(60);break; case 0x02: SR(60);break; case 0x04: SL(60);break; case 0x08: FD(60);break; // Turbo Mode case 0x81: BK(100);break; case 0x82: SR(100);break; case 0x84: SL(100);break; case 0x88: FD(100);break; default: AO(); } }


สังงาน ่ servo

void Reload(){ servo(1,0);delay(1000); servo(1,160);delay(500); }

#include <ATX2.h> byte x; void setup(){ XIO(); pinMode(2,INPUT_PULLUP); } void loop(){ while(uart1_ready()>0){ x=uart1_read(); } switch (x){ case 0x01: BK(60);break; case 0x02: SR(60);break; case 0x04: SL(60);break; case 0x08: FD(60);break; // Turbo Mode case 0x81: BK(100);break; case 0x82: SR(100);break; case 0x84: SL(100);break; case 0x88: FD(100);break; // Servo case 0x40: Reload();break; case 0x20: servo(1,180);break; default: motor_stop(ALL4); } }


KRITSADA JAIYEN กฤษดา ใจเย็น บริษทั อินโนเวตีฟ เอ็กเพอริเมนต์ จากัด 108 ซอยสุขมุ วิท 101/2 ถ.สุขมุ วิท แขวงบางนา เขตบางนา กรุงเทพฯ 10260 โทรศัพท์ 02-7477001-4 โทรสำร 02-7477005 www.inex.co.th doc.inex.co.th facebook.com/innovativeexperiment

kritsada@inex.co.th


Turn static files into dynamic content formats.

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