برای تشخیص جهت و شتاب نیاز به سنسور منحصر به فردی داریم. سنسورهای شتاب و ژایرو دو عملکرد مهم دارند. یکی برای تشخیص پارامترهای یک جسم در حال حرکت و دوم تشخیص حرکتهای یک جسم ثابت میباشد. انواع مختلفی از سنسورهای شتاب و ژایرو با قابلیت سنجش پارامترهای مختلف از ۳ محور تا ۹ محور وجود دارند. حتی بر اساس دقت و حساسیت هم دسته بندی میشوند. در این پست آموزش با استفاده از یک ماژول شتاب و ژایرو با تراشه MPU6050 به ال ای دی ها فرمان میدهیم. به عبارتی با چرخش این ماژول در جهتهای مختلف، ال ای دی ها تغییر وضعیت میدهند. در ادامه این آموزش جذاب با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور شتاب و ژایرو MPU6050
سنسور شتاب و ژایرو از تراشه MPU6050 تشکیل شده است. سنسور بسیار دقیق ۱۶ بیتی که برای هر کانال تعریف شده است. این سنسور هر سه محور X , Y و Z را در یک زمان دربرمیگیرد. ولتاژ کاری سنسور شتاب و ژایرو MPU6050 بین ۳٫۳ تا ۵ ولت DC میباشد. همچنین این سنسور از پروتکل I2C جهت ارتباط با میکروکنترلر آردوینو بهره میبرد. سنسور شتاب ژایرو MPU6050 دارای حساسیت ۱۳۱ LSBs/dps و در محدوده ±۲۵۰, ±۵۰۰, ±۱۰۰۰, ±۲۰۰۰dps میباشد. ماژول شتاب و ژایرو MPU6050 از یک چیپ سیلیکونی با قابلیت پردازش دیجیتالی بهره میبرد و همچنین توانایی ترسیم الگوریتم های پیچیده ۹ محوری را دارد. سنسور MPU6050 جریان مصرفی بسیار ناچیز در محدوده ۵ میکروآمپر تا ۳٫۶ میلی آمپر دارد. این سنسور دارای ۸ پایه VCC, GND, SCL, SDA, XDA, XCL, ADD, INT میباشد. دیتاشیت کامل سنسور در صفحه محصول سنسور شتاب و ژایرو MPU6050 در داشنجوکیت قرار گرفته شده است. آن را دانلود و مطالعه نمایید.
برد آردوینو Arduino Nano
برد آردوینو نانو Arduino NANO با تراشه CH340G یک برد کوچک بر پایه آی سی ATmega328 می باشد. برد آردوینو دارای ۳۰ پایه میباشد. پایه D0 تا D13 پایه ورودی و خروجی دیجیتال است. پایه ۳ و ۲۸ ریست RESET، پایه ۴ و ۲۹ زمین GND، پایه ۱۷ تعذیه ۳٫۳ ولت DC، پایه ۱۸ (AREF ( ADC، پایه ۱۹ تا ۲۶ ورودی آنالوگ A0 – A7، پایه ۲۷ تغذیه ۵ ولت DC و پایه ۳۰ تغذیه پاور VIN میباشد. ابعاد برد آردوینو نانو Arduino Nano در حدود ۱٫۷۰ * ۰٫۷۳ اینچ میباشد. نوع کانکتور آردوینو نانو Mini USB است. فرکانس کاری آردوینو نانو ۱۶ مگاهرتز MHz میباشد. ولتاژ مورد نیاز ۵ ولت DC و جریان آن در حدود ۴۰ میلی آمپر برای هر پین ورودی و خروجی است. اطلاعات بیشتر به همراه دیتاشیت کالا در صفحه محصول آردوینو نانو Arduino Nano در دانشجوکیت قرار گرفته شده است که میتوانید مطالعه کنید.
هدف از آموزش آردوینو
توسط سنسور شتاب و ژایرو MPU6050 به ۴ ال ای دی در جهت محور X , Y فرمان میدهیم. در ادامه آموزش به بررسی اتصالات، وسایل مورد نیاز جهت اجرای پروژه و در نهایت کد آردوینو آن خواهیم پرداخت. از آنجایی که هر جهت دارای قسمت مثبت و منفی است، در خروجی شاهد چهار جهت خواهیم بود.
ال ای دی اوال Oval LED
ال ای دی Oval در مقایسه با سایر ال ای دیهای نور بسیار واضح و شفاف با زوایه دید بیشتری دارد. همچنین ظاهر این نوع ال ای دی ها متفاوت است. اوال Oval در انگلیسی به معنای بیضی میباشد. ولتاژ مورد نیاز برای ال ای دی اوال Oval از ۳ تا ۳٫۲ ولت DC است. این ال ای دی دارای طول موج ۴۲۶ تا ۴۶۵ نانومتر است. همچنین دارای شدت نور ۶۰۰ تا ۸۰۰ MCD میباشد. جریان کاری این ال ای دی ۱۵ تا ۲۰ میلی متر است.
فراخوانی کتابخانه در آردوینو
جهت اجرای این کد نیاز به فراخوانی ۳ کتابخانه خواهیم داشت. چنانچه شیوه نصب کتابخانه در آردوینو را نمیدانید. به پستآموزش نصب کتابخانه در نرم افزار آردوینو مراجعه کنید. اگر هم شیوه نصب و راه اندازی نرم افزار آردوینو را نمیدانید. به آموزش کار با برد آردوینو و نصب نرم افزار آردوینو Arduino IDE مراجعه کنید.
-
کتابخانه I2Cdev
کتابخانه I2Cdev برای ارتباط پروتکل I2C با میکروکنترل ها فراخوانی میشود. لینک دانلود کتابخانه در صفحه محصول سنسور شتاب و ژایرو MPU6050 قرار گرفته شده است. آن را دانلود و سپس فراخوانی کنید.
-
کتابخانه MPU6050_6Axis_MotionApps20
کتابخانه MPU6050_6Axis_MotionApps20 جهت عملکرد سنسور شتاب و ژایرو MPU6050 فراخوانی میشود. لینک دانلود کتابخانه در صفحه محصول سنسور شتاب و ژایرو MPU6050 قرار گرفته شده است. آن را دانلود و سپس فراخوانی کنید.
-
کتابخانه Wire
کتابخانه wire به صورت پیش فرض در لیست کتابخانه های آردوینو قرار گرفته شده است. آن را فراخوانی کنید.
اتصال سنسور شتاب و ژایرو MPU
- پایه VCC سنسور شتاب و ژایرو MPU6050 را به پایه ۳٫۳ ولت آردوینو نانو Arduino Nano اتصال دهید.
- پایه GND سنسور شتاب و ژایرو MPU6050 را به پایه GND آردوینو نانو Arduino Nano اتصال دهید.
- پایه SCL سنسور شتاب و ژایرو MPU6050 را به پایه آنالوگ A5 آردوینو نانو Arduino Nano اتصال دهید.
- پایه SDA سنسور شتاب و ژایرو MPU6050 را به پایه آنالوگ A4 آردوینو نانو Arduino Nano اتصال دهید.
- پایه INT سنسور شتاب و ژایرو MPU6050 را به پایه دیجیتال D2 آردوینو نانو Arduino Nano اتصال دهید.
اتصال ال ای دی LED
- ال ای دی LED اول را به پایه دیجیتال D3 آردوینو نانو Arduino Nano اتصال دهید.
- ال ای دی LED دوم را به پایه دیجیتال D5 آردوینو نانو Arduino Nano اتصال دهید.
- ال ای دی LED سوم را به پایه دیجیتال D6 آردوینو نانو Arduino Nano اتصال دهید.
- ال ای دی LED چهارم را به پایه دیجیتال D9 آردوینو نانو Arduino Nano اتصال دهید.
کد برنامه آردوینو
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
#include <I2Cdev.h> // فراخوانی کتابخانه #include "MPU6050_6Axis_MotionApps20.h" // فراخوانی کتابخانه #define SIMPLE_IMPLEMENTATION false const int frontLed = 3; // تعریف ال ای دی const int bottomLed = 5; // تعریف ال ای دی const int rightLed = 10; // تعریف ال ای دی const int leftLed = 9; long int lastPrintTime; typedef struct { byte pin; byte positionInsideGroup; char thePosition; // Left, Right, Up, Down byte minAngle; byte maxAngle; } ledConfig; ledConfig leds[] = { {3, 1, 'u', 31, 45}, {12, 2, 'u', 16, 30}, {11, 3, 'u', 5, 15}, {5, 1, 'd', 5, 15}, {6, 2, 'd', 16, 30}, {7, 3, 'd', 31, 45}, {8 , 1, 'r', 5, 23}, {9, 2, 'r', 24, 45}, {10, 1, 'l', 5, 23}, {4, 2, 'l', 24, 45}, }; #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif MPU6050 mpu; // فرخوانی MPU6050 bool dmpReady = false; // در صورتیکه سنسور عمل کند uint8_t mpuIntStatus; // ذخیره بایت 8 بیتی uint8_t devStatus; // تغییر وضعیت بعد از اجرای هر عملکرد uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer[64]; // تعیین جهت و حرکت سنسور شتاب و ژایرو Quaternion q; // [w, x, y, z] quaternion container VectorInt16 aa; // [x, y, z] accel sensor measurements VectorInt16 aaReal; // [x, y, z] gravity-free accel sensor measurements VectorInt16 aaWorld; // [x, y, z] world-frame accel sensor measurements VectorFloat gravity; // [x, y, z] gravity vector float euler[3]; // [psi, theta, phi] Euler angle container float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); TWBR = 24; #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif Serial.begin(9600); while (!Serial); Serial.println(F("Initializing I2C devices...")); mpu.initialize(); Serial.println(F("Testing device connections...")); Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed")); Serial.println(F("Initializing DMP...")); devStatus = mpu.dmpInitialize(); mpu.setXGyroOffset(101); mpu.setYGyroOffset(41); mpu.setZGyroOffset(6); mpu.setZAccelOffset(1273); if (devStatus == 0) { // فعال شدن DMP Serial.println(F("Enabling DMP...")); mpu.setDMPEnabled(true); Serial.println(F("Enabling interrupt detection (Arduino external interrupt 0)...")); attachInterrupt(0, dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus(); Serial.println(F("DMP ready! Waiting for first interrupt...")); dmpReady = true; packetSize = mpu.dmpGetFIFOPacketSize(); } else { Serial.print(F("DMP Initialization failed (code ")); Serial.print(devStatus); Serial.println(F(")")); } if (SIMPLE_IMPLEMENTATION) { initializeLEDsSimple(); } else { initializeLEDsMultiple(); } lastPrintTime = millis(); } void loop() { if (!dmpReady) return; mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus(); fifoCount = mpu.getFIFOCount(); if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); Serial.println(F("FIFO overflow!")); } else if (mpuIntStatus & 0x02) { while (fifoCount < packetSize) { fifoCount = mpu.getFIFOCount(); } mpu.getFIFOBytes(fifoBuffer, packetSize); fifoCount -= packetSize; mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&gravity, &q); mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); int x = ypr[0] * 180/M_PI; int y = ypr[1] * 180/M_PI; int z = ypr[2] * 180/M_PI; Serial.print(y);Serial.print("\t");Serial.println(z); if (SIMPLE_IMPLEMENTATION) { flashLEDsSimple(x, y, z); } else { flashLEDsMultiple(x, y, z); } } } void initializeLEDsSimple() { pinMode(frontLed, OUTPUT); pinMode(bottomLed, OUTPUT); pinMode(rightLed, OUTPUT); pinMode(leftLed, OUTPUT); } void initializeLEDsMultiple() { for (int i=0; i<10; i++) { Serial.println(leds[i].pin); pinMode(leds[i].pin, OUTPUT); } delay(3000); } void flashLEDsSimple(int x, int y, int z) { if (y > 0) { analogWrite(rightLed, y*4); analogWrite(leftLed, 0); } else { analogWrite(leftLed, y*4*-1); analogWrite(rightLed, 0); } if (z > 0) { analogWrite(bottomLed, z*4); analogWrite(frontLed, 0); } else { analogWrite(frontLed, z*4*-1); analogWrite(bottomLed, 0); } } void flashLEDsMultiple(int x, int y, int z) { for (int i=0; i<10; i++) { bool modified = false; if (z < 0 && leds[i].thePosition == 'u' && abs(z) > leds[i].minAngle) { digitalWrite(leds[i].pin, HIGH); modified = true; } if (z > 0 && leds[i].thePosition == 'd' && abs(z) > leds[i].minAngle) { digitalWrite(leds[i].pin, HIGH); modified = true; } if (y < 0 && leds[i].thePosition == 'l' && abs(y) > leds[i].minAngle) { digitalWrite(leds[i].pin, HIGH); modified = true; } if (y > 0 && leds[i].thePosition == 'r' && abs(y) > leds[i].minAngle) { digitalWrite(leds[i].pin, HIGH); modified = true; } if (!modified) { digitalWrite(leds[i].pin, LOW); } } } void dmpDataReady() { mpuInterrupt = true; } |
تحلیل کد آردوینو
از طریق کلیدهای میانبری که برای انتقال کدها در نظر گرفته شده است، کد را به نرم افزار آردوینو منتقل کنید. سپس کامپایل کنید. طبق اتصالات گفته شده در متن آموزش اتصالات را انجام دهید. نکته مهم، بسیاری از سنسور ها برای نمایش دقیق مقادیر اندازه گیری شده و تعیین صحت و دقت نیاز به کالبیراسیون دارند. پیشنهاد میشود برای اندازه گیری دقیق تر محور X,Y,Z سنسور را کالیبره کنید.
تحلیل مدار MPU6050
با قرار گرفتن سنسور در زاویه افقی Horizental، طبق تعریف کدها با جا به جا کردن سنسور به سمت بالا، پایین، چپ و راست به ترتیب ۴ ال ای دی LED به عنوان خروجی فعال میشود. به این صورت که با کج کردن سنسور به سمت بالا ال ای دی متصل به پایه ۳ دیجیتال، به سمت پایین ال ای دی متصل به پایه ۵ دیجیتال ، به سمت چپ ال ای دی متصل به سمت ۹ دیجیتال و در نهایت به سمت راست ال ای دی متصل به پایه ۱۰ دیجیتال روشن خواهد شد.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه
طی چند قسمت قبلی که طرح پروژه را پیاده سازی کردیم، با استقبال شما کاربران مواجه شدیم. در این سری برای اینکه گستره بیشتری از افراد بتوانند فرصت استفاده از بن خرید را داشته باشند؛ روال دیگری را در پیش گرفتیم. در این روش تصمیم گرفتهایم به ۱۰ نفر از کاربران بن خرید ارایه شود. برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و بسته به خلاقیت، مدار جدیدی ایجاد کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگ «#دیجی_اسپارک» و «#دانشجوکیت» و «#digispark» و «#daneshjookit» منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سرکار خانم مهندسس محبت کنید در پروژه هاتون از اسم درست قطعات و ماژولها استفاده کنید. در این پروژه شما از اسم ژایرو استفاده کردید که باید بگم این اسم درست نیست و حال انکه این پروژه جنبه آموزشی هم داره. اسم درست این ماژول Gayro و اسم کاملشم Gayroscope هستش و نه ژایرو. بسیار پسندیده هست اگه از اسم قطعه ای اطمینان نداری لطفا تو گوگل یه سرچ کنی بد نیست. درضمن من بشما زیاد ایراد نمیگیرم ممکن هست شما هم از مثلا استاد خودتون آموخته باشید و او هم همچنین الا آخر. موفق و پایدار باشید.
سلام
از توجه شما ممنونم، لطفا اسم این موضوع را ایراد گرفتن نگذارید و آزادانه هر موضوعی که از نظر جنابعالی نیاز به اصلاح دارد را بیان بفرمایید. هدف بنده و همکارانم در دیجی اسپارک، رشد و توسعه مداوم میباشد.
آموزشی خوب و کاربردی بود و خسته نباشید میگم
شاید بشه این پروژه رو کمی توسعه و داد و این ماژول شتاب سنج رو داخل یک ریموت کنترل گذاشت، بعد با چرخش ریموت در زوایای مختلف، لامپی خاص روشن بشه، مثلا وقتی که ریموت رو حول محور x چرخوندیم، یک تعداد از لامپها روشن بشن و اگر حول محور y چرخش داشتیم، یک تعداد دیگه روشن بشن
سلام
از توجه شما ممنونم. اگر منظورتان از ریموت، ارسال فرمان به صورت بیسیم میباشد. در این حالت نیاز به دو برد میکرو و دو ماژول فرستنده گیرنده میباشد.
در ضمن فوتبال هم ببینید!! 🙂
بله، قاعدتا دو برد لازم هست
بله…، فوتبال رو هم دیدم، برد شیرین رو تبریک میگم….
سلامت باشید.
با سلام
من تمامی کار ها برای گرفتن ارسال رایگان کردم اینم لینکش:https://www.aparat.com/v/TlY9t
درست انجام دادم؟؟؟؟
سلام
کاربر گرامی دقت کنید باید یک ویدیو از خودتان منتشر کنید. به عنوان مثال یکی از پروژه های دیجی اسپارک را انجام داده و از نحوه ی عملکرد آن ویدیو بگیرید.
با سلام
من درستش کردم اینم لینکش:https://www.aparat.com/v/xCAY0
سلام
از توجه شما ممنونم.
بن ارسال رایگان بر روی ایمیل شما ارسال خواهد شد. لطفا پس از استفاده از بن تخفیف، از همین طریق اعلام نمایید.
بله دریافت شد خیلی ممنون.
ببخشید تا چه زمانی این بن ارسال رایگان است؟
سلام مجدد
محدودیت زمانی ندارد ولی پیشنهاد میشود سریعتر از بن استفاده کنید.
سلام و خسته نباشید به شما و همکارانت می خواستم از شما در خواست اموزش ماژول GY_68 رایاد بدید ممنون
سلام
از توجه و پیشنهاد شما ممنونم.
بررسی خواهم کرد و در صورت امکان آموزش داده خواهد شد.
من LED های روی برد رزبری ام خراب شده آیا میشه خروجی شون رو از GPIO های رزبری بگیریم؟
سلام
لطفا شفافتر توضیح دهید تا بتوانم راهنمایی کنم.
با عرض سلام وخسته نباشید،معذرت میخام میشه همین کدهارو روی آردینو مینی هم آپلود کرد واستفاده بشه یا نیاز به تغییراتی هم هست؟؟اگر بله چه تغییراتی؟؟
سلام
بله میتوانید آپلود کنید.
تنها باید نرم افزار را بر روی برد آردوینو مینی تنظیم کنید.
سلام و ممنون از سایت و آموزش های خوبتون ،
من یه mpu6050 به صورت ماژول gy521 دارم برنامش درسته ولی تغییر مقادیر خروجی خیلی غیر منطقیه (یعنی خیلی زیاده) به نظرتون مشکل از کجا میتونه باشه ؟
و سوال دوم اینکه ماژول gy521 امکان کالیبره شدن داره ؟
خیلی ممنون
سلام
باید سنسور کالیبره شود. در این خصوص به دیتاشیت کالا مراجعه نمایید.
Salam
in emkan vojood dare ke az Timer1 interrupt estefade kard ta masalan har 50 msec mpu6050 ro fara hkhond va etelaat jadidesho gereft?
Midoonam ke khode mpu pin INT dare vase interrupt ama in vaghti karbord dare ke ma bekhaim vaghti dadehaye jadid darim una ro daryaft konim. Ama man mikham tooy frequency khasi masalan 20 Hz dade begiram.
سلام
لطفا سوالاتتان را به صورت فارسی بنویسید.
سلام،
متاسفانه روی لپ تاپم کیبور فارسی نداشتم به همین خاطر فارسی تایپنکردم.
سوالم این بود چطور میشه با استفاده از اینتراپت اطلاعات سنسور mpu رو خوند؟
خود سنسور پین اینتراپت داره اما وقتی بدرد میخوره که بخوایم هربار اطلاعات تازه ای داریم سنسور بهمون بگه و اونو دریافت کنیم. محیطی که من میخوام تست کنم سنسور رو روی موتور هست و چون همیشه لرزش هست این ویژگی بدرد من نمیخوره. تا اونجایی که مطالعه کردم نمیشه از اینتراپت زمان Timer1 استفاده کرد واسه درخواست اطلاعات از طریق کانکشن wire.h و در عمل هم نتونستم این کار رو کنم. راهی وجود داره واسه این کار؟ مثلا من نیاز دارم هر ۵۰ میلی ثانیه یکبار اطلاعات mpu رو بخونم و توی بافر ذخیره کنم.
با تشکر
سلام
این مورد زمانبر میباشد و در حال پیگیری هستم که نیازمند صبر و شکیبایی شما خواهد بود.
از همین طریق اطلاع رسانی خواهد شد.
با سلام
سوالم این بود که چطور میتونم اطلاعات این سنسور رو از طریق اینتراپت تایمر۱ بگیرم. مثلا هر ۵۰میلی ثانیه یکبار
اتصال آی۲سی خودش از طریق اینتراپت کار میکنه و اولویت پایین تری نسبت به تایمر۱ داره به همین دلیل اجازه نمیده سنسور رو از طریق اینتراپت کنترل کنم.
اینتراپت پین خود سنسور مورد استفاده من نیست چونکه من بر حسب بازه زمانی میخوام و اون برحسب بودن اطلاعات جدید بمن داده میده.
با سپاس
با سلام مجدد
متاسفانه بنده هم موردی را در این خصوص پیدا نکردم. از آنجایی که پروژه شما خاص و شرایطی متفاوت دارد، امکان شبیه سازی هم برای بنده وجود ندارد. از اینرو از دیگر کاربران که در این خصوص تجربه کافی دارند، تقاضا دارم تا در این بحث شرکت کنند.
با سلام
من دوبار سوالم رو به فارسی پرسیدم اما نه جواب گرفتم نه سوالم رو دیدم در قسمت نظرات.
حداقل میتونید بگید اطلاع ندارید تا یک پاسخ کوتاه داده باشید.
منتظر باشید در حال بررسی هستیم. اعلام به نداستن یک موضوع سادهترین راه میباشد. ولی ما در تلاش هستیم که پاسخ سوالات تمامی کاربران را تا جای امکان رفع کنیم.
سپاس
سلام خانم مهندس، مرسی ازبابت اموزش هاتون، خیلی مفید بود، میشه کدها را واسه AVRدر کدویژن یا بیسکام هم بنویسید
سلام من به کدهای این برنامه نیاز دارم اکانتهم خریداری کردم ولی ایمیله تایید واسم نمیاد. چکارکنم؟لطفا راهنمایی کنید.
با سلام
حساب کاربری شما فعال شده است. ولی دقت کنید که جنابعالی اشتراک اسپارکر پلاس تهیه نکردهاید، از اینرو کدها نمایش داده نمیشوند.
سلام خسته نباشین من قصد دارم از این روش برای درست کردن گیمبال استفاده کنم یعنی به جای تحریک ال ای دی دو تا سروو موتور رو کنترل کنم میتونین کمکم کنین
با سلام
کتابخانه و دستورات سرو موتور را به کدها اضافه نمایید.
در این خصوص به آموزش راه اندازی سرو موتور مراجعه کرده و کدها را تعمیم دهید. بررسی و سوالات خود را از همین طریق بپرسید.
با عر ض سلام ،من میخوام یک ربات قایق که داخل حوض ۲*۲ جرکت میکنه درست کنم که به یک مختصات دلخواه تعین شده حرکت کند واگر مانعی در مسیر بود اون رو دور بزنه و باز هم به همون مقصد بره ، واسه سیستم مختصات دهی و ناوبریش میتونم از سنسور mpu6050 استفاده کنم ؟ و ایا میتونم سه عدد التراسونیک به همراه دو تا موتور و سنسور بالا رو با اردویینو uno راه اندازی کنم ؟
با سلام
در این خصوص بایستی دیتاشیت ماژول mpu6050 را بررسی نمایید. همچنین ماژول های شتاب و ژایرو با ویژگی و پارامترهای اندازه گیری متفاوت در سایت موجود است که بایستی بر اساس نیاز پروژه خود ماژول دقیق را انتخاب نمایید. جهت دریافت اطلاعات بیشتر میتوانید از طریق ارسال تیکت در فروشگاه از تیم فنی راهنمایی دریافت نمایید.
سلام
ببخشید انتقاد و سوال داشتم
من تازه عضو شدم و این اولین آموزشی هست که میبینم انتقادم اینجاس که این توضیحات به همراه کداش به صورت رایگان تو سایتهای فارسی زبان وغیره هست ! قبل از خرید اکانت فکر میکردم روی کدها آموزش میدین طوری که بتونم کدها رو یاد بگیرم و بنویسم ولی متاسفاده اینطور نیست !
حال سوالم ، چطور میتونم از دو سنسور روی یک برد آردوینو استفاده کنم ؟
لطفا پاسخ بدین
متشکرم خانم مهندس
با سلام و تشکر از شما
از ویژگی متمایز دیجی اسپارک پشتیبانی آنلاین است که پس از تهیه اشتراک از آن ها برخوردار خواهید بود. از جمله شرکت در جلسات دورهمی متخصصان، دریافت مشاوره و پشتیبانی و … میباشد. در اکثر آموزش ها کدها به صورت کامنت تحلیل و یا در ادامه آموزش تحلیل شده است. همچنین در صورت سوال در کدها از طریق بخش نظرات میتوانید سوالات خود را بپرسید تا نویسنده آموزش راهنمایی کند.
در خصوص سوال شما، بله با توجه به نوع برد آردوینو مورد استفاده و تعداد پایههای دیجیتال و آنالوگ در دسترس میتوانید سنسور به برد متصل نمایید. توضیحات کاملتری از نوع برد خود و پروژه اعلام فرمایید تا راهنمایی گردد.
از برد آردینو انو استفاده میکنم و دو تا ماژول gy521
میخوام از هر ماژول به صورت جداگانه و ریل تایم خروجی یک محورو دریافت کنم ؟ سیم بندی رو انجام دادم .
لطفا راهنمایی کنید چطور میتونم آدرس ماژول دوم رو از طریق پرتکل I2C به کد اضافه کنم
سپاس
با سلام
در این خصوص بایستی دو آدرس I2C مانند ۰X68 و ۰X69 را در کدها اضافه کنید.
برای اینکار پس از انجام اتصالات میتوانید از دستور const و یا define# آدرس I2C را وارد نمایید.
سپاس
خواهش میکنم.
موفق باشید.
سلام خانم مهندس
وقت بخیر لطفا بفرمایید پاسخ به سوال چقدر زمان میبره ؟
سلام
کامنت شما پاسخ داده شده است.
صفحه را رفرش نمایید.
سلام خانم مهندس…عذر میخام امکانش هست برنامه ای که نوشتین رو برام بفرستین..
با سلام
کاربر گرامی جهت دسترسی به کدها میبایست اشتراک اسپارکر تهیه نمایید. پس از آن به آموزش ها دسترسی پیدا خواهید کرد.
تهیه اشتراک دیجی اسپارک
سلام
وقت بخیر
بنده پروژه کنترلledها با mpu6050رو بستم و جواب گرفتم.فقط یه مشکلیکه هست بعد چند ثانیه ledها هر وضعیتی داشته باشند می مانند، داخل سریال مانیتورهم بعد چند ثانیه اول مقادیرثابت می مانند و دیگر مقداری رو نشان نمی دهد.
با سلام
در این خصوص ابتدا ال ای دی ها را از مدار جدا کرده و خروجی سنسور شتاب را بررسی نمایید. نیتجه را از همین طریق اعلام کنید.
سلام میتونم با arduido uno این پروژه رو انجام بدم؟؟
با سلام
بله تفاوتی در مدل بردهای آردوینو وجود ندارد و میتوانید با آردوینو UNO اجرا کنید.
من از سایت https://daneshjookit.com/به این صفحه منتقل شدم تا راهنمایی های پایه برای کار با arduino nano یاد بگیرم.
راستش من مشکلی در مورد کد زدنش ندارم اصلا.
سایت دانشجوکیت این بورد رو با دو تا تراشه ی r3 و CH340 به فروش میرسونه. من ch340 رو خریدم و انتظار داشتم که مثل arduino nanoاصل کار کنه ولی به مشکلی برخورد کردم. یک نمونه کد خیلی ساده آپلود کردم :
void setup() {
// put your setup code here, to run once:
Serial.begin(1);
Serial.println(“start Setup()”);
Serial.println(“start Setup()”);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(“start Loop()”);
Serial.println(“end Loop()”);
}
در ابتدا با انتخاب برد arduino nano و پروسسور atmega328p دچار چند تا error message شدم و پروسسور رو به atmega328p(old bootloader) عوض کردم :
ولی بادوباره ران کردن و باز کردن serial monitor چیزی که پرینت میشود چند تا علامت سوال. اگرچه این دفعه ران شد.
با جست و جویی که کردم دیدم که این به خاطر تراشه ی بورد.
حالا درایور های که توی سایت دیجیکالا بود برای windows رو دانلود کردم اما windowsبه من اجازه ی نصبشون رو نمیده.
لطفا در قسمت نصب درایور کمک کنید.
با سلام
کاربر گرامی در ابتدا پیشنهاد میشود یک تب از نرم افزار آردوینو باز کرده و بدون هیچ برنامه ای بر روی برد آپلود کنید. و همچنین موارد را از طریق لینک زیر پیگیری کنید.
آموزش کار با برد آردوینو نانو NANO رفع مشکل آپلود برنامه