118

เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

Embed Size (px)

DESCRIPTION

เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

Citation preview

Page 1: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
Page 2: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

• แนะน��ให้รู้�จั กก บ Arduino

• แกะกล่�อง ตรู้วจัสอบอ�ปกรู้ณ์�ในชุ�ด• ก�รู้ต�ดต �งซอฟต�แวรู้� • สรู้�งห้��นยนต� POP-BOT XT

• ขั้ �นตอนก�รู้เขั้$ยนโปรู้แกรู้มเพื่()อควบค�มห้��นยนต�• พื่ ฒน�ห้��นยนต�ให้ทำ��ต�มภ�รู้ก�จัต��งๆ• ก�รู้เคล่()อนทำ$)เบ(�องตน• ก�รู้ใชุเซนเซอรู้�สว�ตชุ�• ห้��นยนต�เคล่()อนทำ$)ต�มเสน

ขั้ �นตอนก�รู้อบรู้ม

Page 3: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

อ�นพื่�ต เอ�ต�พื่�ต

ปรู้ะมวล่ผล่

ห้ล่ กก�รู้ขั้องรู้ะบบควบค�ม

Page 4: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ตนก��เน�ด Arduino www.ard

uino.cc

• ค��ม(ออ�งอ�งก�รู้ใชุง�น• ต วอย��ง

ฮ�รู้�ดแวรู้�• จั�ดก��เน�ด

IDEA• ทำ$)ด�วน�โห้ล่ด

โปรู้แกรู้ม• ทำ$)ซ กถ�มป2ญห้�

Page 5: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ขั้อม�ล่อ�งอ�งส��ห้รู้ บเขั้$ยนโปรู้แกรู้ม

• ชุ�ดค��ส )ง• ไล่บรู้�รู้$)• ต วแปรู้• ค��สงวน

Page 6: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ตนก��เน�ด POP-XT

โครู้งก�รู้ Opensource จั�ก Arduino

POP-XT ขั้อง inex

HARDWARE

Page 7: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

POP-XT

Edit + Compile + Download

C/C++

คอมไพื่เล่อรู้� Opensource

SOFTWARE

Page 8: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ค�ณ์สมบ ต�ขั้อง POP-XT• ใชุไมโครู้คอนโทำรู้ล่เล่อรู้� ATMEGA32U4 ขั้อง ATMEL

• คว�มล่ะเอ$ยดอ��นค��อะน�ล่อก 10 บ�ต (0-1023) 1024 รู้ะด บ • ห้น�วยคว�มจั��โปรู้แกรู้ม 32 ก�โล่ไบต� • ทำ��ง�นทำ$)คว�มเรู้5ว 16 ล่�นค��ส )งต�อว�น�ทำ$• เชุ()อมต�อก บคอมพื่�วเตอรู้�ผ��นพื่อรู้�ต USB โดยตรู้งผ��นส�ย Mini-B

• ม$จัอ LCD กรู้�ฟ6กส$คว�มล่ะเอ$ยด 128x160 พื่�กเซล่• ขั้ บมอเตอรู้�ไฟตรู้งได 2 ต ว เซอรู้�โวมอเตอรู้�ได 3 ต ว• ต�อเซนเซอรู้�อะน�ล่อกได 8 ชุ�อง

220mF

100mF

TB66

12

ATM

eg

a32

U4

100

Page 9: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต��แห้น�งก�รู้ว�งอ�ปกรู้ณ์�ขั้อง POP-XT

Page 10: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

อ�ปกรู้ณ์�อ�นพื่�ต

Switch (Digital)

Reflect (Analog)

Distance (Analog)

ป�7ม OK (Digital)

knob (Analog)

Page 11: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

อ�ปกรู้ณ์�เอ�ต�พื่�ต

Servo Motor

DC Motor

ล่��โพื่งเป8ยโซ

จัอ GLCD128x160

ZX-LED

Page 12: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต�ดต �งซอฟต�แวรู้�

ปรู้ะกอบดวย• ซอฟต�แวรู้� Arduino 1.0

• ต วอย��ง POP-BOT XT• ไดรู้เวอรู้� USB

