ibot_practice_

8
1 เปาหมาย เขียนโปรแกรมควบคุมใหหุนยนต iBOT เคลื่อนที่ไปขางหนา แลวถอยหลังตรงๆ สลับกันไปมา #include <ipst.h> // ผนวกไฟลไลบรารีหลัก void setup() { sw_OK_press(); // กดสวิตช OK เริ่มตนทํางาน } void loop() { motor(1,40); motor(2,40); // หุนยนตเคลื่อนที่ตรงไปขางหนา กําลัง 40% sleep(1000); // เปนเวลา 1 วินาที motor(1,-40); motor(2,-40); // หุนยนตถอยหลังดวยกําลัง 40% sleep(1000); // เปนเวลา 1 วินาที } เปดโปรแกรม Wiring 1.0 SE แลวเขียนโปรแกรม บันทึกชื่อเปน iBOT_ForwardBackword.pde จากนั้น ทําการอัปโหลดโปรแกรมไปยังหุนยนต iBOT แลวถอดสาย miniB-USB ออก นําหุนยนตมาวางที่พื้น กดสวิตช OK บนแผงวงจร IPST-SE ของหุนยนต iBOT สังเกตการทํางานของหุนยนต หากหุนยนตเคลื่อนที่กลับทิศทาง ใหทําการกลับขั้วตอของสายมอเตอรทีแผงวงจร IPST-SE หากพบวา หุนยนตเคลื่อนที่ไมตรง ใหทดลองแกไขกําลังขับในฟงกชั่น motor ของมอเตอรแตละตัว อาจ ตองปรับใหมอเตอร 2 ตัวทํางานดวยกําลังที่ตางกันเล็กนอย เพื่อทําใหหุนยนตเคลื่อนที่ไดตรงมากที่สุด

Upload: innovative-experiment-coltd

Post on 07-Mar-2016

212 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: iBOT_Practice_

1

เป าหมายเขี ยนโปรแกรมควบคุ มให หุ นยนต iBOT เคลื่ อนที่ ไปข างหน า แล วถอยหลั งตรงๆ สลั บกั นไปมา

#include <ipst.h> // ผนวกไฟล ไลบรารี หลั ก

void setup(){

sw_OK_press(); // กดสวิ ตช OK เริ่ มต นทํ างาน}

void loop(){

motor(1,40); motor(2,40);// หุ นยนต เคลื่ อนที่ ตรงไปข างหน า กํ าลั ง 40%

sleep(1000);// เป นเวลา 1 วิ นาที

motor(1,-40); motor(2,-40);// หุ นยนต ถอยหลั งด วยกํ าลั ง 40%

sleep(1000);// เป นเวลา 1 วิ นาที

}

เป ดโปรแกรม Wiring 1.0 SE แล วเขี ยนโปรแกรม บั นทึ กชื่ อเป น iBOT_ForwardBackword.pde จากน้ั นทํ าการอั ปโหลดโปรแกรมไปยั งหุ นยนต iBOT แล วถอดสาย miniB-USB ออก นํ าหุ นยนต มาวางที่ พื้ น กดสวิ ตช OK บนแผงวงจร IPST-SE ของหุ นยนต iBOT

สั งเกตการทํ างานของหุ นยนต หากหุ นยนต เคลื่ อนที่ กลั บทิ ศทาง ให ทํ าการกลั บขั้ วต อของสายมอเตอร ที่ แผงวงจร IPST-SE

หากพบว า หุ นยนต เคลื่ อนที่ ไม ตรง ให ทดลองแก ไขกํ าลั งขั บในฟ งก ชั่ น motor ของมอเตอร แต ละตั ว อาจต องปรั บให มอเตอร 2 ตั วทํ างานด วยกํ าลั งที่ ต างกั นเล็ กน อย เพื่ อทํ าให หุ นยนต เคลื่ อนที่ ได ตรงมากที่ สุ ด

Page 2: iBOT_Practice_

2

เป าหมายเขี ยนโปรแกรมควบคุ มให หุ นยนต iBOT เคลื่ อนที่ ตามเวลาที่ กํ าหนด

เป ดโปรแกรม Wiring 1.0 SE แล วเขี ยนโปรแกรม บั นทึ กชื่ อเป น iBOT_ForwardTimer.pde จากน้ั นทํ าการอั ปโหลดโปรแกรมไปยั งหุ นยนต iBOT แล วถอดสาย miniB-USB ออก นํ าหุ นยนต มาวางที่ พื้ น กดสวิ ตช OKบนแผงวงจร IPST-SE ของหุ นยนต iBOT

สั งเกตการทํ างานของหุ นยนต

หุ นยนต iBOT เคลื่ อนที่ ตรงไปข างหน านาน 4 วิ นาที แล วหยุ ด

หากพบว า หุ นยนต เคลื่ อนที่ ไม ตรง ให ทดลองแก ไขกํ าลั งขั บในฟ งก ชั่ น motor ของมอเตอร แต ละตั ว อาจต องปรั บให มอเตอร 2 ตั วทํ างานด วยกํ าลั งที่ ต างกั นเล็ กน อย เพื่ อทํ าให หุ นยนต เคลื่ อนที่ ได ตรงมากที่ สุ ด

ทดลองแก ไขค าเวลา และกํ าลั งขั บมอเตอร แล วสั งเกตว า หุ นยนต จะเคลื่ อนที่ ได ระยะทางแตกต างกั นหรื อไม อย างไร

ทดลองแก ไขโปรแกรมให หุ นยนต iBOT เคลื่ อนที่ ถอยหลั งตามค าเวลาที่ กํ าหนด

ทดลองแก ไขโปรแกรมให หุ นยนต iBOT เคลื่ อนที่ ไปข างหน าและถอยหลั งตามเวลาที่ กํ าหนด

#include <ipst.h> // ผนวกไฟล ไลบรารี หลั กvoid setup(){

glcd(1,1,"Press OK"); // แสดงข อความsw_OK_press(); // กดสวิ ตช OKmotor(1,40); // หุ นยนต เคลื่ อนที่ motor(2,40); // ตรงไปข างหน าsleep(4000); // เป นเวลา 4 วิ นาที ao(); // สั่ งให หุ นยนต หยุ ด

}void loop(){}

