พพัฒนาโปรแกรมควบคคุมหคุนหุ่ ยนตต์ FireBOT
พอรรตดดจต ด อล ตตาแหนนง 8-9 มมความ สามารถพดเศษเชชชอม ตนอบบสแบบ i2c ไดช
พอรรตอะนาลอก A0A6 และใชชงานเปปนพอรรต ดดจดตอลตตาแหนนง 2430 สวดตชร SW1
พอรรตดดจต ด อล ตตาแหนนง 2-3 มมความ จนดตนอพอรรต สามารถพดเศษเชชชอม USB ตนอเปปนพอรรตอนนกรม 1 ไดช
จนดตนอแบต เตอรรรมช จอแสดงผลกรา ฟปก LCD สม 128x160 จนด
สวดตชร เปปด/ปปด
จนดตนอเซอรรโว มอเตอรร 1-3 ซซงช ตรง กบบพอรรต 13-15 ตามลตาดบบ
ตบวตชานทาน ปรบบคนาไดช KNOB สวดตชร OK
สวดตชร RESET
จนดตนอมอเตอรร 3-4
จนดตนอมอเตอรร 1-2
ขพันตอนการตติ ขั้ ดตพังซอรต์ ขั้ ฟแวรต์ Arduino
Arduino ซอรต์ ฟแวรต์ พฒ พั นา POP-X2 ทตา หนชา ทมชเ ปปน
-Editor -Compiler -Downloader
ขพันตอนการตพั ขั้ งคหุ่ ขั้ าซอรต์ ฟแวรต์ Arduino
ขพันตอนการตพั ขั้ งคหุ่ ขั้ า Arduino 1. กกาหนดเลลือกใชช้ งานบอรต์ ด POP-X2
2. กกาหนดเลลือกใชช้ งาน Comport เลลือก Serial Port ใหช้ ตรง ชหุ่องใชช้ งาน
หนช้ าตาเรติริ่มตช้ นในการพพัฒนาโปรแกรม #include <popx2.h> คชอ สนว นของการเรมย กผนวกไล บราพชน พ ฐานทมชบ รรจนก ลนนม ฟฟง กรช บชน (ชนด คตา สบชง )ในการพบฒ นาบอรรด POP-X2 เพชอ ช อตา นวยความสะดวกในการ พบฒ นาโปรแกรมยดชง ขซพน void setup(){} คชอ สนว นเรดชม ตชน ทตา งานของ โปรแกรมซซงช จะทตา งานเพมย งครบพง แรก และครบพง เดมย วภายในฟฟง กรช บชน นมพ void loop(){} คชอ สนว นทมโช ปรแกรมทตา งานตนอ จาก setup หลบง จากนบพน จะทตา งานเปปน วง รอบอยนา งตนอ เนชชอ งภายในฟฟง กรช บชน นมพ
ตพัวอยหุ่างลกาดพับการประมวลผลของฟพั งกต์ชนพัริ่ setup และ loop #include <popx2.h> void setup() { command1; command2; command3; } void loop() { command4; command5; command6; }
การประมวลผลโปรแกรมจะ ทตา งานดบง นมพ command1; รอบเดมยวสตาหรบบ command2; setup command3; command4; command5; command6; command4; command5; command6; command4; command5; command6; … … …
รอบทมช 1 สตาหรบบ loop รอบทมช 2 สตาหรบบ loop รอบทมช 3 สตาหรบบ loop รอบทมช n สตาหรบบ loop
ทดสอบโปรแกรมแรก
#include <popx2.h> void setup() { glcd(0,0,"Hello POP-X2"); } void loop() { }
ขพันตอนการเชลื ขั้ ริ่อมตหุ่อบอรต์ ด POP-X2 เขช้ ากพับคอมพติวเตอรต์ 1.เชลืริ่อมตหุ่อสาย USB ระหวหุ่าง บอรต์ ด POP-X2 กพับคอมพติวเตอรต์ เพลืริ่อใชช้ ในการอพัพโหลดโปรแกรม 2. เปปดสวดตชรเพาเวอรร เพชอ ช จนายไฟใหชกบบบอรรด POP-X2
กดปนปม Upload
แจชงเตชอนเมชชอ Upload เสรรจ
แจชงการใชชพน ชพ ทมช หนนวยความจตา
คคุณสมบพัตติ GLCD
ชนด ฟฟง กรช น บช GLCD glcd แสดงขชอ ความทมจ ช อ GLCD ไดช 21 ตบว 16 บรรทบด (size 1) รรป แบบ void glcd(x,y,*p,...) พารามดเ ตอรร x คชอ ตตา แหนนง บรรทบด มมค นา ตบพง แตน 0-15 y คชอ ตตา แหนนง ตบว อบก ษรมมค นา ตบพง แตน 0-20 *p คชอ ขชอ ความทมต ช ชอ งการนตา มาแสดง อบก ขระควบคนม พดเ ศษ %d แสดงตบว เลขจตา นวนเตรม ในชนว ง -32,768 ถซง 32,767 %h แสดงตบว เลขฐานสดบ หก %b แสดงตบว เลขฐานสอง %l แสดงตบว เลขจตา นวนเตรม ในชนว ง -2,147,483,648 ถซง 2,147,483,647
ไลบรารมช ของ GLCD glcd setTextColor setTextBackgroundColor glcdClear glcdFillScreen glcdMode setTextSize glcdPixel glcdRect glcdFillRect glcdLine glcdCircle glcdFillCircle glcdArc
setTextColor(COLOR)
คนา สมต ว บ อบก ษร ตบว อยนา ง #include <popx2.h> void setup() { setTextColor(GLCD_RED); glcd(0,0,"Hello"); setTextColor(GLCD_GREEN); glcd(1,0,"World"); } void loop() {}
unsigned color[]={ GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, GLCD_BLACK, GLCD_WHITE, GLCD_SKY, GLCD_MAGENTA };
17
setTextBackgroundColor(COLOR)
คนา สมพ น ชพ หลบง ตบว อบก ษร ตบว อยนา ง
unsigned color[]={ GLCD_RED, GLCD_GREEN, GLCD_BLUE, GLCD_YELLOW, #include <popx2.h> GLCD_BLACK, void setup() GLCD_WHITE, { GLCD_SKY, setTextBackgroundColor(GLCD_RED); GLCD_MAGENTA setTextColor(GLCD_YELLOW); }; glcd(0,0,"Hello World"); } void loop(){}
18
glcdMode
หมนน หนชา จอ
ปกตดเ ปปน Mode 0 ตบว อยนา ง #include <popx2.h> void setup(){} void loop(){ glcdMode(0); glcd(0,0,"Mode 0"); sleep(1000); glcdMode(1); glcd(0,0,"Mode 1"); sleep(1000); glcdMode(2); glcd(0,0,"Mode 2"); sleep(1000); glcdMode(3); glcd(0,0,"Mode 3"); sleep(1000); }
19
setTextSize
ตบว อยนา ง
#include <popx2.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"); }
ปรบบ ขนาดตบว อบก ษร เปป เทนกาตาตบหนดขนาด ว ถชานไมน เปปน 1 เทนา
20
การแสดงผลกรา ฟปก 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) width ความกวชาง x ตตาแหนนงแนวนอน height ความสรง y ตตาแหนนงแนวตบพง redius รบศมม จอกวชาง 128 pixel จอสรง 160 pixel 21
ตพัวแปรททริ่ใชช้ งานบหุ่อย 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
การแสดงผลคนา ตบว เลข int x=100; glcd(0,0,"%d",x);
glcd(0,0,"%d",100);
ตบว อยนา งเพดม ช คนา การนบบ ทนก ๆ 1 วดน าทม (counter.ino)-คตาสบชง delay ทตาหนชาทมช #include <popx2.h> int x; void setup() { OK(); glcdClear(); glcdMode(2); } void loop() { glcd(0,0,"%d ",x); x++; delay(1000); }
หนนว งเวลาตามทมก ช ตา หนด หนนว ยเปปน มดล ลดว ดน าทม
ฟพั งกต์ชนพัริ่ สรช้ างเสทยงออกลกาโพงเปท ยโซ
ชนด ฟฟง กรช บชน สรชา งเสมย งออก ลต า โพง beep() sound(freq,time) freq คคือ ควลำมถปีถี่เสปียง time คคือ เวลลำ 1/100 ววนลำทปี • ใชชล ตา โพงเปปย โซ มมอ ดม พมแ ดนซร ลลลำโพงเปปี ยโซ 32W • มมค าน ความถมชย นา น 300 Hz ถซง 3000 Hz
ตบว อยนา งฟฟง กรช บชน beep และ sound
สตาหรบบ beep #include <popx2.h> void setup(){ } void loop() { beep(); delay(500); }
สตาหรบบ sound
#include <popx2.h> void setup(){ } void loop() { sound(1000,100); delay(500); }
ฟพั งกต์ชนพัริ่ ใชช้ งานสวติตชต์ OK และ SW1
ฟฟง กรช บชน sw_OK และ sw1 สตาหรบบ sw_OK
สตาหรบบ sw1
#include <popx2.h> void setup() {} void loop() { if(sw_OK()) { beep(); } }
#include <popx2.h> void setup() {} void loop() { if(sw1()) { beep(); } }
ฟฟง กรช บชน sw_OK และ sw1 ตบว อยนา งทมช -เมชชอ กดสวดต ชร OK หนชา #include <popx2.h> 2(glcd_FillSceen.ino) จอจะถรก ระบายดชว ยสม void setup() { glcdMode(2); glcd(0,0,"push OK Fill RED!"); glcd(1,0,"push SW1 Fill GREEN!"); } void loop() { if(sw_OK()) { glcdFillScreen(GLCD_RED); } else if(sw1()) { glcdFillScreen(GLCD_GREEN); } }
เขมย ว
-เมชชอ ถชา กดสวดต ชร SW1 หนชา จอจะถรก ระบายดชว ย สมแ ดง
ฟฟ ง กร ช ช บ น sw_OK_press และ รอจนกระทบชง สวดต ชรถ รก กดและปลนอ ย sw1_press สวดต ชร สตาหรบบ sw_OK_press #include <popx2.h> void setup() { glcd(0,0,“push OK “); } void loop() { sw_OK_press(); beep(); }
สตาหรบบ sw1_press #include <popx2.h> void setup() { glcd(0,0,“push SW1”); } void loop() { sw1_press(); beep(); }
บชน ถรOKก กดและปลนอ ย รอจนกระทบชงฟฟ สวดงตกรชรช OK สวดต ชร พรชอ มกบบ ขชอ ความทมชห นชา จอGLCD คตา วนา “> Push OK” #include <popx2.h> void setup() { OK(); } void loop() { }
ฟพั งกต์ชนพัริ่ ใชช้ งาน KNOB
ฟฟง กรช บชน knob knob() อนา นคนา analog(8) คนา อยรนใ นชนว ง 0-1000 รรป แบบ knob()
หมนน ปรบบ คนา 0-1000
ตบว อยนา งโปรแกรมวนอนา นคนา KNOB มา แสดงผลทมชห นชา จอGLCD อยนา งตนอ เนชชอ ง #include <popx2.h> void setup() { glcdMode(2); } void loop() { glcd(0,0,"%d ",knob()); }
ฟฟง กรช บชน knob(x) รรป แบบ knob(x); x คชอ คนา Scale หรชอ ชนว งทมชต ชอ งการ
#include <popx2.h> void setup() { glcdMode(2); } void loop() { glcd(0,0,"%d ",knob(180)); }
หนชา จอจะแสดง คนา 0-180 เพราะ ตบพง คนา สเกลเปปน 180
ฟฟง กรช บชน knob(x,y) รรป แบบ knob(x,y); x คชอ คนา Scale เรดชม ตชน y คชอ คนา Scale สนด ทชา ย
#include <popx2.h> void setup() { glcdMode(2); } void loop() { glcd(0,0,"%d ",knob(0,10)); }
หนชา จอจะแสดง คนา ตบพง แตน 0-10 เมชชอ ปรบบ KNOB
ฟพั งกต์ชนพัริ่ ควบคคุมมอเตอรต์
ฟฟง กรช น บช ขบบ มอเตอรร motor motor(CH,POW) CH 1-4 คชอ มอเตอรร 1 ถซง 4 ALL คชอ ทบงพ มอเตอรรท งบพ หมด 1,2,3 และ4 POW ความเรรว -100 ถซง 100 คนา บวก เดดน หนชา คนา ลบ ถอยหลบง
ตบว อยนา งเชนน motor (1,80); motor (2,-50); 39
ฟฟง กรช น บช หยนด การเคลชอ ช นทมช ฟฟั งกก์ ชชั่ ฟัน motor_stop สสสำหรฟั บหยยุดขฟับมอเตอรก์ ไฟตรงตสำมชช่ องททชั่กสำส หนด รร ปแบบ void motor_stop(char ch) พสำรสำมมิเตอรก์ ch ใชช้ กสำส หนดชช่ องขฟับตฟังตั้ แตช่ 1 ถถึง 4 ในกรณททชั่ ตท ช้ อง กสำรหยยุดขฟับทยุกชช่ องพรช้ อมกฟันสสำมสำรถกสสำหนดเปป็ น ALL
กรณทหยยุดมอเตอรก์ 2 ตฟัวพรช้ อมกฟัน สสำมสำรถใชช้ คสำส สฟัชั่ง ao() แทนไดช้ motor_stop(1); มอเตอรร 1 หยนด motor_stop(2); มอเตอรร 2 หยนด ao(); มอเตอรร 2 ตบว หยนด พรชอ มกบน 40
คตา สบงช ขบบ เคลชอ ช นรรป แบบฟฟง กรช น บช fd(Speed); เดดนหนชา bk(Speed); ถอยหลบง sl(Speed); หมนนตบวเลมย พ วซชาย sr(Speed); หมนนตบวเลมย พ วขวา tl(Speed); เลมย พ วซชายลชอเดมยว tr(Speed); เลมย พ วขวาลชอเดมยว ao(); หยนดมอเตอรร Speed คชอความเรรวหนนนยนตร 0-100 41
หนนน ยนตร เดดน หนชา fd(70);
motor1
motor2
หนนน ยนตรถ อย หลบง bk(70);
motor1
motor2
หนนน ยนตรห มนน ตบว เลมย พ วซชา ย sl(70);
motor1
motor2
หนน น ยนตรเ ลมย พ วซชา ย ลชอ เดมย ว tl(70);
motor1
motor2
หนนน ยนตรห มนน ตบว เลมย พ วขวา sr(70);
motor1
motor2
หนนน ยนตรเ ลมย พ วขวาลชอ เดมย ว tr(70);
motor1
motor2
ฟพั งกต์ชนพัริ่ ใชช้ งานอตินพคุตและเอาตต์พตคุ ดติจติตอล
ฟฟง กรช บชน in และ out in(CH); CH คชอ ขาทมชต นอ อนป กรณรอ ดน พนต ดดจ ดต อลอยรน การคชน คนา จะใหชค นา เปปน “0” (เทรจ ) หรชอ “1” (จรดง ) out(CH,dat); CH คชอ ขาทมชต นอ อนป กรณรเ อาตรพ นต ดดจ ดต อลอยรน dat คชอ คนา ลอจดก “1” หรชอ “0”
ใชช้ งานเซนเซอรต์ ตรวจจพับการชน (แผงวงจรสวติตชต์ ZX-01)
แผงวงจรสวดต ชร : ZX-01
-สวดต ชรถ รก กดจะใหชค าน เปปน “เทรจ ”หรชอ มม คน า เปป น 0 -สวดต ชรไ มนถ รก กดใหชค นา เปปน “จรดง ”หรชอ มมค นา เปปน 1
ตบว อยนา งโปรแกรมวนตรวจจบบ การกดแผงวงจร สวดต ชร 2 ตบว ทมชต นอ เขชา กบบ พอรรต 29(ซชา ย) และ 30 (ขวา) (beep_sound.ino) #include <popx2.h> void setup() { } void loop() { if(in(29)==0) { beep(); } if(in(30)==0) { sound(2000,300); } }
หคุนหุ่ ยนตต์หลบหลทกสติงริ่ กทดขวางจากการชน(objectAvoider.ino) การตติดตพังฮารต์ ขั้ ดแวรต์ 1. ตติดตพังเซนเซอรต์ ขั้ สวติตชต์เขช้ าททริ่ดช้านหนช้ าซช้ ายของหคุหุ่นยนตต์แลช้ วตหุ่อเขช้ ากพับ พอรต์ ต 29 2. ตติดตพังเซนเซอรต์ ขั้ สวติตชต์เขช้ าททริ่ดช้านหนช้ าขวาของหคุหุ่นยนตต์แลช้ วตหุ่อเขช้ ากพับ พอรต์ ต 30
#include <popx2.h> void setup() { OK(); } void loop() { if(in(29)==0 && in(30)==1) // ซชายชน { bk(50); delay(500); sr(50); delay(400); } else if(in(29)==1 && in(30)==0) // ขวาชน { bk(50); delay(500); sl(50); delay(400); } else if(in(29)==0 && in(30)==0) // ซชายและขวาชน { bk(50); delay(500); sl(50); delay(400); } else // ซชายและขวาไมนถรกชน { fd(50); } }
ใชช้ งานเซนเซอรต์ วดพั ระยะทาง
การมองเหรน ของหนนน ยนตร
ดระยะทางดชว ยอดน ฟราเรด GP2D120(4-32 cm)
ฟฟง กรช บชน getdist getdist(CH); CH กตา หนดเลชอ กใชชง านตบพง แตน 0-6 ขาทมชต นอ ใชชง าน A0-A6 การคชน คนา จะใหชค นา ตบพง แตน 4-32 เซนตดเ มตรทมชเ ชชชอ ถชอ ไดช
ตบว อยนา งโปรแกรมวนอนา นคนา ระยะทางมาแสดงผลทมช GLCD ทมช ตนอ เขชา กบบ พอรรต A0 โดยตรวจจบบ สดชง กมด ขวางทมต ช ตชา กวนา ระยะ 20 เซนตดเ มตร(distance.ino) #include <popx2.h> int dist; void setup() { glcdMode(2); } void loop() { dist = getdist(0); glcd(0,0,"dist= %d ",dist); if(dist < 20) { beep(); } }
หคุนหุ่ ยนตต์หลบหลทกสติริ่งกทดขวางจากการวพัดระยะ ทาง(robot_distance.ino) การตติดตพังฮารต์ ขั้ ดแวรต์ ตติดตพังเซนเซอรต์ ขั้ วดพั ระยะทางเขช้ าททริ่ดช้านหนช้ าของหคุหุ่นยนตต์แลช้ วตหุ่อเขช้ า กพับพอรต์ ต A0
#include <popx2.h> void setup() { OK(); } void loop() { int dist = getdist(0); if(dist<20) { bk(50); delay(500); sl(50); delay(400); } else { fd(50); } }
ใชช้ งานแผงวงจรตรวจจพับรหพัส ลช้ อ(Encoder)
แถบวงลชอตรวจ จบบขนาด 20 ชนอง ลชอเสชนผนา ศรนยรกลาง ขนาด 5.5 cm *ลชอหมนนครบ 1 รอบ แถบวงลชอตรวจจบบจะพบการตบดแสง 40 ครบพง(40 ส เตรป) เนชชองจากใชชวดธมการตบดแสง 2 ครบพงตนอ 1 ชนอง ดบงนบพน เคลชชอนทมชไดชตนอ 1 เสตรป
x = (πD/40) ;โดยทมช x คชอ ระยะทางทมช
x = (3.14159*5.5)/40 x = 0.432 cm
ฟฟง กรช บชน สตา หรบบ Encoder encoder(CH); ทตา หนชา ทมอ ช นา นคนา สเตรป การนบบ ของ Encoder ตามตตา แหนนง ขาทมใ ช ชชง าน CH กตา หนดเลชอ กใชชง านขาไดชเ ปปน 2,3 และ 18 การคชน คนา จตา นวนสเตรป สะสมในการนบบ ของ Encoder encoder_reset(CH); ทตา หนชา ทมรช มเ ซตคนา สเตรป การนบบ ของ Encoder ตตา แหนนง ขาทมใ ช ชชง าน CH กตา หนดเลชอ กใชชง านขาไดชเ ปปน 2,3 และ 18 การคชน คนา จตา นวนสเตรป สะสมในการนบบ ของ Encoder
ตบว อยนา งโปรแกรมทดสอบอนา นคนา Encoder ทบพง 2 ตบว โดยลชอ ดชา นซชา ยตนอ เขชา กบบ ชนอ ง 2 สนว นดชา นขวาตนอ เขชา กบบ ชนอ ง 2 #include <popx2.h> void setup() { glcdMode(2); encoder(3); encoder(2); } void loop() { int left = encoder(3); int right = encoder(2); glcd(0,0,"step: %d , %d }
",left,right);
ตบว อยนา งโปรแกรมทดสอบเดดน ตามระยะทางกตา หนดดชว ย Encoder(encoder_distance.ino) #include <popx2.h> float distance; void setup() { glcdMode(2); OK(); encoder(2); } void loop() { fd(50); while(encoder(2)<200); ao(); distance = encoder(2) * 0.432; glcdClear(); glcd(0,0,"Distance"); glcd(1,0,"%f cm",distance); while(1); }
200 สเตรป
ตบว อยนา งโปรแกรมสบชง งานหนนน ยนตรเ ดดน หนชา 100 สเตรป และพยายามเลมพย วขวาเปปน มนม 90 องศาดชว ย Encoder(encoder_spin90.ino) #include <popx2.h> void setup() { encoder(2); } void loop() { OK(); encoder_reset(2); fd(50); while(encoder(2)<100); encoder_reset(2); sr(50); while(encoder(2)<26); ao(); }
ใชช้ งานเขข็มทติศอติเลข็กทรอนติกสต์ (Compass sensor)
ใหชผลลบพธรคาน มนมอชางอดงรอบตบว 0 – 359 องศา
ฟฟง กรช บชน สตา หรบบ อนา น ทดศ ทาง
compass_read(); ทตา หนชา ทมชอ นา นคนา ทดศ ทางในชนว ง 0-359 องศา จากเขรม ทดศ อดเ ลรก ทรอนดก สร การคชน คนา เปปน ตตา แหนนง มนม ทดศ ทางอชา งอดง ตบพง แตน 0-359 -เมชชอ หมนน เซนเซอรรว นตามเขรม นาฬดก าคนา จะเพดชม ขซพน จนวนกลบบ ไปเปปน 0 อมก ครบพง หนซชง -เมชชอ หมนน เซนเซอรรว นทวนเขรม นาฬดก าคนา จะเพดชม ขซพน จนวนกลบบ ไปเปปน 0 อมก ครบพง หนซชง
ตบว อยนา งโปรแกรมทดสอบอนา นคนา จากเขรม ทดศ อดเ ลรก ทรอนดก สร(compass_read.ino) #include <popx2.h> void setup() { glcdMode(2); } void loop() { glcd(0,0,"compass = %d }
",compass_read());
ในระหวนา งโปรแกรมทตางาน ใหชท ตา การทดสอบหมนน หนน น ยนตรท งบพ ในทดศ ทาง ทวนเขรม และตามเขรม นาฬดก าพรชอ มๆสบง เกตคนา มนม ทมเช ปลมย ช นแปลง
ฟฟง กรช น บช สตา หรบบ calibrate เขรม ทดศ ใหช ทตา งานไดชถ ก ร ตชอ ง compass_scan(scanTime); ทตา หนชา ทมชป รบบ ทดศ ทางของเขรม ทดศ ใหชม มค วามแมนน ยตา มากขซพน โดยในขณะทมชฟ งฟ กรช บชน นมท พ ตา งานหนนน ยนตรค วรจะหมนน ตบว โดยรอบเพชอ ช ปรบบ ทดศ ทางรอบตบว 360 องศาอยนา งตนอ เนชชอ ง เปปน ตตา แหนนง มนม ทดศ ทางอชา งอดง scanTime รบบ คนา เวลาในการสแกนในหนนว ยมดล ลดว น ด าทม compass_factoryReset(); ทตา หนชา ทมชก ตา หนดคนา ดบพง เดดม ใหชก บบ เขรม ทดศ ใชชง านรนว มกบบ ฟฟง กรช บชน compass_scan
ตบว อยนา งโปรแกรม calibrate เขรม ทดศ อดเ ลรก ทรอนดก สร(compass_calibrate.ino) #include <popx2.h> void setup() { glcdMode(2); glcd(0,0,"Compass Calibrate!"); glcd(1,0,"press OK"); sw_OK_press(); beep(); sr(20); compass_factoryReset(); compass_scan(10000); ao(); glcdClear(); } void loop() { glcd(0,0,"compass = %d ",compass_read()); } หลบง จากการทตา calibrate ครบ 10 วดน าทมเ มชอ ช หนนน ยนตรห ยนด หมนน ตบว ใหชท ตา การทดสอบหมนน หนน น ยนตร ทบงพ ในทดศ ทางทวนเขรม และตามเขรม นาฬดก าพรชอ มๆสบง เกตคนา มนม ทมชเ ปลมชย นแปลง
ฟฟง กรช บชน สตา หรบบ กตา หนด compass_set_heading(); ทด ศ ทางอช า งอด ง ทตา หนชา ทมชก ตา หนดคนา มนม ทดศ ทางตรงหนชา ปฟจ จนบ บน เปปน 0 อชา งอดง compass_read_heading(); ทตา หนชา ทมชอ าน นคนา มนม องศาอชา งอดง การคชน คนา เปปน ตตา แหนนง มนม ทดศ ทาง อชา งอดง -เมชชอ หมนน เซนเซอรรว นตามเขรม นาฬดก าคนา จะเพดม ช ขซพน เปปน บวก จาก 0 ถซง 179 และจาก -180 กลบบ มา 0 อมก ครบพง หนซชง -เมชชอ หมนน เซนเซอรรว นทวนเขรม นาฬดก าคนา จะลดลงเปปน ลบ จาก -1 ถซง -180 และจาก -180 กลบบ มา 0 อมก ครบพง หนซชง
องศา
0
-90
90
18 0
17 9
ตบว อยนา งโปรแกรมทดสอบอนา นคนา จากเขรม ทดศ อดเ ลรก ทรอนดก สรแ บบทดศ ทาง อชา งอดง (compass_heading.ino) #include <popx2.h> void setup() { OK(); glcdClear(); glcdMode(2); compass_set_heading(); } void loop() { glcd(0,0,"head = %d ",compass_read_heading()); } ในระหวนา งโปรแกรมทตางาน ใหชท ตา การทดสอบหมนน หนน น ยนตรท งบพ ในทดศ ทาง ทวนเขรม และตามเขรม นาฬดก าพรชอ มๆสบง เกตคนา มนม ทมเช ปลมย ช นแปลง
ตบว อยนา งโปรแกรมทดสอบควบคนม ทดศ ทางเคลชชอ นทมห ช นน ยนตร (robot_compass_heading.ino)
#include <popx2.h> void setup() { OK(); compass_set_heading(); } void loop() { int angle = compass_read_heading(); if(angle>=-2 && angle<=2) { fd(60); } else if(angle<-2) { sr(60); } else if(angle>2) { sl(60); } }
-2
2
ในระหวนา งโปรแกรมทตางาน ทดลองทดสอบจบบ หนน น ยนตรห น บ หนชา ไปในทดศ ทา งอชชน ๆ หนน น ยนตรต ชอ งจะหมนน ตบว กลบบ ปรบบ ทดศ ทางกลบบ มาทมม ช ม น อชา งอดง -2 ถซง 2 องศาอชา งอดง
ใชช้ งานเซนเซอรต์ วดพั ความเขช้ มแสง (ZX-02F)
ใหชผลลบพธรตามความเขชมแสงในรรป คนาอะนาลอก
ฟฟง กรช บชน สตา หรบบ อนา นคนา อะ นาลอก
analog(CH); ทตา หนชา ทมชอ นา นคนา อะนาลอกจากเซนเซอรรใ หชค าน ผลลบพ ธรใ นชนว ง 0-1023 CH กตา หนดเลชอ กใชชง านขาไดชเ ปปน 0-6 ซซชง ตรงกบบ ขาพอรรต A0-A6 ตามลตา ดบบ การคชน คนา เปปน คนา อะนาลอกในชนว งตบพง แตน 01023
ทดสอบอหุ่านคหุ่าเซนเซอรต์ ZX-02F 2 ตพัว พรช้ อมๆกพัน การเชลืริ่อมตหุ่อขาพอรต์ ต -ตหุ่อ ZX-02F ดช้ านหนช้ าซช้ ายตหุ่อเขช้ ากพับขา A3 -ตหุ่อ ZX-02F ดช้ านหนช้ าขวาตหุ่อเขช้ ากพับขา A4
ตบว อยนา งโปรแกรมทดสอบอนา นคนา ความเขชม แสงจาก 02F(light_read.ino)
#include <popx2.h> void setup() { glcdMode(2); } void loop() { int left = analog(3); int right = analog(4); glcd(0,0,"light: %d , %d }
",left,right);
ในระหวนา งโปรแกรมทตางาน ใหชท ตา การทดสอบหบน เซนเซอรรเ ขชา หาแหลนง กตา เนดด แสงทมล ะตบว หลบง จากนบพน หบน เขชา หาแหลนง กตา เนดด แสงทบงพ ครนพ รชอ มกบน พรชอ มๆกบบ สบง เกตคนา มนม ทมเช ปลมย ช นแปลง
ZX-
ตบว อยนา งโปรแกรม หนนน ยนตรค ชน หาแสงไฟแบบ สนนม (robot_scan_fire.ino) #include <popx2.h> int REF = 900; void setup() { OK(); } void loop() { int left = analog(3); int right = analog(4); if(left>REF && right>REF) { ao(); beep(); } else if(left<REF && right>REF) { sr(60); delay(20); fd(60); delay(20); } else if(left>REF && right<REF) { sl(60); delay(20); fd(60); delay(20); } else { if(left>right) { sl(60); delay(20); fd(60); delay(20); } else { sr(60); delay(20); fd(60); delay(20); } } }
ในระหวนา งโปรแกรมทตางาน ทดลองนตา แสงไฟไปลนอ ในระยะไกลและใกลช บรดเ วนเซนเซอรรเ พชอ ช ใหชห น น ยนตรว งดช เขชา หาแสงไฟ
การใชช้ งานมอเตอรต์ ใบพพัด
ทดสอบควบคคุมปติ ด/เปติ ดมอเตอรต์ ใบพพัด การเชลืริ่อมตหุ่อขาพอรต์ ต
-ตหุ่อสายสพัญญาณมอเตอรต์ ใบพพัด เขช้ ากพับขา SV1 หรลื อตกาแหนหุ่งขาพอรต์ ต 13(ใหช้ ฝพัริ่งสายสทนก ขั้าตาลตหุ่อ ตรงกพับขพัวสท ขั้ ดกาของ SV1)
out(13,1); คลือการสพังริ่ ใหช้ มอเตอรต์ ใบพพัดหมคุน out(13,0); คลือการสพังริ่ ใหช้ มอเตอรต์ ใบพพัดไมหุ่หมคุน
ตบว อยนา งโปรแกรมทดสอบปปด /เปปด มอเตอรร ใบพบด (wind_on_off.ino) #include <popx2.h> void setup() { } void loop() { if(sw_OK()) { out(13,1); } else { out(13,0); } }
ในระหวนา งโปรแกรมทตา งาน ใหชท ตาการทดสอบดชว ยการกดปนปม OK จะทตา ใหช มอเตอรรใ บพบด หมนน