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); สำหรับอ่านสีของวัตถุด้านหน้าหุ่นยนต์หรือเมื่อถูกชน

วันอาทิตย์ที่ 20 มกราคม พ.ศ. 2556

การสร้าง map / สนาม / ภารกิจด้วยตัวเอง


การสร้าง map / สนาม / ภารกิจด้วยตัวเอง
                 ในบทนี้จะกล่าวถึงวิธีการสร้าง map / สนาม / ภารกิจด้วยตัวเอง จากโปรแกรมวาดรูปทั่วไป ตัวอย่างนี้จะยกตัวอย่างการสร้างสนามจากโปรแกรม Microsoft Paint มาเริ่มกันเลยนะครับ
1. เปิดโปรแกรม Microsoft Paint ขึ้นมาจากนั้นกำหนดความกว้างความสูงตามต้องการ โดยเลือกเมนู Paint -> Properties ดังรูปด้านล่างนี้

ในตัวอย่างนี้จะขอกำหนดความกว้าง 800 pixels ความสูง 500 pixels

เลือกดินสอ Pencil -> Brushes แบบที่ 1 -> Size เลือกขนาดความหนาที่ต้องการ -> เลือกสีดำ (สำหรับสร้างเส้นสีดำ)

ลงมือวาดสนามตามแต่จินตนาการ

ต่อไปเป็นขั้นตอนการบันทึก เลือกคำสั่ง Save as -> PNG picture

ตั้งชื่อสนามที่ต้องการแล้วคลิกที่ปุ่ม Save

กลับมาที่โปรแกรม c/c++ robot simulator เลือกคำสั่ง Load map as...

เลือก map ที่สร้างแล้วคลิกปุ่ม Open

จากได้ดังรูปด้านล่าง แล้วทำการหยับ จับ วาง หุ่นยนต์ วัตถุ ได้ตามต้องการ

ต่อไปทำการบันทึกการจัดวางตำแหน่งของหุ่นยนต์ จากเมนู Save Position in map ...

การตั้งชื่อให้ตั้งชื่อเดียวกันกับชื่อของสนามนั้น ๆ และเติม .pos ลงไปด้วย เช่น map01.pos คลิกปุ่ม Save
การนำไปกับเครื่องอื่น ๆ ให้ทำการ copy ทั้งโฟล์เดอร์ไป ซึ่งในนั้นจะประกอบด้วย ไฟล์รูปภาพ .png และไฟล์เก็บตำแหน่งของวัตถุในสนาม .pos

ส่วนประกอบของโปรแกรม



ส่วนประกอบของโปรแกรม C/C++ robot simulator



1.Input-Output Simulate ส่วนการจำลองระบบอินพุต - เอาท์พุต หุ่นยนต์
2.Toolbar แถบเครื่องมือ เป็นแถบปุ่มคำสั่งต่าง ๆ
3.Code Text Editor พื้นที่เขียนโค๊ดโปรแกรมภาษาซีโครงสร้างภาษา arduino
4.Information&log เป็นพื้นที่สำหรับแสดงสถานะการคอมไพล์ Compile แจ้งสถานะข้อผิดพลาดจากการเขียนโค๊ดโปรแกรม error ต่าง ๆ
5.Stage Simulate พื้นที่สำหรับการจำลองการทำงานของหุ่นยนต์ และภารกิจต่าง ๆ
1.Input-Output Simulate ส่วนการจำลองระบบอินพุต - เอาท์พุต หุ่นยนต์
    1.1 LCD Output Module เป็นหน้าจอสำหรับแสดงผลข้อความ ตัวเลข
    1.2 Digital Switch Input Module เป็นปุ่มแบบดิจิตอล ประกอบไปด้วย sw1 , sw2 , sw3 และปุ่ม Reset สำหรับเริ่มต้นการทำงานใหม่ของหุ่นยนต์จำลองและรีเซ็ตสนาม , ตำแหน่งของวัตถุต่าง ๆ เมื่อมีการกดปุ่มสวิตซ์ใด ๆ จะมีไฟสถานะของปุ่มนั้น ๆ สว่างด้วย
    1.3 Motor DC Output Module เป็นส่วนจำลองการทำงานวงจรจ่ายไฟกระแสตรงของมอเตอร์ มี 2 ช่อง
             คือ M1 , M2
             M1 ควบคุมมอเตอร์และล้อหุ่นยนต์ข้างซ้าย
             M2 ควบคุมมอเตอร์และล้อหุ่นยนต์ข้างขวา
