برای تشخیص جهت و شتاب نیاز به سنسور منحصر به فردی داریم. سنسورهای شتاب و ژایرو دو عملکرد مهم دارند. یکی برای تشخیص پارامترهای یک جسم در حال حرکت و دوم تشخیص حرکتهای یک جسم ثابت میباشد. انواع مختلفی از سنسورهای شتاب و ژایرو با قابلیت سنجش پارامترهای مختلف از ۳ محور تا ۹ محور وجود دارند. حتی بر اساس دقت و حساسیت هم دسته بندی میشوند. در این پست آموزش با استفاده از یک ماژول شتاب و ژایرو با تراشه 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 اتصال دهید.
کد برنامه آردوینو
#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[] = { {۳, ۱, 'u', 31, 45}, {۱۲, ۲, 'u', 16, 30}, {۱۱, ۳, 'u', 5, 15}, {۵, ۱, 'd', 5, 15}, {۶, ۲, 'd', 16, 30}, {۷, ۳, 'd', 31, 45}, {۸ , ۱, 'r', 5, 23}, {۹, ۲, 'r', 24, 45}, {۱۰, ۱, 'l', 5, 23}, {۴, ۲, 'l', 24, 45}, }; #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif MPU6050 mpu; // فرخوانی MPU6050 bool dmpReady = false; // در صورتیکه سنسور عمل کند uint8_t mpuIntStatus; // ذخیره بایت ۸ بیتی 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 هستش و نه ژایرو. بسیار پسندیده هست اگه از اسم قطعه ای اطمینان نداری لطفا تو گوگل یه سرچ کنی بد نیست. درضمن من بشما زیاد ایراد نمیگیرم ممکن هست شما هم از مثلا استاد خودتون آموخته باشید و او هم همچنین الا آخر. موفق و پایدار باشید.
سلام
از توجه شما ممنونم، لطفا اسم این موضوع را ایراد گرفتن نگذارید و آزادانه هر موضوعی که از نظر جنابعالی نیاز به اصلاح دارد را بیان بفرمایید. هدف بنده و همکارانم در دیجی اسپارک، رشد و توسعه مداوم میباشد.
pinMode(frontLed, OUTPUT);
pinMode(bottomLed, OUTPUT);
pinMode(rightLed, OUTPUT);
pinMode(leftLed, OUTPUT);
سلام و خسته نباشید خدمت خانم پوربلورچیان
میخواستم بدونم این قسمت به دلخواه باید عدد پین ها رو معرفی کنیم ؟ یا تغییری ندهیم؟
.
ارور این قسمت چیه؟ ارور شناسایی نشد if (SIMPLE_IMPLEMENTATION) {
flashLEDsSimple(x, y, z);
} else {
flashLEDsMultiple(x, y, z);
}
آیا قبل از آپلود کد و کتاب خانه باید ماژول mpu6050به برد آردینو متصل باشه یا خیر؟
با سلام
در خط های زیر پین های دیجیتال را به دلخواه میتوانید تغییر دهید.
const int frontLed = 3; // تعریف ال ای دی
const int bottomLed = 5; // تعریف ال ای دی
const int rightLed = 10; // تعریف ال ای دی
همچنین ارور دریافتی را کامل ارسال کنید.
نصب کتابخانه ارتباطی با ماژول ندارد.
سلام خانم پوربلورچیان روز خوبی داشته باشید…میخواستم در سال جدید خواهشی از شما داشته باشم ،اول تشکر میکنم بابت مطالب مفید و راهنمایی هاتون، دوم اینکه تا اینترنت ملی نشده اگر میشه لایبری های زیر خرید ماژول ها در سایت دانشجو کیت رو به روز رسانی کنید چون هیچ کدام از لایبری ها بر روی ورژن جدید نرم افزار آردینو جواب نمیده و نمایان نمیشه و سوم که با توجه به این که نرم افزار آردینو ورژن جدید اومده منو ها و….هم تغییراتی یافته و لذا اگر شما از نرم افزار قدیمی استفاده و با توجه به همان راهنمایی کنید نه تنها موجب راهنمایی نمیشه بلکه موجب سر در گمی نیز میشود…
با تشکر از شما و تیم دیجی اسپارک
با سلام
کاربر گرامی، ضمن تبریک سال جدید از پیشنهاد شما ممنونم.
بسیاری از کتابخانه ها در طی سالیان گذشته آپدیت شده است و در نرم افزار آردوینو این مورد قابل مشاهده است. در صورتیکه در دستورات تغییری ایجاد شده باشد، در متن پیام های ارور نمایش داده میشود و رفع عیب ساده است. حتما درخواست شما را پیگیری و در صورت امکان تغییرات اعمال خواهد شد.
سلام من وقتی از آردینو نانوR3 استفاده میکنم…قسمت port نمایان نمیشه….لپ تاپم میشناسه ولی توی قسمت port که Com3یا شناسایی میکنه کم رنگه
با سلام
سوالتان ارتباطی با این پست ندارد. در پست زیر مطرح کنید تا راهنمایی لازم صورت گیرد.
آموزش کار با برد آردوینو نانو NANO رفع مشکل آپلود برنامه
آموزشی خوب و کاربردی بود و خسته نباشید میگم
شاید بشه این پروژه رو کمی توسعه و داد و این ماژول شتاب سنج رو داخل یک ریموت کنترل گذاشت، بعد با چرخش ریموت در زوایای مختلف، لامپی خاص روشن بشه، مثلا وقتی که ریموت رو حول محور 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 رو بخونم و توی بافر ذخیره کنم.
با تشکر
سلام
این مورد زمانبر میباشد و در حال پیگیری هستم که نیازمند صبر و شکیبایی شما خواهد بود.
از همین طریق اطلاع رسانی خواهد شد.
سلام چطور میتونم لایبری هایی که خودم نصب کردم رو حذف کنم؟؟من از طریق درایو cرفتم به مسیر برنامه و پوشه لایبری رو هم دیدم اما داخل این پوشه لایبری های خود آردینو هست و نسخه نصبی من نبود..چندین بار نر افزار آردینو رو پاک کردم و دوباره نصب کردم اما هنوزم لایبری های نصبی داخل لیست وجود داشت…ممنون میشم اگر کامل و شفاف درباره این مسئله راهنمایی فرمایید….
با سلام
کاربر گرامی در این خصوص از محل نصب آردوینو بر روی پوشه LIBRARIES کلیک کرده و سپس تمامی کتابخانه های نصب شده را میتوانید مشاهده و حذف کنید. همچنین در مسیر نرم افزار آردوینو بخش INCLUD LIBRRAY میتوانید نام کتابخانه مورد نظر را جست و جو و سپس UNISTALL کنید.
با سلام
سوالم این بود که چطور میتونم اطلاعات این سنسور رو از طریق اینتراپت تایمر۱ بگیرم. مثلا هر ۵۰میلی ثانیه یکبار
اتصال آی۲سی خودش از طریق اینتراپت کار میکنه و اولویت پایین تری نسبت به تایمر۱ داره به همین دلیل اجازه نمیده سنسور رو از طریق اینتراپت کنترل کنم.
اینتراپت پین خود سنسور مورد استفاده من نیست چونکه من بر حسب بازه زمانی میخوام و اون برحسب بودن اطلاعات جدید بمن داده میده.
با سپاس
با سلام مجدد
متاسفانه بنده هم موردی را در این خصوص پیدا نکردم. از آنجایی که پروژه شما خاص و شرایطی متفاوت دارد، امکان شبیه سازی هم برای بنده وجود ندارد. از اینرو از دیگر کاربران که در این خصوص تجربه کافی دارند، تقاضا دارم تا در این بحث شرکت کنند.
با سلام
من دوبار سوالم رو به فارسی پرسیدم اما نه جواب گرفتم نه سوالم رو دیدم در قسمت نظرات.
حداقل میتونید بگید اطلاع ندارید تا یک پاسخ کوتاه داده باشید.
منتظر باشید در حال بررسی هستیم. اعلام به نداستن یک موضوع سادهترین راه میباشد. ولی ما در تلاش هستیم که پاسخ سوالات تمامی کاربران را تا جای امکان رفع کنیم.
سپاس
سلام خانم مهندس، مرسی ازبابت اموزش هاتون، خیلی مفید بود، میشه کدها را واسه AVRدر کدویژن یا بیسکام هم بنویسید
OUTPUT);
pinMode(bottomLed, OUTPUT);
pinMode(rightLed, OUTPUT);
pinMode(leftLed, OUTPUT);
سلام و خسته نباشید
میخواستم بدونم این قسمت به دلخواه باید عدد پین ها رو معرفی کنیم ؟ یا تغییری ندهیم؟
.
ارور این قسمت چیه؟ ارور شناسایی نشد if (SIMPLE_IMPLEMENTATION) {
flashLEDsSimple(x, y, z);
} else {
flashLEDsMultiple(x, y, z);
}
.
آیا قبل از آپلود کد و کتاب خانه باید ماژول mpu6050به برد آردینو متصل باشه یا خیر؟
با سلام
در خط های زیر پین های دیجیتال را به دلخواه میتوانید تغییر دهید.
const int frontLed = 3; // تعریف ال ای دی
const int bottomLed = 5; // تعریف ال ای دی
const int rightLed = 10; // تعریف ال ای دی
همچنین ارور دریافتی را کامل ارسال کنید.
نصب کتابخانه ارتباطی با ماژول ندارد.
سلام من به کدهای این برنامه نیاز دارم اکانتهم خریداری کردم ولی ایمیله تایید واسم نمیاد. چکارکنم؟لطفا راهنمایی کنید.
با سلام
حساب کاربری شما فعال شده است. ولی دقت کنید که جنابعالی اشتراک اسپارکر پلاس تهیه نکردهاید، از اینرو کدها نمایش داده نمیشوند.
سلام خسته نباشین من قصد دارم از این روش برای درست کردن گیمبال استفاده کنم یعنی به جای تحریک ال ای دی دو تا سروو موتور رو کنترل کنم میتونین کمکم کنین
با سلام
کتابخانه و دستورات سرو موتور را به کدها اضافه نمایید.
در این خصوص به آموزش راه اندازی سرو موتور مراجعه کرده و کدها را تعمیم دهید. بررسی و سوالات خود را از همین طریق بپرسید.
با عر ض سلام ،من میخوام یک ربات قایق که داخل حوض ۲*۲ جرکت میکنه درست کنم که به یک مختصات دلخواه تعین شده حرکت کند واگر مانعی در مسیر بود اون رو دور بزنه و باز هم به همون مقصد بره ، واسه سیستم مختصات دهی و ناوبریش میتونم از سنسور 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 رفع مشکل آپلود برنامه
if (SIMPLE_IMPLEMENTATION) {
flashLEDsSimple(x, y, z);
} else {
flashLEDsMultiple(x, y, z);
}
}سلام و خسته نباشید خدمت خانم پوربلورچیان این خط ارور میزنه ومیگه شناسایی نشد! به نظرتون مشکل از کجاست؟
آیا برای نصب کتاب خانه حتما باید ماژول MPU6050 به برد اردینو متصل باشه؟
با سلام
لطفا ارور را کامل ارسال کنید تا بررسی کنم.
آیا برای نصب کتابخانه حتما باید ماژول MPU6050 همون لحظه به برد اردینو متصل باشه؟
با سلام
خیر این مورد کاملا بی ارتباط است.
سلام وقتتون بخیر…چطور میتونم لایبری هایی که به لیست آردینو کردم رو حذف کنم…من به پوشه آردینو توی درایو Cسر زدم اما فقط لایبری های خود آردینو بود …اونایی که من نصبشون کردم ندیدم که حذف کنم…چطور میتونم ؟
سلام وقتتون بخیر…چطور میتونم لایبری هایی که به لیست آردینو کردم رو حذف کنم…من به پوشه آردینو توی درایو Cسر زدم اما فقط لایبری های خود آردینو بود …اونایی که من نصبشون کردم ندیدم که حذف کنم…چطور میتونم ؟
با سلام
در مسیری که آردوینو را نصب کردهاید بایستی وارد شوید. ارتباطی با درایو C ندارد.
معمولا مسیر نصب آردینو در درایو c هست..یه پوشه که library هم داخلش بود اما داخل این پوشه library خود آردینو بود و نسخه های نصبی من نبود!
ممنون میشم واضع تر راهنمایی کنید …
با سلام
نام کتابخانه را در نرم افزار آردوینو در بخش TOOLS, INCLUDE LIBRARIES وارد کرده و سپس UNISTALL کنید.
سلام ممنون عالی بود …فقط چطور میتونم مقدار زاویه خم شدن محور XYرو کم کنم تا حساسیتش بیشتر بشه الان تو محور Xروی ۳۲ ال ای دی روشن میشه میخوام روی ۵ال ای دی روشن بشه
با سلام
در این خصوص بایستی از کتابخانه تغییرات را بررسی و اعمال کنید.
ممنون میشم واضع تر توضیح بدین؟ آیا توی خود برنامه نمیخواد چیزی دستکاری کنم؟ از کجای کتابخانه و چطوری؟
این مورد توسط بنده تست نشده است.
با سلام خدمت اساتید و همکاران پرتلاش الخصوص سرکار خانم پوربلورچیان
سوالی داشتم در رابط با MPU6050; چگونه میتوان حرکت شتابی به سمت جهات رو مثلا تشخیص حرکت ماژول(ربات) به سمت جلو(یا هر جهتی) رو نشون داد ،به عبارت دیگه آیا میشه تداوم حرکت رو شناسایی و یا مقادیرش رو دریافت کرد؟
با سلام
در این خصوص بایستی با توجه به دستورات کتابخانه محاسبات ریاضی انجام دهید. این مورد توسط بنده تست نشده است.
Arduino: 1.8.15 (Windows 7), Board: “Arduino Nano, ATmega328P (Old Bootloader)”
In file included from C:\Users\Danial\Desktop\sketch_jun20a\sketch_jun20a.ino:2:0:
C:\Users\Danial\Documents\Arduino\libraries\MPU6050\src/MPU6050_6Axis_MotionApps20.h: In member function ‘uint8_t MPU6050::dmpGetGravity(int16_t*, const uint8_t*)’:
C:\Users\Danial\Documents\Arduino\libraries\MPU6050\src/MPU6050_6Axis_MotionApps20.h:524:65: warning: integer overflow in expression [-Woverflow]
– (int32_t)qI[2] * qI[2] + (int32_t)qI[3] * qI[3]) / (2 * 16384);
~~^~~~~~~
C:\Program Files (x86)\Arduino\libraries\I2Cdev\I2Cdev.cpp:64:14: warning: #warning Using current Arduino IDE with Wire library is functionally limiting. [-Wcpp]
#warning Using current Arduino IDE with Wire library is functionally limiting.
^~~~~~~
C:\Program Files (x86)\Arduino\libraries\I2Cdev\I2Cdev.cpp:65:14: warning: #warning Arduino IDE v1.0.1+ with I2CDEV_BUILTIN_FASTWIRE implementation is recommended. [-Wcpp]
#warning Arduino IDE v1.0.1+ with I2CDEV_BUILTIN_FASTWIRE implementation is recommended.
^~~~~~~
C:\Program Files (x86)\Arduino\libraries\I2Cdev\I2Cdev.cpp:66:14: warning: #warning This I2Cdev implementation does not support: [-Wcpp]
#warning This I2Cdev implementation does not support:
^~~~~~~
C:\Program Files (x86)\Arduino\libraries\I2Cdev\I2Cdev.cpp:67:14: warning: #warning – Timeout detection (some Wire requests block forever) [-Wcpp]
#warning – Timeout detection (some Wire requests block forever)
^~~~~~~
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::I2Cdev()’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::I2Cdev()’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeBytes(unsigned char, unsigned char, unsigned char, unsigned char*)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeByte(unsigned char, unsigned char, unsigned char)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeWords(unsigned char, unsigned char, unsigned char, unsigned int*)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeWord(unsigned char, unsigned char, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readBytes(unsigned char, unsigned char, unsigned char, unsigned char*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readByte(unsigned char, unsigned char, unsigned char*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readBit(unsigned char, unsigned char, unsigned char, unsigned char*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readBits(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeBit(unsigned char, unsigned char, unsigned char, unsigned char)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readTimeout’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeBits(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readWords(unsigned char, unsigned char, unsigned char, unsigned int*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readWord(unsigned char, unsigned char, unsigned int*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readBitW(unsigned char, unsigned char, unsigned char, unsigned int*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::readBitsW(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int*, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeBitW(unsigned char, unsigned char, unsigned char, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\MPU6050\I2Cdev.cpp.o (symbol from plugin): In function `I2Cdev::I2Cdev()’:
(.text+0x0): multiple definition of `I2Cdev::writeBitsW(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int)’
libraries\I2Cdev\I2Cdev.cpp.o (symbol from plugin):(.text+0x0): first defined here
C:\Users\Danial\Documents\Arduino\libraries\MPU6050\src/MPU6050.h:438:7: warning: type ‘struct MPU6050’ violates the C++ One Definition Rule [-Wodr]
class MPU6050 {
^
C:\Users\Danial\Documents\Arduino\libraries\MPU6050\src\MPU6050.cpp:49:1: note: code may be misoptimized unless -fno-strict-aliasing is used
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Nano.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
سلام این کد رو کامپایل میکنم این خطا برای من میاد ممنون از توجهتون
با سلام
تمامی کتابخانه ها نصب نشده است. مجدد کتابخانه های مورد نیاز را بررسی و نصب کنید.
سلام خانم مهندس وقت شما بخیر
میشه ۶ تا سنسور رو به برد مگا نصب کرد و اطلاعات این ۶ سنسور را در لحظه اطلاعاتش را در رم ذخیره کرد به طوری که اطلاعات این شش سنسور به شکل ستونی خروجی بگیریم
با سلام
بله امکان پذیر است.
Arduino: 1.8.15 (Windows 8.1), Board: “NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200”
با سلام …عذرخواهی میکنم…من تمام کتابخونه هارو نصب کردم اما زمانی که مثال های امادخmpu6050 و همچنین کدی رو که شما قرا دادین کامپایل میکنم این خطارو میده…. میشه راهنمایی کنید چیکار کنم؟
C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp: In static member function ‘static int8_t I2Cdev::readBytes(uint8_t, uint8_t, uint8_t, uint8_t*, uint16_t)’:
C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: error: no matching function for call to ‘min(uint8_t&, int)’
۲۷۶ | for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
| ^
In file included from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\algorithm:62,
from C:\Users\narges 1374\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:225,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.h:80,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:46:
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algo.h:3479:5: note: candidate: 'template constexpr _Tp std::min(std::initializer_list, _Compare)’
۳۴۷۹ | min(initializer_list __l, _Compare __comp)
| ^~~
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algo.h:3479:5: note: template argument deduction/substitution failed:
C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note: mismatched types ‘std::initializer_list’ and ‘unsigned char’
۲۷۶ | for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
| ^
In file included from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\algorithm:62,
from C:\Users\narges 1374\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:225,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.h:80,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:46:
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algo.h:3473:5: note: candidate: 'template constexpr _Tp std::min(std::initializer_list)’
۳۴۷۳ | min(initializer_list __l)
| ^~~
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algo.h:3473:5: note: template argument deduction/substitution failed:
C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note: mismatched types ‘std::initializer_list’ and ‘unsigned char’
۲۷۶ | for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
| ^
In file included from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\specfun.h:45,
from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\cmath:1927,
from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\math.h:36,
from C:\Users\narges 1374\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:34,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.h:80,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:46:
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algobase.h:278:5: note: candidate: 'template constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)’
۲۷۸ | min(const _Tp& __a, const _Tp& __b, _Compare __comp)
| ^~~
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algobase.h:278:5: note: template argument deduction/substitution failed:
C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note: deduced conflicting types for parameter ‘const _Tp’ (‘unsigned char’ and ‘int’)
۲۷۶ | for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) {
| ^
In file included from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\specfun.h:45,
from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\cmath:1927,
from c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\math.h:36,
from C:\Users\narges 1374\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:34,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.h:80,
from C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:46:
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algobase.h:230:5: note: candidate: 'template constexpr const _Tp& std::min(const _Tp&, const _Tp&)’
۲۳۰ | min(const _Tp& __a, const _Tp& __b)
| ^~~
c:\users\narges 1374\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\bits\stl_algobase.h:230:5: note: template argument deduction/substitution failed:
C:\Users\narges 1374\Documents\Arduino\libraries\I2Cdev\I2Cdev.cpp:276:75: note: deduced conflicting types for parameter ‘const _Tp’ (‘unsigned char’ and ‘int’)
۲۷۶ | for (uint8_t k = 0; k Preferences.
با سلام
تداخل در کپی کردن کدها دارید، یک بار تمامی کدها را پاک کرده و یک تب حدید باز کنید. سپس کد را کپی و انتقال دهید. مطمئن باشید که تمامی کتابخانه ها دقیقا با همان اسم نصب شده باشد.