Page 3: iBOT_Practice_

3

เป าหมายเขี ยนโปรแกรมภาษา C/C++ เพื่ อสร างฟ งก ชั่ นการเคลื่ อนที่ ของหุ นยนต iBOT ในแบบต างๆ

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SDA

8SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2R

xD1

UART1

SE

RVO

RESE

T20

19

18

17

16

KN

OB

OK

SW1

ON

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SDA

8SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2RxD1

UART1

SE

RVO

RESE

T20

19

18

17

16

KN

OBO

K

SW1

ON

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SD

A8

SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2RxD

1

UAR

T1

SERVO

RESET

20

19

18

17

16

KN

OB

OK

SW

1

ON

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SD

A8

SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2RxD

1

UAR

T1

SERVO

RESET

20

19

18

17

16

KN

OB

OK

SW

1

ON

Page 4: iBOT_Practice_

4

#include <ipst.h> // ผนวกไฟล ไลบรารี หลั กvoid fd(int speedL,int speedR) // ฟ งก ชั่ นเดิ นหน า{

motor(1,speedL);motor(2,speedR);

}void bk(int speedL,int speedR) // ฟ งก ชั่ นถอยหลั ง{

motor(1,-speedL);motor(2,-speedR);

}void tl(int speedL,int speedR) // ฟ งก ชั่ นเลี้ ยวซ าย{

motor(1,-speedL);motor(2,speedR);

}void tr(int speedL,int speedR) // ฟ งก ชั่ นเลี้ ยวขวา{

motor(1,speedL);motor(2,-speedR);

}void setup(){

glcd(1,1,"Press OK"); // แสดงข อความ glcdsw_OK_press(); // กดสวิ ตช OK เริ่ มต นทํ างาน

}void loop(){

fd(40,40);sleep(1000);tl(40,40);sleep(250);ao();sleep(500);bk(40,40);sleep(1000);tr(40,40);sleep(250);ao();sleep(500);

}

เป ดโปรแกรม Wiring 1.0 SE แล วเขี ยนโปรแกรม บั นทึ กชื่ อเป น iBOT_MovementFunction.pde จากน้ั นทํ าการอั ปโหลดโปรแกรมไปยั งหุ นยนต iBOT แล วถอดสาย miniB-USB ออก นํ าหุ นยนต มาวางที่ พื้ น กดสวิ ตช OK บนแผงวงจร IPST-SE ของหุ นยนต iBOT สั งเกตการทํ างานของหุ นยนต

Page 5: iBOT_Practice_

5

เป าหมายเข ียนโปรแกรมภาษา C/C++ อ านค าจากสวิ ตช เพื่ อนํ าค ามาควบคุ มการเคลื่ อนที่ ของหุ นยนต iBOT

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SD