ไฟสถานะปกติ ไฟสถานะเดินหน้า ไฟสถานะถอยหลัง
    1.4 Analog Input port เป็นส่วนจำลองการต่อพ่วงกับอุปกรณ์ตัวตรวจจับอื่น ๆ เช่น เซนเซอร์สำหรับอ่านสีของพื้นสนาม , สีของวัตถุ ฯลฯ การเปิดปิดหรือต่อเข้ากับอุปกรณ์ทำได้จากแถบเครื่องมือ zx setting

           ชื่อพอร์ต pa0 ,pa1 ,pa2 ,pa3 ,pa4 ,pa5 ,pa6 ,pa7 ใช้สำหรับอ่านค่าสีจากพื้นสนาม
           ชื่อพอร์ต pa8 ใช้สำหรับอ่านค่าสีจากวัตถุที่อยู่ด้านหน้าของหุ่นยนต์
           การอ่านค่าใช้คำสั่ง analog(x);    x คือช่องที่ต้องการจะอ่านค่า



2.Toolbar แถบเครื่องมือ เป็นแถบปุ่มคำสั่งต่าง ๆ
2.1  ใช้สร้างไฟล์เอกสารโปรเจ็ค .C ใหม่ เพื่อเริ่มเขียนโปรแกรมใหม่
2.2  ใช้เปิดไฟล์เอกสารโปรเจ็ค .C เดิมที่เคยบันทึกไว้ ขึ้นมาแก้ไขเขียนโปรแกรมเพิ่มเติม
2.3  ใช้บันทึกไฟล์เอกสารโปรเจ็ค .C ปัจจุบัน บึนทึกการจัดวาง sensor , map ต่าง ๆ
2.4  ตัดข้อความที่ถูกเลือกจากหน้า Code Text Editor ไปเก็บไว้ในคลิปบอร์ดของโปรแกรม
      คีย์ลัด Shift+Delete
2.5  คัดลอกข้อความที่ถูกเลือกจากหน้า Code Text Editor ไปเก็บไว้ในคลิปบอร์ดของโปรแกรม
      คีย์ลัด Control+Insert
2.6  นำข้อความในคลิปบอร์ดของโปรแกรมมาวาง/แปะลงในหน้า Code Text Editor ตำแหน่งที่
      เคอร์เซอร์ (Ibeam) อยู่ คีย์ลัด Shift+Insert
2.7  ยกเลิกการพิมพ์ในหน้า Code Text Editor ครั้งล่าสุด/ครั้งสุดท้าย
2.8  ทำซ้ำการพิมพ์ในหน้า Code Text Editor ครั้งล่าสุด/ครั้งสุดท้าย
2.9  พิมพ์ข้อความที่ต้องการค้นหาลงในช่องข้อความ กดปุ่ม Enter จะทำการค้นหา
      ข้อความในหน้า Code Text Editor
2.10  ใช้ในการคอมไพล์ Compile แปลภาษาซีจาก Code Text Editor เพื่อหาข้อผิดพลาดของ
      โปรแกรมและแปลงโค็ดให้เป็นภาษาเครื่องคอมฯ
2.11  ใช้ในการเริ่มจำลองการทำงานของหุ่นยนต์จาก SourceCode ที่ได้ทำการคอมไฟล์เสร็จแล้ว
2.12  หยุดการจำลองการทำงานของหุ่นยนต์
2.13  ใช้เลือกแบบหุ่นยนต์จำลอง มีหลายแบบให้เลือกเพื่อความสนุกในการเขียนโปรแกรม
 มีให้เลือกดังนี้
2.14  ใช้สำหรับหมุน/หันตัวหุ่นยนต์จำลองไปทางซ้าย
2.15  ใช้สำหรับหมุน/หันตัวหุ่นยนต์จำลองไปทางขวา
2.16  ใช้ในการกำหนดค่าต่าง ๆ ของ Sensor เช่น การเปิด/ปิดการใช้งาน sensor , กำหนดตัวแหน่ง
      การจัดวาง , การแสดงสีของ sensor ฯลฯ
2.17  เป็นเครื่องมือ Track Line Editor สำหรับเขียนโค๊ดอัตโนมัติสำหรับควบคุมการเดินตามเส้น
      โดยการกำหนดเงื่อนไขต่าง ๆ
2.18 เมนูสำหรับเลือก map / สนาม ภารกิจต่าง ๆ ค่าเริ่มต้นของโปรแกรมมีให้เลือกดังนี้
2.18.1 Reload map คือการรีเซ็ตสนามใหม่จากสนามล่าสุด
2.18.2 Load map as.. คือการโหลดสนามจากที่อื่น/แหล่งเก็บข้อมูลอื่น ๆ หรือสนามที่สร้างขึ้นเอง
2.18.3 Save Position in map.. คือการบันทึกสนาม ภารกิจที่กำหนดเอง รวมถึงบันทึกตำแหน่งของหุ่นยนต์ , วัตถุ


2.19   เป็นเครื่องมือการสร้างเส้นทางอัตโนมัติโดยการคลิกลากเส้นทางให้กับหุ่นยนต์ แล้วโปรแกรม
       จะ Generate เป็น SourceCode เส้นทางให้อัตโนมัติ
