POP-BOT02

Page 1

ชุดที่ 2

POP-BOT

Arduino compatible robot kit


การขับเคลื่อน POP-BOT


มอเตอร์กระแสตรง (DC MOTOR)


M

-

M

+

BATTERY

+

-

BATTERY


ชุดเฟื องขับมอเตอร์อตั ราทด 48:1


ภายในชุดเฟื องขับมอเตอร์


การคํานวณอัตราทด

1

2

3

4

5

5 28 ฟนั 4 28 ฟนั 3 36 ฟนั 2 36 ฟนั × × × = 48.83 ∶ 1 ั ั ั ั 4 17 ฟน 3 17 ฟน 2 9 ฟน 1 8 ฟน


การกําหนดทิศทางของมอเตอร์

M

-

M

+

BATTERY

+

-

BATTERY


ไอซีขบั มอเตอร์ควบคุมด้วย POP-168

Di3 Di5 Di6 Di9


ทดสอบหุ่นยนต์เดินหน้ า void setup(){ Forward(255); } void Forward(int speed){ analogWrite(3,speed); digitalWrite(5,LOW); analogWrite(6,speed); digitalWrite(9,LOW); }

ปรับความเร็วมอเตอร์ซา้ ย ให้มอเตอร์ลอจิก “0” ปรับความเร็วมอเตอร์ขวา ให้มอเตอร์ลอจิก “0”


ตัวอย่างโปรแกรมในภาษา C/C++สําหรับ POP-BOT #include <popbot.h> void setup() { } void loop() { } popbot.h คือไลบรารีหลักในการพัฒนาหุ่นยนต์ POP-BOT

setup คือฟั งก์ ชั่นทีจ่ ะทํางานเพียงครั้งเดียวหลังจากโปรแกรมเริ่มทํางาน

loop คือฟั งก์ ชั่นทีจ่ ะทํางานวนซํ้าหลายครั้ง โดยจะเริ่มทํางานหลังจากทํางานใน ฟังก์ ชั่น setup เสร็จ


ทดสอบเคลื่อนที่ไปและกลับ


ทดสอบเคลื่อนที่ไปและกลับ



กลุ่มฟังก์ชนขั ั ่ บมอเตอร์ไฟตรง ฟั งก์ ช่ัน motor : สําหรั บขับมอเตอร์ ไฟตรง รู ปแบบ void motor(char ch,int pow)

พารามิเตอร์

ใช้ กาํ หนดช่ องขับตัง้ แต่ 1 ถึง 2 pow ใช้ กา ํ หนดขนาดกําลังขับ -100 ถึง 100 ch

•กรณีขับด้ วยกําลัง 1 ถึง 100 ไฟสถานะประจําช่ องติดเป็ นสีเขียว •กรณีขับด้ วยกําลัง -1 ถึง -100 ไฟสถานะประจําช่ องติดเป็ นสีแดง(ทิศการหมุน ตรงข้ ามกับขับด้ วยกําลังเป็ นบวก)

การคืนค่ า

ไม่ มี


กลุ่มฟั งก์ชนขั ั ่ บมอเตอร์ไฟตรง(ต่อ) ฟั งก์ ชั่น motor_stop : สําหรั บหยุดขับมอเตอร์ ไฟตรงตาม ช่ องที่กาํ หนด รู ปแบบ void motor_stop(char ch)

พารามิเตอร์ ch ใช้ กาํ หนดช่ องขับตัง้ แต่ 1 ถึง 2 ในกรณีท่ ตี ้ อง การหยุดขับทุกช่ องพร้ อมกันสามารถกําหนดเป็ น ALL การคืนค่ า ไม่ มี


คําสังขั ่ บเคลื่อนมอเตอร์ motor(1,100); มอเตอร์ 1 เดินหน้าความเร็ว 100 เปอร์เซ็นต์ motor(2,-50); มอเตอร์ 2 ถอยหลัง ความเร็ว 50 เปอร์เซ็นต์ Speed คือค่าความเร็วมีค่าตัง้ แต่ -100 ถึง 100 motor_stop(ALL)

หยุดมอเตอร์ทงั ้ สองตัว

motor_stop(1)

หยุดมอเตอร์ 1

motor_stop(2)

หยุดมอเตอร์ 2




ไลบรารี่สาํ หรับ POP-BOT


คําสังสร้ ่ างเสียง

ฟั งก์ ช่ ันกําเนิดเสียงอย่ างง่ าย 500 Hz นาน 10 มิลลิวินาที