• ไล่บรู้�รู้$) POP-BOT XT

Arduino1.0 POP-BOT XT Setup.exe

Page 13: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

1 2

3 4

Page 14: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต�ดต �งซอฟต�แวรู้� POP-BOT ล่งในเครู้()องคอมพื่�วเตอรู้� พื่รู้อมทำ �งต วต�ดต �งไดรู้เวอรู้� USB

5

6

7

8

Page 15: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เป6ดโปรู้แกรู้มจั�ก Start Menu

Page 16: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เรู้�)มตนเชุ()อมต�อก บคอมพื่�วเตอรู้�

1. ใส่�ถ่�านชาร์จหร์�อถ่�านอ�ลคาไลน AA 4 ก้�อน

2.เส่�ยบส่าย Mini USB

3.เปิ�ดส่วิ�ตชจ�ายไฟให� POP-XT ก้�อน 4.เส่�ยบส่าย USB เข้�าก้�บคอมพิ�วิเตอร์

Page 17: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
Page 18: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

027477001-4

Page 19: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้แกป2ญห้�ในกรู้ณ์$เก�ดป2ญห้�ก�รู้ต�ดต �ง windows 7

ให้เขั้�ไปทำ$) Device Manager

Page 20: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้แกป2ญห้�ในกรู้ณ์$เก�ดป2ญห้�ก�รู้ต�ดต �ง windows 7

จัะเจัออ�ปกรู้ณ์�ทำ$)ม$เครู้()องห้ม�ย !

