c/c++ robot simulator เรียนรู้การเขียนโปรแกรมควบคุมหุ่นยนต์ด้วยภาษา c/c++ สำหรับเด็กนักเรียนระดับประถมศึกษา , มัธยมต้น-ปลาย  
introduction
Readme
      #โปรแกรม c/c++ robot simulator จัดทำขึ้นเพื่อมุ่งหวังให้นักเรียนของผมเองได้เรียนรู้ การเขียนโปรแกรมภาษาซีเพื่อควบคุมหุ่นยนต์ ซึ่งสามารถพัฒนาทักษะด้านการเขียนโปรแกรมภาษาซีได้เป็นอย่างดี (เท่าที่ได้ทดลองใช้)
      #นักเรียนได้มีส่วนช่วยในการออกแบบ,แนวคิดการทำงาน,ช่วยในการทดสอบโปรแกรม
      #RoboMind + Scratch + Logo = c/c++ robot simulator
      #การออกแบบเน้นโครงสร้างภาษาซีแบบ Arduino ซึ่งนิยมใช้กับไมโครคอนโทรลเลอร์ที่ใช้กับหุ่นยนต์
      #Library&Function ต่าง ๆ อ้างอิงจากหุ่นยนต์ของบริษัท iNex (ไม่ได้มีส่วนได้ส่วนเสียกับเขานะครับ เพียงแต่มีหุ่นของเขาเลยต้องออกแบบให้เหมือนกัน เพื่อง่ายต่อการเขียนกับหุ่นยนต์จริงๆ ) ซึ่ง Source Code ที่เขียนจากโปรแกรมนี้ สามารถนำไปประยุกต์ใช้กับหุ่นยนต์ของ iNex (pop-bot,pop-xt) ได้
      #โปรแกรมนี้เป็นเวอร์ชันแรก อาจจะมีข้อผิดพลาดหรือบกพร่องบางประการ ต้องขออภัยด้วยครับ ถ้าพอเจอข้อผิดพลาดสามารถแนะนำ เพิ่มเติม รายงานข้อผิดพลาดที่เกิดขึ้นดังกล่าวจากการทำงานของโปรแกรมจะขอขอบคุณเป็นอย่างสูง และจะนำเอาข้อบกพร่อง ข้อผิดพลาดต่าง ๆ ไปปรับปรุงแก้ไขพัฒนาให้สมบูรณ์ยิ่งขึ้นไปครับ
      #ส่วนบทเรียนจะทยอยอัพข้อมูลเพิ่มเติม ต่อไปครับ
      #สำหรับบทเรียนและตัวอย่าง การใช้งาน ยังไม่ได้จัดหมวด สามารถหาข้อมูลเพิ่มเติมจาก เมนูรายการบทความด้านซ้ายมือนะครับ
      #เหตุผลที่ออกเวอร์ชั่น DEMO เพราะต้องการทราบผลการทำงานของโปรแกรมในสภาพแวดล้อมอื่น ๆ (ทรัพยากรใน รร.มีจำกัด) และเก็บรวบรวมข้อมูลจากปัญหา Error ต่าง ๆ , ความต้องการของผู้ใช้งาน ฯลฯ เมื่อได้ข้อมูลจนเป็นที่หน้าพอใจแล้ว จึงจะปล่อยฉบับเต็ม Full version ต่อไปครับ
      #สำหรับข้อคอมเมนท์หรือการสอบถามต่าง ๆ อาจจะตอบช้าบ้างนะครับ เพราะอาชีพครูของผม สอนทั้งวัน ดูแลนักเรียนแต่เช้ายันเย็น งานนอกเหนือจากการสอน,คำสั่งนั่นนี่ อีกมากมาย อาจจะใช้เวลานานซักหน่อยต้องขออภัยด้วยนะครับ
 
/* ขอขอบคุณทุกท่านที่ให้ความสนใจ */
ครูมนตรี อกอุ่น
ครูโรงเรียนมัธยมทับทิมสยาม04
สพม.สุรินทร์ เขต 33







