การใช้งานโปรแกรม Brixc Command Center

โปรแกรมที่ใช้สำหรับควบคุมหุ่นยนต์มีหลากหลายในภาษาที่ใช้ในการเขียนควบคุม ซึ่งผู้ใช้สามารถเลือกใช้ตามความถนัดในแต่ละโปรแกรมภาษา สำหรับในชั้นเรียนนี้จะใช้ภาษา NXC ซึ่งมีรูปแบบการใช้งานคล้ายกับภาษาซี โดยใช้โปรแกรม Editor ชื่อว่า Bricx Command Center

เริ่มต้นใช้งาน Bricx Command Center

bcc001

1. Tools Bar
2. Code Explorer
3. พื้นที่เขียนโปรแกรม

การเขียนโปรแกรม
1. เสียบสาย USB เพื่อเชื่อมต่อ NXT Brick กับเครื่องคอมพิวเตอร์ และเปิด NXT Brick

bcc002

2. เปิดโปรแกรม Bricx Command Center จะมีหน้าต่างค้นหา NXT Brick

bcc003

ให้เลือกพอร์ตเป็น USB และ Brick Type เป็น NXT จากนั้นกดปุ่ม OK

3. ลงมือเขียนโปรแกรม

bcc004

4. เมื่อเขียนโปรแกรมเสร็จแล้วจะต้องทำการ Compile โปรแกรมเพื่อให้เป็นภาษาของเครื่อง โดยกดที่สัญลักษณ์  bcc009 หรือกดที่แป้น F5 โปรแกรมมีข้อผิดพลาดก็จะมีข้อความขึ้นมาเตือน ซึ่งจะต้องไปตรวจสอบความผิดพลาดว่าอยู่ที่ใด บรรทัดใด เพื่อแก้ไขให้ถูกต้อง แล้วจึง Compile ใหม่อีกครั้ง

bcc005

5. โปรแกรมที่ Compile เสร็จสมบูรณ์แล้วจะดาวน์โหลดลงใน NXT Brick จะต้องมีสัญลักษณ์พร้อมดาวน์โหลดขึ้นมาแสดง bcc007 ถ้าไม่มีสัญลักษณ์ ดาวน์โหลดโปรแกรม จะต้องไปที่เมนู Tools > Find Brick

bcc008

แล้วจะมีหน้าต่างค้นหา NXT Brick

bcc003

ให้เลือกพอร์ตเป็น USB และ Brick Type เป็น NXT จากนั้นกดปุ่ม OK

6. เมื่อมีสัญลักษณ์ bcc007 ก็พร้อมที่จะดาวน์โหลดโปรแกรมลงเข้าไปในหุ่นยนต์ โดยกดที่สัญลักษณ์ bcc007 หรือกดที่แป้น F6

เอกสารอ้างอิง
Daniele Benedettelli. (2007). Programming LEGO NXT Robots using NXC. [n.p.]: [n.p.].
John C. Hansen. (2009). LEGO NXT power programming : robotics in C. 2nd ed. United States: Variant Press.

กลัวหาย NXC (1)

/*
A simple line following program.
You will need 2 light sensors attached to inputs 1 and 3.
Place the bot on the test pad, with the wheels
on the start line facing forward.
Then start the program.

author: Jan-Klaas Kollhof
last changed by: $LastChangedBy$
last changed date: $Date$
revision: $Revision$
*/

#define LightThreshold 50
#define Fast 75
#define Slow 20

task main(){
SetSensorLight(IN_3);
SetSensorLight(IN_1);

//lets turn 90 deg left
RotateMotorEx(OUT_BC, Fast, 180,-100, true, false);

//now follow the line
OnFwd(OUT_BC, Fast);

while(1){
if(SENSOR_3 < LightThreshold){
//sensor 3 just detected a black line
//so lets go a bit slower on it's side
OnFwd(OUT_B, Fast);
OnFwd(OUT_C, Slow);
}else if (SENSOR_1 < LightThreshold){
//sensor 1 just detected a black line
//so lets go a bit slower on it's side
OnFwd(OUT_B, Slow);
OnFwd(OUT_C, Fast);
}else{
//either it is all black or all light
//lets just go forward
OnFwd(OUT_BC, Fast);
}
}
}

———————————————
/*
A simple line following program.
It works with the standard NXT bot.
Place the bot on the test pad, with the wheels
on the start line facing forward.
Then start the program.

author: Jan-Klaas Kollhof
last changed by: $LastChangedBy$
last changed date: $Date$
revision: $Revision$
*/