คล่�กเม�ส�ขั้ว�เล่(อก Update Driver

Page 21: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้แกป2ญห้�ในกรู้ณ์$เก�ดป2ญห้�ก�รู้ต�ดต �ง windows 7

เล่(อกห้ วขั้อต�มรู้�ปชุ$�ไปต��แห้น�งทำ$)เก5บไดรู้เวอรู้�

เม()อแจังเต(อน เล่(อกต�มรู้�ป ก�รู้ต�ดต �งเสรู้5จัสมบ�รู้ณ์�

Page 22: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้ต�ดต �งไดรู้เวอรู้�ก บ Windows XP

Page 23: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้ต�ดต �งไดรู้เวอรู้�ก บ Windows XP

คอมพื่�วเตอรู้�พื่บฮ�รู้�ดแวรู้�ให้ม�

เล่(อกต��แห้น�งทำ$)เก5บไดรู้เวอรู้�C:\Arduino\drivers

ก�รู้ต�ดต �งเสรู้5จัสมบ�รู้ณ์�

Page 24: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้ต�ดต �ง Arduino บนเครู้()อง Mac OSX

แตกไฟล่� ZIP จัะได ICON ด งรู้�ป

ล่�ก ICON Arcuino รู้วมเขั้�ไวทำ$) Aplication

Page 25: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เป6ดโปรู้แกรู้ม Arduino เล่(อกบอรู้�ดเป9น POP-XT

เม()อเชุ()อมต�อส�ย USB เครู้()อง Mac จัะเห้5นพื่อรู้�ตส()อส�รู้ชุ()อ tty.usbmodem...

Page 26: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้น�ต�ขั้องโปรู้แกรู้ม Arduino

void setup() {

}

void loop() {

}

ส��ห้รู้ บก��ห้นดค�� เก�ดขั้:�นครู้ �งเด$ยว

โปรู้แกรู้มห้ล่ กทำ��ง�นต�อเน()อง

Page 27: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เล่(อกชุ()อบอรู้�ดเป9น POP-XT

Page 28: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เล่(อกต��แห้น�งพื่อรู้�ตอน�กรู้ม

Page 29: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เป6ดโปรู้แกรู้มต วอย��ง

Page 30: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เป9นโปรู้แกรู้มแสดงขั้อคว�มทำ$)ห้น�จัอ GLCD

Page 31: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

คอมไพื่ล่� (แปล่โปรู้แกรู้มทำ$)เขั้$ยนว��ถ�กไวยกรู้ณ์�ห้รู้(อไม�) กดป�7มน$�

ก5ได

Page 32: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

แถบสถ�นะด�นล่��งแสดงผล่ล่ พื่ธ์�

ขั้น�ดห้น�วยคว�มจั��ทำ$)ใชุ

ขั้น�ดห้น�วยคว�มจั��ทำ �งห้มด

แจังว��คอมไพื่ล่�ผ��น

Page 33: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต�อส�ย USB ก บคอมพื่�วเตอรู้�

Page 34: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

upload โปรู้แกรู้มไปย งห้��นยนต�

ห้รู้(อกดป�7มน$�ก5ได

Page 35: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ผล่ล่ พื่ธ์�

ค��ส )ง glcd

แสดงขั้อคว�ม

Page 36: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ค�ณ์สมบ ต�ขั้องจัอภ�พื่

Page 37: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

glcd แสดงขั้อคว�มทำ$)จัอ GLCD ได 21 ต ว 16 บรู้รู้ทำ ด (size 1) รู้�ปแบบ

void glcd(unsigned char x, unsigned char y ,char *p,...)

พื่�รู้�ม�เตอรู้�x ค(อต��แห้น�งบรู้รู้ทำ ดม$ค��ต �งแต� 0-15y ค(อต��แห้น�งต วอ กษรู้ม$ค��ต �งแต� 0-24*p ค(อขั้อคว�มทำ$)ตองก�รู้น��ม�แสดง

ค��พื่�เศษ%d แสดงต วเล่ขั้จั��นวนเต5มในชุ�วง -32,768 ถ:ง

32,767%l แสดงต วเล่ขั้จั��นวนเต5มในชุ�วง -

2,147,483,648 ถ:ง 2,147,483,647%f แสดงผล่ต วเล่ขั้จั��นวนจัรู้�ง (แสดงทำศน�ยม 3

ห้ล่ ก)

ค�ณ์สมบ ต�ขั้องจัอภ�พื่

Page 38: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ไล่บรู้�รู้$)ขั้อง glcdglcdsetTextColorsetTextBackgroundColorglcdClearglcdFillScreen glcdModesetTextSizegetTextColorgetTextBackgroundColorglcdTextSizeglcdGetModeglcdPixelglcdRectglcdFillRectglcdLineglcdCircleglcdFillCircleglcdArc

Page 39: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

unsigned int color[]= { GLCD_RED,

GLCD_GREEN,

GLCD_BLUE,

GLCD_YELLOW,

GLCD_BLACK,

GLCD_WHITE,

GLCD_SKY,

GLCD_MAGENTA};

ต วแปรู้ทำ$)ใชุส��ห้รู้ บก��ห้นดส$พื่(�นฐ�น

Page 40: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

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(){}

ค��ส$ต วอ กษรู้

Page 41: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

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(){}

ค��ส$พื่(�นห้ล่ งต วอ กษรู้

Page 42: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

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)

เทำส$ล่งบนห้น�จัอทำ �งห้น�

Page 43: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

setTextSize ปรู้ บขั้น�ดต วอ กษรู้ เป9นเทำ��ต วถ�ไม�ก��ห้นดขั้น�ดเป9น 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");}

Page 44: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้ม�นจัอ ขั้ย�ยขั้น�ด

Page 45: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#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

Page 46: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โจัทำย�

ส่ร์�างวิงก้ลมส่�แดงอย*�ก้-$งก้ลางจอภาพิ ร์�ศม�เต0มจอพิอด�

Page 47: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โจัทำย�

ลาก้เส่�น 4 เส่�นโดยม�จ2ดต�ดอย*�ก้ลางจอภาพิพิอด�

Page 48: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โจัทำย�

ส่ร์�างส่�$เหล�$ยมซ้�อนก้�นด�งร์*ปิ

Page 49: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

glcd แสดงขั้อคว�มทำ$)จัอ GLCD ได 21 ต ว 16 บรู้รู้ทำ ด (size 1) รู้�ปแบบ

void glcd(x,y,*p,...)พื่�รู้�ม�เตอรู้�

x ค(อต��แห้น�งบรู้รู้ทำ ดม$ค��ต �งแต� 0-15y ค(อต��แห้น�งต วอ กษรู้ม$ค��ต �งแต� 0-24*p ค(อขั้อคว�มทำ$)ตองก�รู้น��ม�แสดง

ค��พื่�เศษ%d แสดงต วเล่ขั้จั��นวนเต5มในชุ�วง -32,768 ถ:ง

32,767%l แสดงต วเล่ขั้จั��นวนเต5มในชุ�วง -

2,147,483,648 ถ:ง 2,147,483,647%f แสดงผล่ต วเล่ขั้จั��นวนจัรู้�ง (แสดงทำศน�ยม 3

ห้ล่ ก)

ค��ส )ง GLCD

Page 50: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้แสดงผล่ต วเล่ขั้

glcd(0,0,"%d",100);

Page 51: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต วแปรู้ใน 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 1038 float

ห้�ขั้อม�ล่เพื่�)มเต�มจั�ก reference

Page 52: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เอ�ต�พื่�ตด�จั�ตอล่อย��งง��ย

Page 53: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เป9นฟ2งก�ชุ นส�งขั้อม�ล่ออกเอ�ต�พื่�ต ต��แห้น�งขั้� num ดวยสถ�นะล่อจั�ก dat "0" ห้รู้(อ "1"ต วอย��ง

......out(6,1) // ให้ LED ทำ$)ต�อขั้� 6 ต�ดสว��งout(4,0) // ให้ LED ทำ$)ต�อขั้� 6 ด บ......

out(int num,int dat)

Page 54: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

สรู้�งเส$ยงออกล่��โพื่ง

ล่��โพื่งเป8ยโซ

beep()

sound(freq,time)

Page 55: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ค��ส )งสรู้�งเส$ยงฟ2งก�ชุ )นก��เน�ดเส$ยงอย��งง��ย beep : ที่%าหน�าที่�$ก้%าเน�ดเส่�ยงควิามถ่�$ 500 Hz นาน 100 ม�ลล�วิ�นาที่�

void beep(void);

ฟ2งก�ชุ )นก��เน�ดเส$ยงคว�มถ$)ใดๆ sound : ที่%าหน�าที่�$ก้%าเน�ดเส่�ยงควิามถ่�$ ตามช�วิงเวิลาที่�$ก้%าหนด

