در این سری از پروژه های آموزشی آردوینو، نحوه اتصال کنسول کنترلر wii nunchuk به برد آردوینو و کاربرد آن به طور کامل توضیح داده شده است. در این پروژه توسط کنترلر wii nunchuk دو سروموتور کوچک را راه اندازی نموده ایم به طوری که بعد از مطالعه توضیحات زیر به راحتی می توانید از این کنترلر در پروژه های دیگر به منظور کنترل ربات ها و … استفاده کنید. اگر به دنبال پروژه ای برای کنترل تجهیزات و قطعات و یا ربات های خود هستید پیشنهاد می کنیم متن زیر که در وب سایت الکترونیک98 منتشر گردیده است را مطالعه بفرمائید.
کنسول wii nunchuk
کنسول wii nunchuk همان دسته بازی جذاب ساخته شده توسط شرکت nintendo است که در 19 نوامبر 2006 وارد بازار شد و کیفیت سایر محصولات ساخته شده توسط این شرکت را به خوبی ادامه داد. کنسول مدل nunchuk از کنترل حرکتی wii remote استفاده می کند. wii remote ابزاری جهت کنترل بازی های با جوی استیک آنالوگ است و می توان آن را به صورت ماژولار به ریموت خود اضافه کرد. همچنین ابعاد و وزن این کنسول بسیار مناسب می باشد. از جمله مشخصات و ویژگی های این کنسول عبارتنداز:
1. طول سیم 90 سانتی متر
2. ابعاد 4×5×11.5 سانتی متر
3. وزن 50 گرم
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
کنسول wii nunchuk | 1 عدد |
سروو موتور میکرو SG90 مدل 180 درجه | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
نحوه اتصال قطعات به یکدیگر و برد آردوینو بسیار راحت است به طوری که با توجه به شمایتک زیر، می توانید اتصالات را انجام دهید.
برنامه نویسی پروژه
قبل از برنامه نویسی در نرم افزار آردوینو ابتدا کتابخانه Servo را از لینک زیر دانلود نموده و طبق توضیحات زیر، آن را به زیرمجموعه های کتابخانه خود در نرم افزار آردوینو اضافه کنید.
نصب کتابخانه
لازم به ذکر است که نرم افزار برنامه نویسی آردوینو به صورت پیش فرض توانایی پشتیبانی از Servo را ندارد بنابراین ما باید library (کتابخانه یا برنامه) مورد نیاز را بر روی آن نصب کنیم. این فرآیند بسیار ساده و راحت است که در زیر نحوه استفاده از آن را توضیح داده ایم.
1. در مرحله اول ابتدا آخرین (جدیدترین) نسخه کتابخانه (Servo) را از لینک فوق دانلود کنید.
2. پس از دانلود فایل، نرم افزار آردوینو را باز کنید.
3. مسیر زیر را دنبال کنید و در پنجره باز شده فایل کتابخانه Servo را که قبلا دانلود کرده اید را انتخاب نمائید:
…Sketch > Include Library > Add .ZIP Library
برنامه کامل پروژه در محیط نرم افزار آردوینو
بعد از اتصال قطعات به یکدیگر و نصب کتابخانه مربوطه، کدهای زیر را در نرم افزار آردوینو کپی نموده سپس به برد آردوینو آپلود کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
#include <Servo.h> Servo servo1; Servo servo2; #include <Wire.h> #define ZEROX 530 #define ZEROY 530 #define ZEROZ 530 #define WII_NUNCHUK_I2C_ADDRESS 0x52 int counter; uint8_t data[6]; void setup() { servo1.attach(11); servo2.attach(12); Wire.begin(); Wire.beginTransmission(WII_NUNCHUK_I2C_ADDRESS); Wire.write(0xF0); Wire.write(0x55); Wire.endTransmission(); Wire.beginTransmission(WII_NUNCHUK_I2C_ADDRESS); Wire.write(0xFB); Wire.write(0x00); Wire.endTransmission(); } void loop() { Wire.requestFrom(WII_NUNCHUK_I2C_ADDRESS, 6); counter = 0; while(Wire.available()) { data[counter++] = Wire.read(); } Wire.beginTransmission(WII_NUNCHUK_I2C_ADDRESS); Wire.write(0x00); Wire.endTransmission(); if(counter >= 5) { double accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03) - ZEROX); double accelY = ((data[3] << 2) + ((data[5] >> 4) & 0x03) - ZEROY); double accelZ = ((data[4] << 2) + ((data[5] >> 6) & 0x03) - ZEROZ); int value = constrain(accelY, -180, 180); value = map(value, -180, 180, 0, 180); servo1.write(value); value = constrain(accelX, -180, 180); value = map(value, -180, 180, 0, 180); servo2.write(value); delay(20); } } |