beep : ทําหน้ าที่กําเนิดเสียงความถี่

void beep(void);

ฟั งก์ ช่ันกําเนิดเสียงความถี่ใดๆ sound : ทําหน้ าที่กําเนิดเสียง ความถี่ ตามช่วงเวลาที่กําหนด void sound(int freq,int time); พารามิ เตอร์ freq ใช้ กําหนดค่าความถี่คา่ สัญญาณเสียง หน่วยมิลลิวินาที

time ใช้ กําหนดช่วงเวลาในการกําเนิดสัญญาณเสียงใน


#include <popbot.h> void setup(){ } void loop(){ beep(); sleep(1000); }


#include <popbot.h> void setup(){ } void loop(){ sound(1200,500); sleep(1000); }


การใช้งานโมดูล LCD

ต่อเข้ากับขา 16/A2


ฟั งก์ชนควบคุ ั่ มการแสดงผลที่โมดูล LCD หรื อ LCD : แสดงข้ อความที่โมดูล LCD แบบ 16 ตัว อักขระ 2 บรรทัด รู ปแบบ void lcd(char *p,…); พารามิเตอร์ p ใช้ กาํ หนดรู ปแบบการแสดงผลที่โมดูล LCD โดยสามารถกําหนดรู ปแบบการแทรกสัญลักษณ์ พเิ ศษเพื่อ ร่ วมแสดงผลค่ าข้ อมูลตัวเลขชนิดต่ างๆได้ lcd


รหัสบังคับ %c หรือ %C %d หรือ %D %l หรือ %L %f หรือ %F #c #n

การทํางาน แสดงผลอักขระ 1 ตัว แสดงผลตัวเลขฐานสิบช่ วง -32,768 ถึง +32,767 แสดงผลตัวเลขฐานสิบช่ วง -2,147,483,648 ถึง +2,147,483,647 แสดงผลตัวเลขจํานวนจริงทศนิยม 3 หลัก คีย์คาํ สั่งพิเศษเพื่อสั่งเคลียร์ ข้อความก่ อน แสดงผลในครัง้ ถัดไป คีย์คาํ สั่งพิเศษเพื่อนําข้ อความไปแสดงผลใน บรรทัดที่ 2(บรรทัดล่ าง)


แสดงข้อความ “Hello World!” #include <popbot.h> void setup(){ lcd("Hello World!"); } void loop(){ }


แสดงผลลัพธ์เมื่อตัวอักขระติดกันเกิน 16 ตัวอักษร #include <popbot.h> void setup(){ lcd("abcdefghijklmnopqrstuvwxyz"); } void loop(){ }


แสดงผลลัพธ์ค่าข้อมูลตัวเลขจํานวนเต็ม(int) #include <popbot.h> int x=158; void setup(){ } void loop(){ lcd("Value: %d ",x); }


แสดงตัวอย่างโปรแกรมนับค่าทุกๆ 1 วินาที #include <popbot.h> int i=0; void setup() { } void loop() { lcd("Count: %d ",i); sleep(1000); i++; }


#include <popbot.h> void setup(){ } void loop(){ lcd("Sawaddee#nThailand"); }


แผงวงจรสวิตช์: ZX-SWITCH

คุณสมบัตทิ างเทคนิค

•ถ้ าสวิตช์ ถูกกดจะอ่ านค่ าข้ อมูลได้ เป็ นลอจิก “0” พร้ อมกับไฟแสดงสถานะติดสว่ าง •ถ้ าสวิตช์ ไม่ ถูกกดจะอ่ านค่ าข้ อมูลได้ เป็ นลอจิก “1”


ฟั งก์ ช่ัน in : สําหรั บอ่ านค่ าสัญญาณแบบดิจต ิ อลจากขาพอร์ ตใดๆของ บอร์ ดควบคุมหลัก รู ปแบบ char in(char _bit);

พารามิเตอร์ _bit ใช้ กาํ หนดตําแหน่ งหมายเลขพอร์ ตที่ ต้ องการติดต่ อ การคืนค่ า ฟั งก์ ช่ ันจะทําการคืนค่ าสัญญาณดิจติ อลของ ตําแหน่ งขาพอร์ ตที่อ่านซึ่งอาจมีค่าเป็ น 0 หรื อ 1 เท่ านัน้


ต่อ ZX-SWITCH เข้ากับพอร์ต 17/A3