บันทึกเพิ่มเติม
-เป็นโปรแกรมที่จำลองการเขียนโปรแกรมควบคุมหุ่นยนต์
-เป็นโปรแกรมช่วยฝึกการเขียนโปรแกรมแบบง่าย - ยาก
-เหมาะสำหรับเด็กที่เริ่มต้นฝึกเขียนโปรแกรม ในระดับชั้นประถมศึกษา,มัธยมศึกษาตอนต้น-ปลาย
-โปรแกรมมีลักษณะคล้ายเกมที่ให้ผู้เรียนได้ลองเขียนคำสั่งควบคุมหุ่นยนต์ โดยใช้ภาษาซีในการสั่งงาน
-สามารถสร้างสถานการณ์ต่างๆได้โดยการสร้างแผนที่และวางสิ่งกีดขวาง ต่างๆให้ผู้เรียนได้แก้ปัญหาต่างๆ โดยใช้ภาษาคอมพิวเตอร์ (ภาษาซี) ในการแก้ปัญหา
-สามารถเขียนโค๊ดภาษาซีมาตรฐาน GCC และมาตรฐาน Arduino ได้
-เรียนรู้ภาษาซีได้อย่างสนุกและเข้าใจง่าย
-ไม่จำเป็นต้องมีหุ่นยนต์จริง ๆ ก็สามารถเรียนรู้เรื่องหุ่นยนต์ได้
-
news
16กค56-> ยกเลิกระบบการใช้ KEY เพื่อเผยแพร่ให้สามารถใช้งานโดยทั่วไปได้อย่างไม่จำกัด โดยได้รับการสนับสนุนจาก INEX บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด ขอขอบคุณ คุณชัยวัฒน์ ลิ้มพรจิตรวิไล มา ณ ที่นี้ด้วย ที่ทำให้ซอฟต์แวร์ไทยได้เปิดตัวเข้าสู่วงการหุ่นยนต์ไทย และเปิดกว้างสู่โลกแห่งการเรียนรู้อย่างแท้จริง ขอขอบคุณครับ
11กค56-> งดการแจกKEYเพียงเท่านี้...
11กค56-> ฟังก์ชันการทำงานบางประเภท ที่เป็นการอำนวยความสะดวกและที่เป็นอัตโนมัติ ในโปรแกรมตัวเต็ม จะขอยังไม่เปิดเผย เนื่องจากสนามและกติกา สพฐ.ครั้งที่ 63 นี้ไม่ได้แตกต่างจากปีที่แล้วมากนัก จึงไม่ขอเปิดเผยเพราะจะไม่ทำให้เกิดการพัฒนาตัวเอง ในกระบวนการแก้ปัญหาต่าง ๆ และเพื่อให้เกิดการเรียนรู้ด้วยตนเอง การทดลอง การลองผิดลองถูก จะได้มีความคิดที่หลากหลาย เทคนิค อัลกอริทึล แต่ละคนจะไม่เหมือนกันอยู่แล้ว เหมือนบางคนกินข้าวมือซ้ายบางคนมือขวา กินข้าวก่อนกินน้ำหรือกินน้ำก่อนกินข้าว สุดท้ายแล้วก็อิ่มเหมือนกัน การเรียนการสอนหุ่นยนต์สำหรับนักเรียนอย่าพยายามบอกวิธีการเด็ก พยายามให้เด็กได้แก้ด้วยตนเองก่อน บางเทคนิควิธีเด็กทำได้ดีกว่าครูซะอีก ฝากไว้คิดนะครับ
11กค56-> เพิ่มเติมคำสั่ง keep_up(); สำหรับเก็บกระป๋อง keep_down(); สำหรับวางกระป๋อง ในเวอร์ขั่น 1.0.130708 ได้เพิ่มไว้แล้วแต่ลืมเขียนในคู่มือ Library & Function
10กค56-> เปิดให้ดาวน์โหลดภารกิจสนามการแข่งขันหุ่ยนต์อัตโนมัติ งานศิลปหัตถกรรม ครั้งที่ 63 ซึ่งจริง ๆ แล้วเป็นสนามเก่าเมื่อปีที่แล้วปรับเปลี่ยนนิดหน่อย เพิ่งออกประกาศกติกาอย่างเป็นทางการเมื่อวันที 9 กค 56 จึงได้จัดทำสนามเพื่อฝึกซ้อมให้แก้ปัญหาจากการจำลองก่อนลงมือจริง จะได้ฝึกออกแบบเส้นทางการเดินของหุ่นยนต์และกระบวนการอื่น ๆ
08กค56-> หายไปนานเลย จนลืม 55 ติดภาระกิจเรื่องโรงเรียนและเรื่องเรียนต่อ ป.โท ช่วงนี้เริ่มจะซาเรื่องงานลงหน่อย ได้ออกตัวเต็มเวอร์ชั่น 1.0.130708 สามารถใช้งานได้อย่างเต็มที่ทุกออฟชั่นเลย และช่วงนี้กำลังปรับปรุงให้มีความสามารถมากขึ้นกว่าเดิม สำหรับท่านใดที่มีความสนใจเวอร์ชั่นเต็มติดต่อผ่าน E-mail : c2robot4sim@gmail.com ได้เลย
28มค56-> ช่วงนี้ขอหยุดการอัพเดตข้อมูลจนกว่าการแข่งขันงานศิลปหัตถกรรมฯ ระดับชาติ ผ่านพ้นไปก่อน เพราะต้องเตรียมความพร้อมให้นักเรียนก่อนไปแข่งซะหน่อย
27มค56-> เพิ่มฟังก์ชัน analog(8); สำหรับอ่านสีของวัตถุด้านหน้าหุ่นยนต์หรือเมื่อถูกชน