A8

SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2RxD

1

UART1

SERV

ORESET

20

19

18

17

16

KN

OB

OK

SW

1

ON

ZX-Switch01

+ S

+

S

D

ZX-Switch01

+ S

+

S

D

ต อแผงวงจรสวิ ตช ZX-Switch01 ตั วหน่ึ งเข ากั บจุ ดต อ16 กํ าหนดเป นสวิ ตช ขวา และต อแผงวงจร ZX-Switch01อี กตั วหน่ึ งเข ากั บจุ ดต อ 17 กํ าหนดเป นสวิ ตช ซ าย

เป ดโปรแกรม Wiring 1.0 SE แล วเขี ยนโปรแกรมบั นทึ กชื่ อเป น iBOT_RemoteControl.pde อั ปโหลดโปรแกรมไปยั งหุ นยนต iBOT แล วถอดสาย miniB-USBนํ าหุ นยนต มาวางที ่พื้ น กดสวิ ตช OK ของหุ นยนต iBOTกดสวิ ตช ทั้ ง 2 ตั ว แล วสั งเกตการทํ างานของหุ นยนต

จะพบว า เมื่ อกดสวิ ตช พร อมกั น 2 ตั ว หุ นยนต จะเคลื่ อนที่ ตรงไปข างหน า หากกดสวิ ตช ซ ายตั วเดี ยว(จุ ดต อ 17) หุ นยนต จะหม ุนตั วไปทางซ าย หากกดสวิ ตช ขวา (จุ ดต อ 16) ตั วเดี ยว หุ นยนต จะหมุ นตั วไปทางขวาหากไม กดสวิ ตช หุ นยนต ไม เคลื่ อนที่

#include <ipst.h> // ผนวกไฟล ไลบราร ีvoid fd(int speedL,int speedR) // ฟ งก ชั ่นเดิ นหน า{

motor(1,speedL);motor(2,speedR);

}void bk(int speedL,int speedR) // ฟ งก ชั่ นถอยหลั ง{

motor(1,-speedL);motor(2,-speedR);

}void tl(int speedL,int speedR) // ฟ งก ชั่ นเลี้ ยวซ าย{

motor(1,-speedL);motor(2,speedR);

}void tr(int speedL,int speedR) // ฟ งก ชั่ นเลี้ ยวขวา{

motor(1,speedL);motor(2,-speedR);

}void setup(){

glcd(1,1,"Press OK"); // แสดงข อความsw_OK_press(); // กดสวิ ตช OK เริ่ มทํ างาน

}void loop(){

if (in(17)==0&&in(16)==0) // กดสวิ ตช สองตั ว{

fd(40,40);}else if(in(17)==0) // กดสวิ ตช ซ าย{

tl(40,40);}else if(in(16)==0) // กดสวิ ตช ขวา{

tr(40,40);}else{

ao(); // ไม กดสวิ ตช มอเตอร หยุ ด}

}

Page 6: iBOT_Practice_

6

เป าหมายเขี ยนโปรแกรมภาษา C/C++ เพื่ อกํ าหนดให หุ นยนต iBOT อ านค าจากตั วตรวจจั บที่ จุ ดต อ A0 ถึ ง A6

#include <ipst.h> // ผนวกไฟล ไลบรารี หลั กvoid setup(){

setTextSize(2); // กํ าหนดขนาดตั วอั กษร 2 เท า}void loop(){

glcd(0,0,"L=%d ",analog(1)); // แสดงค าตั วตรววจั บช อง A1glcd(1,0,"R=%d ",analog(2)); // แสดงค าตั วตรววจั บช อง A2

} ต อแผงวงจร ZX-03 เข ากั บจุ ดต อ A1 กํ าหนดเป นตั วตรวจจั บซ ายและต อแผงวงจร ZX-03 อี กตั วหน่ึ งเข ากั บจุ ดต อ A2 กํ าหนดเป นตั วตรวจจั บขวา

เป ดโปรแกรม Wiring 1.0 SE แล วเขี ยนโปรแกรมข างต น บั นทึ กชื่ อเป น iBOT_SensorTest.pde อั ปโหลดไปยั งหุ นยนต iBOT แล วถอดสาย miniB-USB นํ าหุ นยนต มาวางที่ พื้ นดํ าแล วขาว แล วสั งเกตการทํ างานของหุ นยนต