แสดงค่าสถานะการกดสวิตช์ที่โมดูล LCD #include <popbot.h> void setup(){ } void loop(){ lcd("Switch1: %d ",in(17)); }


โมดูลวัดระยะทางแบบอินฟราเรด: GP2D120

คุณสมบัตหิ ลัก

•ทํางานที่ไฟเลีย้ ง 5 โวลต์ •วัดระยะทางใช่ วงตัง้ แต่ 4 ถึง 32 เซนติเมตร


หลักการทํางานของ GP2D120


ไลบรารีและชุดคําสั่งทีแ่ นะนํา ไลบรารี gp2d120_lib.h เป็ นไลบรารี ท่ บี รรจุชุดคําสั่งเรี ยกอ่ านค่ าระยะทางจาก โมดูล GP2D120 ก่ อนเรี ยกใช้ งานฟั งก์ ช่ ันที่บรรจุอยู่ภายใน ผู้พัฒนาจะต้ องทําการผนวกไฟล์ ไลบรารี ไว้ ท่ ตี อนต้ นของ โปรแกรมภาษา C ด้ วยคําสั่ง #include <gp2d120_lib.h>


ฟั งก์ ช่ัน getdist : อ่ านค่ าระยะทางในหน่ วยเซนติเมตรจากโมดูล

GP2D120 ซึ่งค่ าที่มีความเชื่อถือได้ จะมีค่าตัง้ แต่ 4 ถึง 32 เซนติเมตร รู ปแบบ

unsigned int getdist(char adc_ch)

พารามิเตอร์ adc_ch ใช้ กาํ หนดขาพอร์ ตที่ต้องการในช่ วง 0 ถึง 6 จากพอร์ ต ADC0 ถึง ADC6 ตามลําดับ การคืนค่ า ฟั งก์ ช่ ันจะทําการคืนค่ าข้ อมูลระยะทางในหน่ วย เซนติเมตร


ต่อ GP2D120 เข้ากับพอร์ต 19/SCL/A5


#include <popbot.h> #include <gp2d120_lib.h> unsigned int dist; void setup(){ } void loop(){ dist = getdist(3); if(dist>=4 && dist<=32){ lcd("Distance: %d cm ",dist); } else{ lcd("Out of Range!"); } sleep(100); }


ติดตัง้ ด้านหน้ า หุ่นยนต์เพื่อ ตรวจจับการชน


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


การตรวจสอบเพื่อเคลื่อนที่ตามเส้น




การใช้งานเซอร์โวมอเตอร์


ฟั งก์ ช่ัน servo : กําหนดตําแหน่ งเซอร์ โวมอเตอร์ โดยเมื่อใช้ งานกับรุ่ น

มาตรฐานจะทําให้ หมุนไปยังตําแหน่ ง 0 ถึง 180 องศาได้ และถ้ าใช้ งาน กับรุ่ นปรับแต่ งจะทําให้ หมุนในทิศทางใดทิศทางหนึ่งและมีผลต่ อ อัตราเร็วในการหมุน หรืออาจหยุดนิ่ง

รู ปแบบ void servo(unsigned char _ch ,unsigned int _pos);

พารามิเตอร์

_ch ใช้ กาํ หนดช่ องขับที่ต่อใช้ งานมีค่าตัง้ แต่ 7 ถึง 8 _pos ใช้ กาํ หนดตําแหน่ งการขับของเซอร์ โวมอเตอร์


ฟั งก์ ชั่น servo_stop : ปิ ดการขับเซอร์ โวมอเตอร์ ทก ุ ช่ องพร้ อมกัน

รู ปแบบ void servo_stop(void);


ทดสอบขับเซอร์โวมอเตอร์ช่อง 0 หมุนไปมาระหว่าง ตําแหน่ ง 20 และ 60 ทิศทางทุกๆ 2 วินาที #include <popbot.h> void setup(){ } void loop(){ servo(0,20); sleep(2000); servo(0,60); sleep(2000); }


กฤษดา ใจเย็น บริษทั อินโนเวตีฟ เอ็กเพอริเมนต์ จํากัด 3133/53 ซอยสุขมุ วิท 101/2 ถ.สุขมุ วิท แขวงบางนา เขตบางนา กรุงเทพฯ 10260 โทรศัพท์ 02-7477001-4 โทรสาร 02-7477005

www.inex.co.th Email :

kritsada@inex.co.th kritsadaj@msn.com


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.