2.19.1 โหมดสร้างเส้นทาง เลือกเมนูนี้ก่อนแล้วจึงคลิกลากเส้นทางที่สนาม
2.19.2 เริ่มการนับแยก ใช้กำหนดการนับแยกจะให้เริ่มต้นแยกที่เท่าไร
2.19.3 คำนวณสร้างเส้นทาง ใช้เมื่อลากเส้นทางเสร็จแล้ว โปรแกรมจะทำการประมวลผลเส้นทางที่ได้ลากวางไว้ หรือกำหนดไว้แล้วในสนาม ออกมาเป็น sourcecode ภาษาซีสำหรับเป็นเส้นทางการเดินของหุ่นยนต์
2.20 แสดงหน้าจอผู้จัดทำ ซึ่งจากรูปจะปิดตานักเรียนไว้เผื่อใครอยากรู้จักหน้าก็หยิบวัตถุทรงกลม
      นั้นออกก็จะเห็นหน้าตาผู้ช่วยและคนทดสอบโปรแกรม
3.Code Text Editor พื้นที่เขียนโค๊ดโปรแกรมภาษาซีโครงสร้างภาษา arduino
          เป็นพื้นที่สำหรับเขียนโปรแกรมภาษาซีโครงสร้างภาษา Arduino ออกแบบให้มีสีสรรตามรูปประโยคที่นิยมใช้ในโปรแกรมภาษาทั่วไป เพิ่มการแสดงเลขบรรทัดเพื่อง่ายต่อการหาข้อผิดพลาดจากการเขียนโปรแกรม ขณะที่ทำการคอมไพล์
4.Information&log เป็นพื้นที่สำหรับแสดงสถานะการคอมไพล์ Compile แจ้งสถานะข้อผิดพลาดจากการเขียนโค๊ดโปรแกรม error ต่าง ๆ
         เป็นพื้นที่สำหรับแสดงสถานะการคอมไพล์ Compile แจ้งสถานะข้อผิดพลาดจากการเขียนโค๊ดโปรแกรม error ต่าง ๆ เช่นจากใจรูปมีการผิดพลาดในการคอมไพล์โปรแกรมจาก SourceCode ที่หน้า Code Text Editor บรรทัดที่ 3 คอมลัมน์ที่ 9 จากเครื่องหมายไม่ถูกต้องจาก คำสั่ง fd()  ซึ่งต้องแก้ไขด้วยการเติมเครื่องหมาย ; ลงไปท้ายประโยคคำสั่งนั้น fd(); เป็นต้น
5.Stage Simulate พื้นที่สำหรับการจำลองการทำงานของหุ่นยนต์ และภารกิจต่าง ๆ
   สามารถจับลากวัตถุต่าง ๆ ได้ตลอดเวลาขณะเขียนโค๊ดโปรแกรม หรือขณะ run simulator

วันเสาร์ที่ 19 มกราคม พ.ศ. 2556

ดาวน์โหลด c/c++ robot simulator (DEMO)


            ความต้องการของระบบ
            OS : windows7, Vista , 2008 , (not supported windowsXP)
            CPU : 1Ghz up
            Ram : 512MB up
            Disk space : 2.5 MB
            display : screen resolution > 1024x768
            Microsoft .NET Framework 4
           
           
            ก่อนที่จะทำการดาวน์โหลดโปรแกรม c/c++ robot simulator (DEMO) จะัต้องทำการติดตั้ง Microsoft .NET Framework 4 ก่อนนะครับ ถ้ายังไม่ได้ทำการติดตั้ง คลิกตรงนี้ ถ้ามั่นใจแล้วว่าได้ทำการติดตั้ง .net4 แล้ว  เริ่มดาวน์โหลดโปรแกรมจากลิงค์ด้านล่างนี้
จากรูปด้านล่างนี้ให้คลิกที่ไฟล์ -> ดาวน์โหลด
เลือก "บันทึกแฟ้ม" และคลิกปุ่ม ตกลง
เมื่อดาวน์โหลดสำเร็จแล้ว ไปยังที่เก็บไฟล์ดาวน์โหลด คลิกขวาที่ไฟล์ c_robot_loader25560118.rar
เลือกเมนูคำสั่ง Extract Here เพื่อทำการแตกไฟล์
เมื่อทำการแตกไฟล์เรียบร้อยแล้วจะได้ไฟล์ c_robot_loader.exe ซึ่งเป็นไฟล์โปรแกรมพร้อมใช้งานได้เลยไม่ต้องทำการติดตั้ง สามารถดับเบิลคลิกที่ไฟล์ c_robot_loader.exe เพื่อเปิดโปรแกรมได้เลย

เมื่อดับเบิลคลิกโปรแกรมจะแสดงหน้าต่างเริ่มต้น ให้คลิกบริเวณใดก็ได้เพื่อทำการเข้าสู่โปรแกรมหลัก
จะได้โปรแกรม c/c++ robot simulator พร้อมใช้งานและเรียนรู้การเขียนโปรแกรมภาษาซีสำหรับควบคุมหุ่นยนต์ได้แล้วครับ