วันศุกร์ที่ 18 มกราคม พ.ศ. 2556

ชุดคำสั่ง Library && Function


ชุดคำสั่ง Library && Function โปรแกรม c/c++ robot simulator
Function Details
    Sound ฟังก์ชันและชุดคำสั่งสำหรับสร้างเสียงเพื่อขับออกลำโพง
 void beep();  สร้างเสียงบิ๊บ
 void sound(int freq,int t);  สร้างเสียงด้วยระดับความถี่เสียง freq และเวลา t มิลลิวินาที
 void keylow(char k, int t);  สร้างเสียงต่ำตัวโน๊ตต่าง ๆ และเวลา t มิลลิวินาที
 void keymid(char k, int t);  สร้างเสียงกลางตัวโน๊ตต่าง ๆ และเวลา t มิลลิวินาที
 void keyheigh(char k, int t);  สร้างเสียงสูงตัวโน๊ตต่าง ๆ และเวลา t มิลลิวินาที
   รูปแบบการใช้งาน
   keylow('d',500);      //เสียงโดต่ำ นาน 500 มิลลิวินาที

'd' = โด 's' = ซอล
'r' = เร 'l' = ลา
'm' = มี 't' = ที
'f' = ฟา
   System ฟังก์ชันและชุดคำสั่งสำหรับการหน่วงเวลาและหยุดการทำงานของระบบหุ่นยนต์
 void sleep(int t);  หน่วงเวลา t มิลลิวินาที
 void system_stop();  หยุดการทำงานของหุ่นยนต์ทั้งระบบ
   servo ฟังก์ชันและชุดคำสั่งสำหรับขับเซอร์โวมอเตอร์
 void servo(int i,int j);  * ยังไม่ใช้งาน
   motor ฟังก์ชันและชุดคำสั่งสำหรับขับมอเตอร์ไฟกระแสตรง หรือ ควบคุมล้อของหุ่นยนต์จำลอง
 void motor(int i,int power);  ขับมอเตอร์ช่อง i ด้วยพลังงาน power
   i = 1 มอเตอร์ซ้าย 2 มอเตอร์ขวา
   power มีค่าเป็น - ถอย , มีค่าเป็น + เดินหน้า
 void ao();  หยุดขับมอเตอร์ทุกช่อง
 void motor_stop(int a);  หยุดขับมอเตอร์ช่องที่ a
   เช่น    motor_stop(1);  หยุดมอเตอร์ด้านซ้าย
            motor_stop(2);  หยุดมอเตอร์ด้านขวา
            motor_stop(0);  หยุดมอเตอร์ทั้งสองข้าง
            motor_stop(ALL);  หยุดมอเตอร์ทั้งสองข้าง
 void robot_go(byte p,int t);  ขับเคลื่อนหุ่นยนต์จำลอง ด้วยพลังงาน p และ เวลา t มิลลิวินาที
 void fd(int p);  ขับมอเตอร์หรือหุ่นยนต์เดินหน้าด้วยพลังงาน p
 void bk(int p);  ขับมอเตอร์หรือหุ่นยนต์ถอยหลังด้วยพลังงาน p
 void tl(int p);  ขับมอเตอร์หรือหุ่นยนต์เลี้ยวซ้ายแบบหยุดล้อซ้าย ด้วยพลังงาน p
 void tr(int p);  ขับมอเตอร์หรือหุ่นยนต์เลี้ยวขวาแบบหยุดล้อขวา ด้วยพลังงาน p
 void sl(int p);  ขับมอเตอร์หรือหุ่นยนต์เลี้ยวซ้ายแบบหมุน ด้วยพลังงาน p
 void sr(int p);  ขับมอเตอร์หรือหุ่นยนต์เลี้ยวขวาแบบหมุน ด้วยพลังงาน p
 void fd2(int a,int b);  ขับมอเตอร์เดินหน้า ด้วยพลังงาน a,b (a คือทางซ้าย b คือทางขวา)
 void bk2(int a,int b);  ขับมอเตอร์ถอยหลัง ด้วยพลังงาน a,b (a คือทางซ้าย b คือทางขวา)
   Input analog ฟังก์ชันและชุดคำสั่งสำหรับอ่านค่าจากอินพุตอะนาลอกที่ต่อกับอุปกรณ์ตัวตรวจจับและปุ่มสวิตซ์
 int analog(int ch);   อ่านค่าจากอินพุตอะนาลอกที่ต่อกับอุปกรณ์ตัวตรวจจับช่องที่ ch
   ch มีค่าตั้งแต่ 0 - 7 เป็น sensor สำหรับอ่านพื้นสนาม
   ch มีค่า 8 เป็น sensor สำหรับอ่านค่าสีของวัตถุที่ถูกหุ่นชนด้านหน้า
 int sw1();  อ่านค่าจากการกดปุ่ม sw1
    คืนค่า 1 เมื่อมีการกดสวิตซ์ , คืนค่า 0 เมื่อไม่มีการกดสวิตซ์
 int sw2();  อ่านค่าจากการกดปุ่ม sw2
    คืนค่า 1 เมื่อมีการกดสวิตซ์ , คืนค่า 0 เมื่อไม่มีการกดสวิตซ์
 int sw3();  อ่านค่าจากการกดปุ่ม sw3
     คืนค่า 1 เมื่อมีการกดสวิตซ์ , คืนค่า 0 เมื่อไม่มีการกดสวิตซ์
 void sw1_press();  เป็นฟังก์ชันวนซ้ำจนกว่าจะมีการกดปุ่มหรือรอจนกว่ามีการกดปุ่ม sw1
 void sw2_press();  เป็นฟังก์ชันวนซ้ำจนกว่าจะมีการกดปุ่มหรือรอจนกว่ามีการกดปุ่ม sw2
 void sw3_press();  เป็นฟังก์ชันวนซ้ำจนกว่าจะมีการกดปุ่มหรือรอจนกว่ามีการกดปุ่ม sw3
   lcd ฟังก์ชันและชุดคำสั่งสำหรับสร้างแสดงข้อความ ตัวเลข ทางหน้าจอ LCD
 void lcd(string str,arg[] list);   รูปแบบการใช้งาน

   lcd ("Hello robot"); 
  // แสดงข้อความ Hello robot ออกทางหน้าจอ LCD

   lcd ("Value = %d" , i ); 
  // แสดงข้อความ Value = (ค่าของตัวแปร i ) ออกทางหน้าจอ LCD

   lcd ("Value1 = %d Value2 = %d " , i ,j ); 
   // แสดงข้อความ
       Value1 = (ค่าของตัวแปร i ) Value2 = (ค่าของตัวแปร j )

  %d หรือ %D  แสดงค่าตัวเลขจำนวนเต็ม

  %f หรือ %F  แสดงค่าตัวเลขทีมีจุดทศนิยม

  %.2f หรือ %.2F  แสดงค่าตัวเลขทีมีจุดทศนิยม 2 ตำแหน่ง


อื่น ๆ ยังคิดไม่ออกครับ อิอิ..

3 ความคิดเห็น:

  1. ไม่ระบุชื่อ24 กันยายน 2556 23:31

    A8 ตรวจสิ่งของ ใช้ยังไงหรอ

    ตอบลบ
  2. ดีมากครับได้นำเอาโปรแกรมนี้ไปใช้สอนนักเรียนในเรื่องการเขียนโปรแกรม

    ตอบลบ
  3. เมื่อไหร่จะใช้ servo ได้ครับ

    ตอบลบ

...