More Related Content Similar to Pop bot-xt v 2013-11-11
Similar to Pop bot-xt v 2013-11-11 (20) Pop bot-xt v 2013-11-112. • แนะนำให้รู้จักกับ Arduino
• แกะกล่อง ตรวจสอบอุปกรณ์ในชุด
• กำรติดตั้งซอฟต์แวร์
• สร้ำงหุ่นยนต์ POP-BOT XT
• ขั้นตอนกำรเขียนโปรแกรมเพื่อควบคุมหุ่นยนต์
• พัฒนำหุ่นยนต์ให้ทำตำมภำรกิจต่ำงๆ
• กำรเคลื่อนที่เบื้องต้น
• กำรใช้เซนเซอร์สวิตช์
• หุ่นยนต์เคลื่อนที่ตำมเส้น
ขั้นตอนกำรอบรม
8. คุณสมบัติของ POP-XT
• ใช้ไมโครคอนโทรลเลอร์ ATMEGA32U4 ของ ATMEL
• ควำมละเอียดอ่ำนค่ำอะนำลอก 10 บิต (0-1023) 1024 ระดับ
• หน่วยควำมจำโปรแกรม 32 กิโลไบต์
• ทำงำนที่ควำมเร็ว 16 ล้ำนคำสั่งต่อวินำที
• เชื่อมต่อกับคอมพิวเตอร์ผ่ำนพอร์ต USB โดยตรงผ่ำนสำย Mini-B
• มีจอ LCD กรำฟิ กสีควำมละเอียด 128x160 พิกเซล
• ขับมอเตอร์ไฟตรงได้ 2 ตัว เซอร์โวมอเตอร์ได้ 3 ตัว
• ต่อเซนเซอร์อะนำลอกได้ 8 ช่อง
220mF
100mF
TB6612
ATMega32U4
100
25. เปิ ดโปรแกรม Arduino เลือกบอร์ดเป็น POP-XT
เมื่อเชื่อมต่อสำย USB เครื่อง Mac จะเห็นพอร์ตสื่อสำรชื่อ tty.usbmodem...
37. 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 หลัก)
คุณสมบัติของจอภำพ
39. unsigned int color[]= {
GLCD_RED,
GLCD_GREEN,
GLCD_BLUE,
GLCD_YELLOW,
GLCD_BLACK,
GLCD_WHITE,
GLCD_SKY,
GLCD_MAGENTA
};
ตัวแปรที่ใช้สำหรับกำหนดสีพื้นฐำน
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(){}
ค่ำสีตัวอักษร
43. 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");
}
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
49. 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
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 1038float
หาข้อมูลเพิ่มเติมจาก reference
55. คำสั่งสร้ำงเสียง
ฟังก์ชั่นกำเนิดเสียงอย่ำงง่ำย beep : ทำหน้ำที่กำเนิดเสียงควำมถี่
500 Hz นำน 100 มิลลิวินำที
void beep(void);
ฟังก์ชั่นกำเนิดเสียงควำมถี่ใดๆ sound : ทำหน้ำที่กำเนิดเสียง
ควำมถี่ ตำมช่วงเวลำที่กำหนด
void sound(int freq,int time);
พารามิเตอร์ freq ใช้กำหนดค่ำควำมถี่ค่ำสัญญำณเสียง
time ใช้กำหนดช่วงเวลำในกำรกำเนิดสัญญำณเสียงใน
หน่วยมิลลิวินำที
59. 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()
60. sw_ok() เป็นฟังก์ชั่นตรวจสอบสวิตช์ OK บน POP-XT ให้สถำนะจริงเมื่อกดสวิตช์
และเป็นเท็จเมื่อไม่กดสวิตช์
รูปแบบ
unsigned char sw_ok()
กำรคืนค่ำ
1 (เป็นจริง) เมื่อกดสวิตช์
0 (เป็นเท็จ) เมื่อไม่กดสวิตช์
หมำยเหตุ กำรกดสวิตช์ทำให้ค่ำที่อ่ำนได้จำก Knob มีค่ำเป็น 0
ตัวอย่ำง
if(sw_ok())
{
beep();
}
sw_ok()
61. เป็นฟังก์ชั่นวนตรวจสอบกำรกดสวิตช์ OK บนบอร์ด POP-XT ต้องรอ
จนกระทั่ง SW1 ถูกปล่อยหลังจำกมีกำรกดสวิตช์ จึงจะผ่ำนฟังก์ชั่นนี้ไปทำงำน
คำสั่งอื่นๆ
ตัวอย่ำง
......
sw_ok_press(); // รอจนกระทั่งกดสวิตช์ OK
......
sw_ok_press()
66. ฟังก์ชั่น 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 เปอร์เซ็นต์
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 ตัวพร้อมกัน
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
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
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);}
}
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);}
}
116. ฟังก์ชั่น
servo : กำหนดตำแหน่งเซอร์โวมอเตอร์ โดยเมื่อใช้งำนกับรุ่น
มำตรฐำนจะทำให้หมุนไปยังตำแหน่ง 0 ถึง 180 องศำได้และถ้ำใช้งำน
กับรุ่นปรับแต่งจะทำให้หมุนในทิศทำงใดทิศทำงหนึ่งและมีผลต่อ
อัตรำเร็วในกำรหมุน หรืออำจหยุดนิ่ง
รูปแบบ
void servo(unsigned char _ch
,unsigned int _pos);
พำรำมิเตอร์ _ch ใช้กำหนดช่องขับที่ต่อใช้งำนมีค่ำตั้งแต่ 7 ถึง 8
_pos ใช้กำหนดตำแหน่งกำรขับของเซอร์โวมอเตอร์
มีค่ำ 0 ถึง 180 ถ้ำเป็นค่ำ -1 จะเป็นกำรยกเลิกกำรใช้งำน (ฟรี)
119. กฤษดำ ใจเย็น KRITSADA JAIYEN
บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด
108 ซอยสุขุมวิท 101/2 ถ.สุขุมวิท
แขวงบำงนำ เขตบำงนำ กรุงเทพฯ 10260
โทรศัพท์ 02-7477001-4 โทรสาร 02-7477005
Email : kritsada@inex.co.th
kritsadaj@msn.com
www.inex.co.th