void sound(int freq,int time);

พิาร์าม�เตอร์ freq ใช�ก้%าหนดค�าควิามถ่�$ค�าส่�ญญาณเส่�ยง

time ใช�ก้%าหนดช�วิงเวิลาในก้าร์ก้%าเน�ดส่�ญญาณเส่�ยงในหน�วิยม�ลล�วิ�นาที่�

Page 56: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

สรู้�งส ญญ�ณ์เส$ยงต�?ดทำ�กๆ 1 ว�น�ทำ$(คว�มถ$)เส$ยง 500 Hz ด งน�น 0.1 ว�น�ทำ$)

#include <popxt.h>void setup(){

}void loop(){ beep(); sleep(1000);}

Page 57: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

สรู้�งส ญญ�ณ์เส$ยงคว�มถ$) 1200 Hz ด งน�น 0.5 ว�น�ทำ$ โดยเวนห้วงทำ�กๆ 1 ว�น�ทำ$#include <popxt.h>void setup(){

}void loop(){ sound(1200,500); sleep(1000);}

Page 58: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
Page 59: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

knob เป9นฟ2งก�ชุ )นอ��นค�� knob บน POP-XT เห้ม(อนค��ส )ง analog(8) ค��อย��ในชุ�วง 80-1023 รู้�ปแบบ

unsigned int knob()ก�รู้ค(นค��

ค��ทำ$)อ��นไดจั�ก knob ม$ค��รู้ะห้ว��ง 80-1023ต วอย��ง

int val=0; // ก��ห้นดค��ต วแปรู้ส��ห้รู้ บเก5บค��อะน�ล่อกval=knob(); // อ��นค��จั�ก knob เก5บค��ในต วแปรู้ valglcd("%d",val); // น��ค��แสดงทำ$) GLCD

knob()

Page 60: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