#define LightThreshold 50
#define Fast 75
#define Slow 30

task main(){
SetSensorLight(IN_3);

//lets turn 90 deg left
RotateMotorEx(OUT_BC, Fast, 180,-100, true, false);

//now follow the line
OnFwd(OUT_BC, Fast);
while(1){
if(Sensor(IN_3) > LightThreshold){
//we just went off of the black line
//so lets slow down on the right
OnFwd(OUT_B, Slow);
}else{
OnFwd(OUT_B, Fast);
}
}
}

———————————————
/*
A simple programm for avoiding
obstacles using the sonic sensor.
It works with the standard NXT bot.

author: Jan-Klaas Kollhof
last changed by: $LastChangedBy$
last changed date: $Date$
revision: $Revision$
*/

#define VeryClose 20
#define Close 40
#define Slow 30
#define Fast 70

task main(){
SetSensorLowspeed(IN_4);

while(1){
TextOut(0, LCD_LINE1, “sonic”, true);
NumOut(70, LCD_LINE1, SensorUS(IN_4));

int dist = SensorUS(IN_4);

if(dist < VeryClose){
//lets spin 45 deg in a random direction
if(Random(2) == 0){
RotateMotorEx(OUT_BC, Fast, 180, -100, true, false);
}else{
RotateMotorEx(OUT_BC, Fast, 180, 100, true, false);
}

}else{
OnFwd(OUT_BC, Fast);
}
Wait(100);
}
}

อ้างถึง

http://jan.kollhof.net

Why teach Robotics?

Robotics is fast becoming an integral part of the school curriculum with it’s ability to integrate across a broad range of topics, most notably the Technology, Science and Math Key Learning Areas.

Robotics encourages kids to think creatively, analyse situations and apply critical thinking and problem solving skills to real world problems. Teamwork and co-operation are a cornerstone of any robotics project. Students learn it is acceptable to make mistakes, especially if it leads them to better solutions.

Robotics is a fun and engaging way to teach fundamental technology, maths and science concepts. There are several key facets that the teaching of robotics promotes:

* Problem Analysis: Robotics encourages students to take a broad look at a situation and identify exactly what problem needs to be solved. Real world applications are easily found, giving students context for their project. Before any construction can begin, students must identify “what need will this robot fulfill?”. With this in mind, how should the robot be designed to meet these need?
* Real World Design: With an application in mind and an idea of implementation, students can now begin the design process. This stage provides great rewards for students as the as they produce physical realisations of conceptual ideas. There is plenty of opportunity for refinement and improvement as they discover errors in their plans and issues they would never have considered during the design stage. Prototypes are quickly built and just as quickly discarded with lessons learnt as students progress towards an optimal solution. Resources must be managed and compromise made between form, function and cost.
* Programming: There are a variety of programming languages available for robotics, from graphical development environments to text based languages. Programming skills teach students to think logically and to consider multiple situations, as they learn a robot will do exactly as it is told, no more and no less. Information from a variety of sensors must be processed and dealt with logically and as with the design stage, there is ample opportunity for trial and error as students fine tune their robots to perform at their best.

อ้างอึง http://www.domabotics.com

วันนี้ ป.4/2 เรียนหุ่นยนต์จ้า

วันนี้เรียนเรื่องการควบคุมหุ่นยนต์ให้วิ่งไปข้างหน้าและถอยหลัง โดยใช้เวลาและโรเทชั่น




บรรยากาศวันแรกในห้องหุ่นยนต์ของ 4/1

…..วันนี้ให้ห้อง 4/1 ลองแก้ปัญหาจากโจทย์เขาวงกต


(จะเอายังไงพวกเรา ไปตรง เลี้ยวขวา ไปตรง เลี้ยวซ้าย ไปตรง)


(ไปข้างหน้าใช้เวลาหรือ Rotation ดี)


(เขียนโปรแกรม)


(จะเอายังไงดีพวกเรา)


(มาลองวิ่งดู)

…..นี่แหละครับห้องเรียนหุ่นยนต์

++ เนื้อหาที่ต้องการให้นักเรียนรู้ในวันนี้ คือ การเขียนโปรแกรมให้หุ่นยนต์เดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา โดยใช้เวลาและการหมุนของมอเตอร์เป็นตัวควบคุม ++