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

วันอาทิตย์ที่ 7 ตุลาคม พ.ศ. 2555

แนวทางการสร้างเมนูอย่างง่ายกับบอร์ด PopXT



   สวัสดีครับ หายไปนานจากบทความที่แล้ว เนื่องจากติดภารกิจสอบปลายภาคและตัดเกรดนักเรียน ก็เสร็จสิ้นแล้ว วันนี้เลยนำเอาตัวอย่างการสร้างเมนูอย่างง่าย ๆ สำหรับบอร์ด PopXT มานำเสนอเพื่อเป็นแนวทางในการพัฒนาโปรแกรมต่อยอดต่อไปนะครับ  ซึ่งตัวอย่างนี้จะใช้วิธีการกดปุ่ม sw_ok  เพียงปุ่มเดียว ในการเลื่อนเมนูและเลือกกดเมนูที่ต้องการ  เทคนิคที่ใช้คือ ตรวจสอบการกดปุ่ม โดยการจับเวลาการกดปุ่มถ้ากดนานเกิน 1200 มิลลิวินาทีให้ถือว่าเป็นการกดเพื่อเลือกเมนูนั้น ๆ แต่ถ้ากดปล่อยเวลาน้อยกว่า 1200 มิลลิวินาทีถือว่าเป็นการกดเพื่อเลื่อนเมนู
   โดยจะสร้างเงื่อนมาสองเงื่อนไขหลักในการตรวจสอบการกดปุ่ม sw_ok นะครับ คือ
1.ถ้ากดค้าง (pp=1) ก็ตรวจสอบอีกว่าตอนนี้อยู่เมนูที่เท่าไร
  โดยใช้เงื่อนไขใน switch(kk)  เพื่อให้ทำงานตามฟังก์ชันต่าง ๆ ที่อยู่ใน case
2.ถ้ากดปล่อยธรรมดา  (pp=0) ให้เพิ่มค่าให้ตัวแปร kk คือ เมนูที่เท่าไร แล้วทำการวนซ้ำขีดเส้นสี
  เพื่อแสดงการถูกเลือกหรือแสดงว่าเมนูอยู่ที่ลำดับเท่าไร
ส่วนของตัวแปรนะครับ สามารถคัดลอก(พิมพ์เอาเองนะครับ จะได้รู้ว่ามันเป็นมาอย่างไร อย่าขี่เกียจมันไม่ได้ช่วยให้เราพัฒนาขึ้นนะครับ)

     char title[]="ข้อความส่วนหัวของหน้าจอ"
     char m_menu[][20]={  "1.Sound ",
                                       "2.Servo",
                                       "3.Motor",
                                       "4.Port analog",
                                       "5.Calculator",
                                       "6.Exit"    };
    ตัวแปร m_menu[][20]  เป็นตัวแปรแบบ 2 มิติ  ตัวเลข [20] คือความกว้างของข้อความนะครับ เท่ากับ 20 ตัวอักขระ  สามารถกำหนดมากกว่าหรือน้อยกว่านี้แล้วแต่ขนาดความยาวของข้อความนั้น ๆและรายการที่อยู่ในตัวแปรอาเรย์นี้ก็สามารถเพิ่มเติมได้เลยนะครับ ในบรรทัดที่ 22 จะเป็นการคำนวณหาจำนวนอาเรย์หรือจำนวนเมนูทั้งหมดที่อยู่ในตัวแปรนี้ และเก็บไว้ในตัวแปร count_menu เป็นจำนวนของเมนูทั้งหมด

     ส่วนการนำตัวอย่างไปทดสอบ แก้ไขตัวแปร title , m_menu  และในเงื่อนไข switch(kk)  เพิ่มลบ case ใส่ฟังก์ชันที่ต้องการลงไปก็เสร็จพร้อมใช้งานครับ  

    เขียนไปเขียนมาเริ่มหาที่จบลงไม่ได้ เอาเป็นว่าดูโค๊ดตัวอย่าง และทำการทดสอบ มีปัญหาตรงไหนโพสผ่านคอมเมนท์มาคุยกันดีกว่า จะได้ทราบปัญหาและวิธีการแก้ปัญหา เรียนรู้ไปด้วยกัน (ไม่รู้จะอธิบายให้ละเอียดยังไงเหมือนกัน)

ตัวอย่างการใช้งาน(อันนี้เป็น UI แบบเก่าครับ อันใหม่ยังไม่ได้ถ่าย)
 ตัวอย่างการใช้งาน(อันนี้เป็น UI แบบใหม่ แต่เป็นการใช้ Knob เป็นตัวเลื่อนเมนู)
โค๊ดตัวอย่าง

วันพฤหัสบดีที่ 4 ตุลาคม พ.ศ. 2555

วิทยุบังคับ 4 ch ควบคุมหุ่นยนต์ inex pop-bot168


(อัพไว้ก่อน กันลืมเดี๋ยวค่อยมาจัดระเบียบใหม่)

     กว่าจะทำต้นแบบเสร็จ สามวันผ่านไป  โปรเจ็คใหม่สำหรับหุ่นยนต์แบบผสมครับ ใช้ชุดวิทยุเครื่องบินบังคับ 4 ch ควบคุมหุ่นยนต์ inex pop-bot168 สาธิตโดยนักเรียนชั้น ม.1 ยังบังคับไม่เป็นเลย อิอิ ก็อย่างว่าเตรียมไว้ให้ ม.ปลาย


วิดีโอตัวอย่างการบังคับ