sw_ok() เป9นฟ2งก�ชุ )นตรู้วจัสอบสว�ตชุ� OK บน POP-XT ให้สถ�นะจัรู้�งเม()อกดสว�ตชุ�แล่ะเป9นเทำ5จัเม()อไม�กดสว�ตชุ�รู้�ปแบบ

unsigned char sw_ok()ก�รู้ค(นค��

1 (เป9นจัรู้�ง) เม()อกดสว�ตชุ�0 (เป9นเทำ5จั) เม()อไม�กดสว�ตชุ�

ห้ม�ยเห้ต� ก�รู้กดสว�ตชุ�ทำ��ให้ค��ทำ$)อ��นไดจั�ก Knob ม$ค��เป9น 0ต วอย��ง

if(sw_ok()){

beep();}

sw_ok()

Page 61: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เป9นฟ2งก�ชุ )นวนตรู้วจัสอบก�รู้กดสว�ตชุ� OK บนบอรู้�ด POP-XT ตองรู้อจันกรู้ะทำ )ง SW1 ถ�กปล่�อยห้ล่ งจั�กม$ก�รู้กดสว�ตชุ� จั:งจัะผ��นฟ2งก�ชุ )นน$�ไปทำ��ง�นค��ส )งอ()นๆต วอย��ง

......sw_ok_press(); // รู้อจันกรู้ะทำ )งกดสว�ตชุ�

OK ......

sw_ok_press()

Page 62: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้ขั้ บเคล่()อน POP-BOT XT

Page 63: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ชุ�ดเฟ@องขั้ บมอเตอรู้�อ ตรู้�ทำด 48:1

Page 64: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ภ�ยในชุ�ดเฟ@องขั้ บมอเตอรู้�

Page 65: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

BATTERY

+-

M

BATTERY

-+

M

ควบค�มทำ�ศทำ�งขั้องมอเตอรู้�ดวยทำ�ศทำ�งขั้องกรู้ะแสไฟฟA�

ก�รู้ก��ห้นดทำ�ศทำ�งขั้องมอเตอรู้�

Page 66: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ฟ2งก�ชุ )น motor ส��ห้รู้ บขั้ บมอเตอรู้�ไฟตรู้งรู้�ปแบบ

void motor(char ch,int pow)

พื่�รู้�ม�เตอรู้� ch ใชุก��ห้นดชุ�องขั้ บต �งแต� 1 ถ:ง 2

pow ใชุก��ห้นดขั้น�ดก��ล่ งขั้ บ -100 ถ:ง 100• กรู้ณ์$ขั้ บดวยก��ล่ ง 1 ถ:ง 100 ไฟสถ�นะปรู้ะจั��ชุ�องต�ด

เป9นส$เขั้$ยว• กรู้ณ์$ขั้ บดวยก��ล่ ง -1 ถ:ง -100 ไฟสถ�นะปรู้ะจั��ชุ�องต�ด

เป9นส$แดง(ทำ�ศก�รู้ห้ม�นตรู้งขั้�มก บขั้ บดวยก��ล่ งเป9นบวก)

motor(1,100); มอเตอรู้� 1 เด�นห้น�คว�มเรู้5ว 100 เปอรู้�เซ5นต�motor(2,-50); มอเตอรู้� 2 ถอยห้ล่ ง คว�มเรู้5ว 50 เปอรู้�เซ5นต�

Page 67: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ฟ2งก�ชุ )น motor_stop ส��ห้รู้ บห้ย�ดขั้ บมอเตอรู้�ไฟตรู้งต�มชุ�องทำ$)ก��ห้นดรู้�ปแบบ

void motor_stop(char ch)

พื่�รู้�ม�เตอรู้� ch ใชุก��ห้นดชุ�องขั้ บต �งแต� 1 ถ:ง 2 ในกรู้ณ์$ทำ$)ตองก�รู้ห้ย�ดขั้ บทำ�กชุ�องพื่รู้อมก นส�ม�รู้ถก��ห้นดเป9น ALLกรู้ณ์$ห้ย�ดมอเตอรู้� 2 ต วพื่รู้อมก น ส�ม�รู้ถใชุค��ส )ง ao() แทำนไดmotor_stop(1); มอเตอรู้� 1 ห้ย�ดmotor_stop(2); มอเตอรู้� 2 ห้ย�ด