จะพบว า หุ นยนต จะอ านค าจากพื้ นหรื อเส นสี ดํ าได น อยกว าสี ขาวค อนข างมาก

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SD

A8

SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD1

LOW

+5

2RxD

1

UART1

SERVO

RESET

20

19

18

17

16

KN

OB

OK

SW1

ON

A2A1

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SD

A8

SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2RxD

1

UART1

SERV

ORESET

20

19

18

17

16

KN

OB

OK

SW

1

ON

A2A1

L=190

R=190

L=900

R=900

Page 7: iBOT_Practice_

7

เป าหมายเขี ยนโปรแกรมภาษา C/C++ เพื่ อควบคุ มให หุ นยนต iBOT เคลื่ อนที่ ตามเส นสี ดํ าอย างง าย

27

A3

30

A6

29

A5

26

A2

28

A4

25

A1

24A0

USB

D

9SD

A8

SCL

12131415 SV0 SV1 SV2 SV3

12

6V G

13

6V G

14

6V G

15

6V G

21

DC MOTOR

3TxD

1

LOW

+5

2RxD

1

UART1

SERVO

RESET

20

19

18

17

16

KN

OB

OK

SW

1

ON

A2A1

หั วใจสํ าคั ญของการตรวจจั บเส นคื อ การก ําหนดค าอ างอ ิงเพื ่อใช ในการตั ดสิ นใจว า ต ัวตรวจจั บพบเส นหร ือพื ้นสนาม จากการทดสอบในปฏิ บั ติ การที่ 5 พบว า ค าที่ อ านได จากสี ขาวมี ค าอยู ประมาณ 700 ถึ ง 1000 ค าที่ อ านได จากสี ดํ ามี ค าอยู ประมาณ 80 ถึ ง 250 ดั งนั้ นค าที่ เหมาะสม เพื่ อใช เป นค าอ างอิ งจะอยู ที่ (700+250) /2 = 500ในกรณ ียกตั วหุ นยนต ขึ้ นจากพื้ น เพื่ อไม ให เกิ ดการสะท อน ค าที่ อ านได ควรมี ค าไม เกิ น 30 ซึ่ งจะนํ าไปใช ในการพั ฒนาโปรแกรมเพื่ อควบคุ มให หุ นยนต iBOT สามารถตรวจจั บและเคลื่ อนที่ ตามเส นได

Page 8: iBOT_Practice_

8

ต อแผงวงจร ZX-03 เข ากั บจุ ดต อ A1 กํ าหนดเป นตั วตรวจจั บซ ายและต อแผงวงจร ZX-03 อี กตั วหน่ึ งเข ากั บจุ ดต อ A2 กํ าหนดเป นตั วตรวจจั บขวา

เป ดโปรแกรม Wiring 1.0 SE เข ียนโปรแกรมต อไปนี ้ บ ันท ึกชื ่อเป น iBOT_SimpleLineTracking.pde

#include <ipst.h>int L,R,refL=500,refR=500;void fd(int speedL,int speedR) // ฟ งก ชั่ นเดิ นหน า{

motor(1,speedL);motor(2,speedR);

}void bk(int speedL,int speedR) // ฟ งก ชั่ นถอยหลั ง{

motor(1,-speedL);motor(2,-speedR);

}void tl(int speedL,int speedR) // ฟ งก ชั่ นเลี้ ยวซ าย{

motor(1,-speedL);motor(2,speedR);

}void tr(int speedL,int speedR) // ฟ งก ชั่ นเลี้ ยวขวา{

motor(1,speedL);motor(2,-speedR);

}void setup(){

setTextSize(2);glcd(0,1,"Press Start");sw_OK_press(); // รอกดสวิ ตช OK

}void loop(){

L=analog(0);R=analog(2);if(L>refL&&R>refR) // พบสี ขาวทั้ งสองด าน ?{

fd(60);}else if(L<refL&&R>refR) // ตั วตรวจจั บซ ายพบสี ดํ า{

tl(60);}else if(L>refL&&R<refR) // ตั วตรวจจั บขวาพบสี ขาว{

tr(60);}

} อ ัปโหลดไปย ังหุ นยนต iBOT แล วถอดสาย miniB-USB นํ าหุ นยนต มาวางที ่พื ้นสนามที ่ม ีเส นส ีด ํา แล วส ังเกตการทํ างานของหุ นยนต

หุ นยนต iBOT เคลื่ อนที่ ตามเส นดํ าอย างต อเนื่ อง