และชุดฝึกทักษะหุ่นยนต์ LegoNXT ร่วมกัน
สิ่งที่ต้องเตรียม
1. wiimote
2. คอมพิวเตอร์ที่มีบลูทูธ 2.0+EDR
3. Lego NXT
โปรแกรม
1. Visual Studio C# 2008 ถ้าไม่มีแนะนำ Version ฟรี
2. Managed Library for Nintendo's Wiimote สำหรับติดต่อกับ wiimote
3. AForge.NET Framework สำหรับติดต่อกับ Lego NXT ติดตั้งให้เรียบร้อย
เริ่มกันเลย
เปิดโปรเจ็ค ที่อยู่ใน samples\WiimoteTestCS ของ WiimoteLib เพื่อเปิด VS
เพิ่ม library
ให้เพิ่ม Reference ของ AForge.Robotics.Lego จะของในที่ๆติดตั้ง AForge \AForge.NET\Framework\Release
เปิด code ของ Form1.cs
ในส่วนของ Header ด้านบนเพิ่ม
using AForge.Robotics.Lego; |
ในส่วนของ Constructor เพิ่ม
// NXT brick private NXTBrick nxt = new NXTBrick(); private NXTBrick.MotorRunState[] runStates = new NXTBrick.MotorRunState[] { NXTBrick.MotorRunState.Idle, NXTBrick.MotorRunState.RampUp, NXTBrick.MotorRunState.Running, NXTBrick.MotorRunState.RampDown }; |
// NXT brick private NXTBrick nxt = new NXTBrick(); private NXTBrick.MotorRunState[] runStates = new NXTBrick.MotorRunState[] { NXTBrick.MotorRunState.Idle, NXTBrick.MotorRunState.RampUp, NXTBrick.MotorRunState.Running, NXTBrick.MotorRunState.RampDown }; |
// walk bool walkOn = true; bool legLeft = true; System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); public void Walk(object sender, EventArgs eArgs) { NXTBrick.MotorState motorStateGo = new NXTBrick.MotorState(); motorStateGo.Power = (sbyte)127; motorStateGo.TurnRatio = (sbyte)50; motorStateGo.Mode = NXTBrick.MotorMode.On;// NXTBrick.MotorMode.Brake, NXTBrick.MotorMode.None, NXTBrick.MotorMode.Regulated motorStateGo.RunState = runStates[2]; //0:Idle, 1:RampUp, 2:Running, 3:RampDown legLeft = !legLeft; if (legLeft) { //left leg forward // set motor's state if (nxt.SetMotorState(NXTBrick.Motor.C, motorStateGo) != true) { System.Diagnostics.Debug.WriteLine("Failed setting motor state"); } } else { //Right leg forward if (nxt.SetMotorState(NXTBrick.Motor.B, motorStateGo) != true) { System.Diagnostics.Debug.WriteLine("Failed setting motor state"); } } } |
Link เมื่อกดปุ่ม Wiimote แล้วสั่งให้มอเตอร์ทำงาน หุ่นยนต์ก็จะเดิน
ภายใน Method UpdateWiimoteState จะมีตัวแปร ws ของ wiimote อยู่
ซึ่งเราจะใช้คำสั่ง if เช็คว่ามีการกดปุ่มนั้นๆหรือไม่ ถ้ามีเราจะสั่งให้หุ่นยนต์ เคลื่อนที่
โค๊ดตัวอย่างการกดปุ่มขึ้น
if (ws.ButtonState.Up) { // your code when Press Up Buttom } |
เพียงเท่านั้นเราก็เชื่อมต่อ Wiimote กับ Lego NXT ได้แล้ว
อ่อ มันต้องเชื่อมต่อกันผ่านคอมนะครับ เชื่อมกันโดยตรงไม่ได้
ดาวน์โหลดซอร์สโค๊ด ไปศึกษาดูนะครับ
ติดอะไรก็เมลมาถามได้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น