ao(); มอเตอรู้� 2 ต วห้ย�ดพื่รู้อมก น

Page 68: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

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 ต วพื่รู้อมก น

Page 69: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

fd(Speed); เด�นหน�าbk(Speed); ถ่อยหล�งsl(Speed); เล�'ยวิซ้�ายsr(Speed); เล�'ยวิข้วิา

Speed ค�อควิามเร์0วิห2�นยนต 0-100

ao() ;หย2ด

Page 70: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#include <popxt.h>void setup(){

fd(100);}void loop() {}

ก�รู้ปรู้ บแต�งเพื่()อให้ห้��นยนต�เคล่()อนทำ$)ตรู้ง

ทำ��ก�รู้ปรู้ บขั้ �วมอเตอรู้�ชุ�อง 1 แล่ะ 2 ทำ$)ทำ��ให้ล่อทำ �งสองด�นห้ม�นไปขั้�งห้น�ต�มรู้�ปให้ได

Page 71: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ทำดสอบขั้ บเคล่()อนห้��นยนต�เด�นห้น�แล่ะถอยห้ล่ งพื่(�นฐ�น

#include <popxt.h>

void setup(){}void loop(){ fd(80); sleep(1000); bk(80); sleep(1000);}

ForwardBackward.ino

Page 72: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้��นยนต�เด�นวนเป9นรู้�ปส$)เห้ล่$)ยม

#include <popxt.h> void setup(){ sw_ok_press(); } void loop(){ fd(80); sleep(900); tr(80); sleep(400); }

Rectangle_running.ino

Page 73: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

fd2(Speed1,speed2); เด�นหน�าbk2(Speed1,speed2); ถ่อยหล�ง

Speed1 ค(อมอเตอรู้�ด�นซ�ยSpeed2 ค(อมอเตอรู้�ด�นขั้ว�

Page 74: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้��นยนต�เคล่()อนทำ$)เป9นวงกล่ม

CircleMove.ino

Page 75: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#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(){}

ต วอย��งโคด ห้��นยนต�เคล่()อนทำ$)เป9นวงกล่ม

CircleMove.ino

Page 76: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้เคล่()อนทำ$)ห้ล่�ยทำ�ศทำ�ง

MultipleDirectionMove.ino

Page 77: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

แผงวงจัรู้สว�ตชุ�: ZX-SWITCH (Digital)

ค�ณ์สมบ ต�ทำ�งเทำคน�ค• ถ�สว�ตชุ�ถ�กกดจัะอ��นค��ขั้อม�ล่ไดเป9นล่อจั�ก “0” พื่รู้อมก บ

ไฟแสดงสถ�นะต�ดสว��ง • ถ�สว�ตชุ�ไม�ถ�กกดจัะอ��นค��ขั้อม�ล่ไดเป9นล่อจั�ก “1”

Page 78: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ฟ2งก�ชุ )น in ส��ห้รู้ บอ��นค��ส ญญ�ณ์แบบด�จั�ตอล่จั�กขั้�พื่อรู้�ตใดๆขั้องบอรู้�ดควบค�มห้ล่ กรู้�ปแบบ

char in(char _bit);

