บทที่ 6 IPST-BOT กับการหลบหลีก สิ่งกีดขวางแบบสัมผัส

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
1. ประกอบโครงสร้างหุ่นยนต์. (ใช้เวลาประมาณ 2 ชั่วโมง)
Advertisements

การเขียนผังงาน (Flowchart)
โปรแกรมภาษาโลโก (logo)
โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
โปรแกรมควบคุมหุ่นยนต์
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
COE : Microcat.
Computer Programming 1 LAB Test 3
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
Introduction to C Programming
คำสั่ง while และ คำสั่ง do..while
Control Statement if..else switch..case for while do-while.
Control Statement for while do-while.
ขั้นตอนการฝึกความคิดด้านการคิดวิเคราะห์
COE : Microcat. ผู้พัฒนาโครงการ นาย สราวุฒิ สมญาติ อาจารย์ที่ปรึกษา อ. บุญฤทธิ์ กู้เกียรติ กูล อาจารย์ร่วมประเมิน อ. วสุ เชาว์พานนท์ อ. ดารณี หอมดี
Lecture 4: ทางเลือก, เงื่อนไขของทางเลือก
Lecture 13: ฟังก์ชันเรียกตัวเอง
คำสั่งพิเศษที่นิยมใช้ใน โปรแกรม. #include double pow(2,5)  ยกกำลัง int num1,num2,Result; num1=2; num2=5; Result=double pow(2,5); Printf(“%d”,Result);
“ความรู้เรื่องกฎจราจร” สถานีตำรวจภูธรอำเภอหาดใหญ่
การควบคุมทิศทางการทำงาน
เตรียมการก่อนเขียนโปรแกรมควบคุมหุ่นยนต์เดินตามเส้น
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
Computer Programming 1 LAB # 6 Function.
LAB # 5 Computer Programming 1 1.
LAB # 4.
บทที่ 2 หลักการแก้ปัญหา
Week 15 C Programming.
คำสั่งเพื่อการกำหนดเงื่อนไข
โครงสร้างภาษาซี.
Ultrasonic sensor.
ฟังก์ชั่น function.
การสร้าง Random ตัวเลขซ้ำและไม่ซ้ำ การเรียกดูไฟล์ในโฟลเดอร์ Function
คำสั่งควบคุมการทำงาน
Lecture no. 10 Files System
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
การใช้ภาษาซี มาสั่งงานผ่านพอร์ตพริ้นเตอร์
แผงวงจรพ่วง (Peripheral Board)
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
คำสั่งควบคุมการทำงาน
รูปแบบ if-else if if (เงื่อนไข1) {
การทดลองที่ 9 Loops (วงวน) การทดลองที่ 9 Loops (วงวน)
Chapter 4 คำสั่งควบคุมทิศทาง
การใช้ฟังก์ชั่นทาง EXCEL
การสร้างฟังก์ชั่นเพื่อพัฒนาโปรแกรม Interactive C
ฟังก์ชั่น digital ทำหน้าที่อ่านค่าลอจิกจากเซนเซอร์
ครูรัตติยา บุญเกิด.
หุ่นยนต์สุดฮิต 35 แบบ สร้างเองได้ทันที
การใช้บอร์ดควบคุมสำหรับ Robot 35 in 1
การควบคุมมอเตอร์ด้วยอุปกรณ์อิเล็กทรอนิกส์
การควบคุมหุ่นยนต์โดยใช้ตัวตรวจจับ
การต่อวงจรบนแผ่นโพโตบอร์ด
หลักการโปรแกรมเบื้องต้น
การแก้ปัญหาด้วยคอมพิวเตอร์
Basic Stamp Microcontroller
การประมวลผลสายอักขระ
โปรแกรมประยุกต์อื่นๆ
Debugging in VC Computer Programming for Engineers.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
บทที่ 5 ขับเคลื่อนหุ่นยนต์ IPST-BOT
บทที่ 2 การวิเคราะห์อัลกอริทึม
หลักการเคลื่อนที่ของหุ่นยนต์
บทที่ 9 การสร้างและใช้ งานฟังก์ชั่น C Programming C-Programming.
บทที่ 7 เงื่อนไขในภาษาซี
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
บทที่ 3 การพัฒนาโปรแกรมภาษา C สำหรับชุดหุ่นยนต์ IPST-BOT
ผังงาน (Flow chart).
การทำซ้ำ Pisit Nakjai.
หลักการโปรแกรมเบื้องต้น
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์ สัปดาห์ที่ 5 การเขียนโปรแกรมแบบทางเลือก การเขียนโปรแกรมแบบวนซ้ำ.
ภาษา C เบื้องต้น.
ใบสำเนางานนำเสนอ:

บทที่ 6 IPST-BOT กับการหลบหลีก สิ่งกีดขวางแบบสัมผัส 221 บทที่ 6 IPST-BOT กับการหลบหลีก สิ่งกีดขวางแบบสัมผัส

การทดลองที่ 3 (ตรวจจับการชนด้วยสวิตซ์ 1 ตัว) 222 การทดลองที่ 3 (ตรวจจับการชนด้วยสวิตซ์ 1 ตัว) การเชื่อมต่อทางฮาร์ดแวร์ ต่อ ZX-SWITCH จากช่อง LOW เข้ากับพอร์ต PA0

223 โปรแกรมทดสอบหุ่นยนต์ที่ 3 (switch1_test.c) อ่านค่าสถานะการทำงานของแผงสวิตช์ซึ่งต่อกับขาพอร์ต PA0 #include <sleep.h> #include <in_out.h> #include <lcd.h> void main() { while(1) lcd("Switch1 = %d ",in_a(0)); sleep(10); }

การทดลองที่ 4 (หุ่นยนต์หลบหลีกสิ่งกีดขวาง) 224 การทดลองที่ 4 (หุ่นยนต์หลบหลีกสิ่งกีดขวาง) หลักการทำงาน 1. ในกรณีที่ไม่เกิดการชน หุ่นยนต์จะเคลื่อนที่ไปข้างหน้าอย่างต่อเนื่อง 2. ในกรณีที่พบว่าเกิดการชน จะมีเสียงเตือนดัง 1 ครั้ง จากนั้นหุ่นยนต์จะเคลื่อนที่ถอยหลังแล้วเปลี่ยนทิศทางการเคลื่อนที่มาทางซ้าย

การเชื่อมต่อทางฮาร์ดแวร์ 225 การเชื่อมต่อทางฮาร์ดแวร์ 1. ต่อ ZX-SWITCH จากช่อง LOW เข้ากับพอร์ต PA0 2. ต่อ ZX-SPEAKER เข้ากับพอร์ต PB4

โปรแกรมทดสอบหุ่นยนต์ที่ 4 (robo_bumper1.c) หุ่นยนต์หลบหลีกสิ่งกีดขวาง 226 โปรแกรมทดสอบหุ่นยนต์ที่ 4 (robo_bumper1.c) หุ่นยนต์หลบหลีกสิ่งกีดขวาง #include <motor.h> #include <sleep.h> #include <in_out.h> #include <lcd.h> #include <sound.h> #define POW 70 void forward(unsigned int delay) { motor(1,POW); motor(2,POW); sleep(delay); } void backward(unsigned int delay) motor(1,-POW); motor(2,-POW); void turn_left(unsigned int delay) void main() { char mid; lcd("Press SW1"); sw1_press(); while(1) mid = in_a(0); if(mid==0) beep_b(4); backward(1000); turn_left(800); } else forward(10);

การทดลองที่ 5 (ตรวจจับการชนด้วยสวิตช์ 2 ตัว) 227 การทดลองที่ 5 (ตรวจจับการชนด้วยสวิตช์ 2 ตัว) การเชื่อมต่อทางฮาร์ดแวร์ 1. ต่อ ZX-SWITCH ตัวที่ 1 จากช่อง LOW เข้ากับพอร์ต PA0 2. ต่อ ZX-SWITCH ตัวที่ 2 จากช่อง LOW เข้ากับพอร์ต PA1

228 โปรแกรมทดสอบหุ่นยนต์ที่ 5 (switch2_test.c) ทดสอบการทำงานของแผงสวิตช์ 2 ตัวซึ่งต่อกับขาพอร์ต PA0 และ PA1 #include <sleep.h> #include <in_out.h> #include <lcd.h> void main() { while(1) lcd("Switch1 = %d #nSwitch2 = %d", in_a(0), in_a(1)); sleep(10); }

การทดลองที่ 6 (หุ่นยนต์หลบหลีกสิ่งกีดขวางจากตัวตรวจจับการชน 2 ตัว) 229 การทดลองที่ 6 (หุ่นยนต์หลบหลีกสิ่งกีดขวางจากตัวตรวจจับการชน 2 ตัว) หลักการทำงาน 1. ในกรณีที่หุ่นยนต์ไม่พบการชน หุ่นยนต์จะเคลื่อนที่ไปข้างหน้าอย่างต่อเนื่อง 2. กรณีที่หุ่นยนต์พบการชนของแผงวงจรสวิตช์ด้านซ้าย หุ่นยนต์จะส่งเสียงสัญญาณดัง 1 ครั้ง จากนั้นหุ่นยนต์เคลื่อนที่ถอยหลัง แล้วทำการเลี้ยวขวา 3. กรณีที่หุ่นยนต์พบการชนของแผงวงจรสวิตช์ด้านขวา หุ่นยนต์จะส่งเสียงสัญญาณดัง 1 ครั้ง จากนั้นหุ่นยนต์เคลื่อนที่ถอยหลัง แล้วทำการเลี้ยวซ้าย 4. กรณีที่หุ่นยนต์พบการชนของแผงวงจรสวิตช์ทั้งสองด้าน หุ่นยนต์จะส่งเสียงสัญญาณดัง 1 ครั้งเช่นกัน จากนั้นหุ่นยนต์เคลื่อนที่ถอยหลัง แล้วทำการเลี้ยวซ้าย

การเชื่อมต่อทางฮาร์ดแวร์ 230 การเชื่อมต่อทางฮาร์ดแวร์ 1. ต่อ ZX-SWITCH ตัวที่ 1 จากช่อง LOW เข้ากับพอร์ต PA0 2. ต่อ ZX-SWITCH ตัวที่ 2 จากช่อง LOW เข้ากับพอร์ต PA1 3. ต่อ ZX-SPEAKER เข้ากับพอร์ต PB4

231 โปรแกรมทดสอบหุ่นยนต์ที่ 6 (robo_bumper2.c) หุ่นยนต์หลบหลีกสิ่งกีดขวางโดยใช้ตัวตรวจจับการชน 2 ตัว #include <motor.h> #include <sleep.h> #include <in_out.h> #include <lcd.h> #include <sound.h> #define POW 70 void forward(unsigned int delay) { motor(1,POW); motor(2,POW); sleep(delay); } void backward(unsigned int delay) motor(1,-POW); motor(2,-POW); void turn_left(unsigned int delay) void turn_right(unsigned int delay) { motor(1,POW); motor(2,-POW); sleep(delay); } void main() char left,right; lcd("Press SW1"); sw1_press(); while(1) left = in_a(0); right = in_a(1); if(left==1 && right==1) forward(10); else if(left==0 && right==1) beep_b(4); backward(1000); turn_right(800); else if(left==1 && right==0) { beep_b(4); backward(1000); turn_left(800); } else if(left==0 && right==0) turn_left(1500);

การทดลองที่ 7 (หุ่นยนต์หลบหลีกสิ่งกีดขวางด้วยการชนแบบสุ่มทิศทาง) 232 การทดลองที่ 7 (หุ่นยนต์หลบหลีกสิ่งกีดขวางด้วยการชนแบบสุ่มทิศทาง) ฟังก์ชันสุ่มค่าตัวเลข rand() ฟังก์ชั่นสุ่มค่าตัวเลข ตั้งแต่ 0 ถึง 32767 หลักการทำงาน 1. ในกรณีที่หุ่นยนต์ไม่พบการชน (ไม่พบสิ่งกีดขวาง) หุ่นยนต์จะเคลื่อนที่ไปข้างหน้า 2. เมื่อหุ่นยนต์ตรวจพบว่าที่ด้านใดด้านหนึ่งหรือทั้งสองด้านพร้อมกัน จะส่งเสียงสัญญาณ 1 จังหวะ จากนั้นหุ่นยนต์เคลื่อนที่ถอยหลัง แล้วทำการสุ่มค่าเพื่อตัดสินใจเลือกทิศทางในการเลี้ยว

การเชื่อมต่อทางฮาร์ดแวร์ 233 การเชื่อมต่อทางฮาร์ดแวร์ 1. ต่อ ZX-SWITCH ตัวที่ 1 จากช่อง LOW เข้ากับพอร์ต PA0 2. ต่อ ZX-SWITCH ตัวที่ 2 จากช่อง LOW เข้ากับพอร์ต PA1 3. ต่อ ZX-SPEAKER เข้ากับพอร์ต PB4

234 โปรแกรมทดสอบหุ่นยนต์ที่ 7 (robo_bumper3.c) หุ่นยนต์หลบหลีกสิ่งกีดขวางโดยใช้วิธีการสุ่มทิศทาง #include <motor.h> #include <sleep.h> #include <in_out.h> #include <lcd.h> #include <sound.h> #define POW 70 void forward(unsigned int delay) { motor(1,POW); motor(2,POW); sleep(delay); } void backward(unsigned int delay) motor(1,-POW); motor(2,-POW); void turn_left(unsigned int delay) void turn_right(unsigned int delay) { motor(1,POW); motor(2,-POW); sleep(delay); } void main() char left,right; lcd("Press SW1"); sw1_press(); while(1) left = in_a(0); right = in_a(1); if(left==0 || right==0) beep_b(4); backward(1000); if(rand()%2==1) turn_left(800); else { turn_right(800); } forward(10);