พื่�รู้�ม�เตอรู้� _bit ใชุก��ห้นดต��แห้น�งห้ม�ยเล่ขั้พื่อรู้�ตทำ$)ตองก�รู้ต�ดต�อก�รู้ค(นค��ฟ2งก�ชุ )นจัะทำ��ก�รู้ค(นค��ส ญญ�ณ์ด�จั�ตอล่ขั้องต��แห้น�งขั้�พื่อรู้�ตทำ$)อ��นซ:)งอ�จัม$ค��เป9น 0 ห้รู้(อ 1 เทำ��น �น

Page 79: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต�อ ZX-SWITCH เขั้�ก บพื่อรู้�ต 22 แล่ะ 23

กดสว�ตชุ�ม$เส$ยงออกล่��โพื่ง

Page 80: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#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

Page 81: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้��นยนต�รู้ถบ งค บ

Page 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(){ 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

Page 83: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เม()อม$ก�รู้ต�ดต �งเซนเซอรู้�ตรู้วจัจั บก�รู้ชุน

Page 84: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต�อ ZX-SWITCH เขั้�ก บพื่อรู้�ต 22 แล่ะ 23

Page 85: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#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

Page 86: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โมด�ล่ว ดรู้ะยะทำ�งแบบอ�นฟรู้�เรู้ด: GP2D120

ค�ณ์สมบ ต�ห้ล่ ก•ทำ��ง�นทำ$)ไฟเล่$�ยง 5 โวล่ต�•ว ดรู้ะยะทำ�งใชุ�วงต �งแต� 4 ถ:ง 32 เซนต�เมตรู้

Page 87: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้ล่ กก�รู้ทำ��ง�นขั้อง GP2D120

Page 88: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ไล่บรู้�รู้$แล่ะชุ�ดค��ส )งทำ$)แนะน��ไล่บรู้�รู้$ gp2d120_lib.h

เป9นไล่บรู้�รู้$ทำ$)บรู้รู้จั�ชุ�ดค��ส )งเรู้$ยกอ��นค��รู้ะยะทำ�งจั�กโมด�ล่ GP2D120 ก�อนเรู้$ยกใชุง�นฟ2งก�ชุ )นทำ$)บรู้รู้จั�อย��ภ�ยในผ�พื่ ฒน�จัะตองทำ��ก�รู้ผนวกไฟล่�ไล่บรู้�รู้$ไวทำ$)ตอนตนขั้องโปรู้แกรู้มภ�ษ� C ดวยค��ส )ง

#include <gp2d120_lib.h>

Page 89: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ฟ2งก�ชุ )น getdist : อ��นค��รู้ะยะทำ�งในห้น�วยเซนต�เมตรู้จั�กโมด�ล่ GP2D120 ซ:)งค��ทำ$)ม$คว�มเชุ()อถ(อไดจัะม$ค��ต �งแต� 4 ถ:ง 32 เซนต�เมตรู้รู้�ปแบบ

unsigned int getdist(char

adc_ch)พื่�รู้�ม�เตอรู้� adc_ch ใชุก��ห้นดขั้�พื่อรู้�ตทำ$)ตองก�รู้ในชุ�วง 1 ถ:ง 7 จั�กพื่อรู้�ต A1 ถ:ง A7 ต�มล่��ด บ ก�รู้ค(นค��ฟ2งก�ชุ )นจัะทำ��ก�รู้ค(นค��ขั้อม�ล่รู้ะยะทำ�งในห้น�วยเซนต�เมตรู้

Page 90: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ต�อ GP2D120 เขั้�ก บพื่อรู้�ต 20/A2

Page 91: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#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

Page 92: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

แผงวงจัรู้ตรู้วจัจั บแสงสะทำอน: ZX-03

Page 93: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

#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

Page 94: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

อ��นค��พื่(�นผ�วส$ด��

อ��นค��พื่(�นผ�วส$ขั้�ว

อ��นค��ผล่ล่ พื่ธ์�จั�กก�รู้สะทำอนแสง

Page 95: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ยกห้��นยนต�ขั้:�นจั�กพื่(�นแล่วม$เส$ยงเต(อน#include <popxt.h> void setup(){} void loop(){ if(analog(0)<20){ sound(2500,500); glcdFillScreen(GLCD_RED); } else{ glcdClear(); }}

AlarmBOT.ino

Page 96: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้��นยนต�เด�นม�ห้ย�ดทำ$)เสนส$ด�� (แบบทำ$) 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(){}

Page 97: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ห้��นยนต�เด�นม�ห้ย�ดทำ$)เสนส$ด��ดวยก�รู้เบรู้ก

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(){}

Page 98: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ส )งให้ห้��นยนต�เด�นห้น�ตรู้งต�อไป

1

if(L>500&&R>500){ fd(60); }

Page 99: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ส )งให้ห้��นยนต�เล่$�ยวซ�ยเพื่()อกล่ บไปครู้�อมเสน

2

if(L<500&&R>500){ sl(60);sleep(20);}

Page 100: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ส )งให้ห้��นยนต�เล่$�ยวขั้ว�เพื่()อกล่ บไปครู้�อมเสน3

if(L>500&&R<500){ sr(60);sleep(20);}

Page 101: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก��ห้นดก�รู้ทำ��ง�นต�มอ�สรู้ะ4

if(L<500&&R<500){ fd(60);sleep(200); }

Page 102: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เขั้$ยนโปรู้แกรู้มทำดสอบก บสน�มขั้ �นพื่(�นฐ�น

Page 103: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โปรู้แกรู้มเด�นต�มเสนสน�มแบบพื่(�นฐ�น

....ino

#include <popxt.h> int L,Rvoid 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); } }

Page 104: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เม()อเจัอเสนต ดส�งเส$ยงบ$?ป

Page 105: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โปรู้แกรู้มเด�นต�มเสนเม()อเจัอเสนต ดส�งเส$ยงบ$?ป

SimpleLineTracking.ino

#include <popxt.h> int L,Rvoid 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); } }

Page 106: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เม()อเจัอเสนต ดเล่$�ยวขั้ว�

Page 107: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โปรู้แกรู้มเด�นต�มเสนเม()อเจัอเสนต ดเล่$�ยวขั้ว�

xxxxxx.ino

#include <popxt.h> int L,Rvoid 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); } }

Page 108: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้เล่$�ยว 90 องศ�พื่อด$เม()อเจัอเสนต ด

Page 109: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

โปรู้แกรู้มเด�นต�มเสนเม()อเจัอเสนต ดเล่$�ยวขั้ว�/ซ�ย

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);}}

Page 110: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เม()อเจัอเสนต ดเล่$�ยวขั้ว� (แบบให้ม�)

Page 111: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

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);}}

Page 112: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

เด�นต�มเสนทำ�งแยกทำ$)ซ บซอน

Page 113: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

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);}}

Page 114: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ก�รู้ใชุง�นเซอรู้�โวมอเตอรู้�

Page 115: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
Page 116: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ฟ2งก�ชุ )น servo : ก��ห้นดต��แห้น�งเซอรู้�โวมอเตอรู้� โดยเม()อใชุง�นก บรู้��นม�ตรู้ฐ�นจัะทำ��ให้ห้ม�นไปย งต��แห้น�ง 0 ถ:ง 180 องศ�ไดแล่ะถ�ใชุง�นก บรู้��นปรู้ บแต�งจัะทำ��ให้ห้ม�นในทำ�ศทำ�งใดทำ�ศทำ�งห้น:)งแล่ะม$ผล่ต�ออ ตรู้�เรู้5วในก�รู้ห้ม�น ห้รู้(ออ�จัห้ย�ดน�)งรู้�ปแบบ void servo(unsigned char _ch

,unsigned int _pos);

พื่�รู้�ม�เตอรู้� _ch ใชุก��ห้นดชุ�องขั้ บทำ$)ต�อใชุง�นม$ค��ต �งแต� 7 ถ:ง 8

_pos ใชุก��ห้นดต��แห้น�งก�รู้ขั้ บขั้องเซอรู้�โวมอเตอรู้� ม$ค�� 0 ถ:ง 180 ถ�เป9นค�� -1 จัะเป9นก�รู้ยกเล่�กก�รู้ใชุง�น (ฟรู้$)

Page 117: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

ปรู้ บค��ต วต�นทำ�นเพื่()อปรู้ บต��แห้น�งขั้องเซอรู้�โวมอเตอรู้�

Page 118: เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

กฤษด� ใจัเย5น KRITSADA JAIYENบรู้�ษ ทำ อ�นโนเวต$ฟ เอ5กเพื่อรู้�เมนต� จั��ก ด108 ซอยส�ขั้�มว�ทำ 101/2 ถ.ส�ขั้�มว�ทำแขั้วงบ�งน� เขั้ตบ�งน� กรู้�งเทำพื่ฯ 10260โที่ร์ศ�พิที่ 02-7477001-4 โที่ร์ส่าร์ 02-7477005

Email : [email protected]@msn.com

www.inex.co.th